@fudanda/admin-antd 2.20261109.1-beta.1 → 2.20261109.1-beta.2

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 (97) hide show
  1. package/dist/chunks/ApiTokensPage-w3JGRNQC.js +2 -0
  2. package/dist/chunks/ApiTokensPage-w3JGRNQC.js.map +1 -0
  3. package/dist/chunks/{App-CfQx7jWq.js → App-nh6_qOo8.js} +5 -5
  4. package/dist/chunks/{App-CfQx7jWq.js.map → App-nh6_qOo8.js.map} +1 -1
  5. package/dist/chunks/{AppModal-CVoUC2t3.js → AppModal-CEouaU03.js} +2 -2
  6. package/dist/chunks/{AppModal-CVoUC2t3.js.map → AppModal-CEouaU03.js.map} +1 -1
  7. package/dist/chunks/{ArcBaseAdmin-DQyddbFC.js → ArcBaseAdmin-CX7fQz4x.js} +2 -2
  8. package/dist/chunks/{ArcBaseAdmin-DQyddbFC.js.map → ArcBaseAdmin-CX7fQz4x.js.map} +1 -1
  9. package/dist/chunks/{DepartmentsPage-CQx53QGE.js → DepartmentsPage-BdD9VfDI.js} +2 -2
  10. package/dist/chunks/{DepartmentsPage-CQx53QGE.js.map → DepartmentsPage-BdD9VfDI.js.map} +1 -1
  11. package/dist/chunks/{DictsPage-BGnamkWk.js → DictsPage-fxBdV1-3.js} +2 -2
  12. package/dist/chunks/{DictsPage-BGnamkWk.js.map → DictsPage-fxBdV1-3.js.map} +1 -1
  13. package/dist/chunks/{EntityContextRuntime-CbzeMNXR.js → EntityContextRuntime-CMhoj6qe.js} +2 -2
  14. package/dist/chunks/{EntityContextRuntime-CbzeMNXR.js.map → EntityContextRuntime-CMhoj6qe.js.map} +1 -1
  15. package/dist/chunks/EntityContextRuntime-Dc89ZSnM.js +1 -0
  16. package/dist/chunks/{ExportButton-sMPAV2hd.js → ExportButton-DGxB2tcu.js} +2 -2
  17. package/dist/chunks/{ExportButton-sMPAV2hd.js.map → ExportButton-DGxB2tcu.js.map} +1 -1
  18. package/dist/chunks/{FileViewerPreviewPanel-Rti7pUhU.js → FileViewerPreviewPanel-BMZ7FdKV.js} +3 -3
  19. package/dist/chunks/{FileViewerPreviewPanel-Rti7pUhU.js.map → FileViewerPreviewPanel-BMZ7FdKV.js.map} +1 -1
  20. package/dist/chunks/{FilesPage-D_iYsUwl.js → FilesPage-DrgWELKy.js} +3 -3
  21. package/dist/chunks/{FilesPage-D_iYsUwl.js.map → FilesPage-DrgWELKy.js.map} +1 -1
  22. package/dist/chunks/{IdentitySecurityPage-rDYX5ksX.js → IdentitySecurityPage-BjTKvr-O.js} +2 -2
  23. package/dist/chunks/{IdentitySecurityPage-rDYX5ksX.js.map → IdentitySecurityPage-BjTKvr-O.js.map} +1 -1
  24. package/dist/chunks/{LogStatsScaffold-CMIz4z0a.js → LogStatsScaffold-DaB0JeAN.js} +2 -2
  25. package/dist/chunks/{LogStatsScaffold-CMIz4z0a.js.map → LogStatsScaffold-DaB0JeAN.js.map} +1 -1
  26. package/dist/chunks/{LoginLogsPage-Bv5pPJb2.js → LoginLogsPage-VmYC7i6q.js} +2 -2
  27. package/dist/chunks/{LoginLogsPage-Bv5pPJb2.js.map → LoginLogsPage-VmYC7i6q.js.map} +1 -1
  28. package/dist/chunks/{LoginLogsTable-DYcTx2oR.js → LoginLogsTable-CULcc_e8.js} +2 -2
  29. package/dist/chunks/{LoginLogsTable-DYcTx2oR.js.map → LoginLogsTable-CULcc_e8.js.map} +1 -1
  30. package/dist/chunks/{MarkdownPreviewPanel-lqs6AsoN.js → MarkdownPreviewPanel-CBcPc7Wv.js} +2 -2
  31. package/dist/chunks/{MarkdownPreviewPanel-lqs6AsoN.js.map → MarkdownPreviewPanel-CBcPc7Wv.js.map} +1 -1
  32. package/dist/chunks/{MasterDetailLayout-B5uqvh98.js → MasterDetailLayout-ByIBpmkZ.js} +2 -2
  33. package/dist/chunks/{MasterDetailLayout-B5uqvh98.js.map → MasterDetailLayout-ByIBpmkZ.js.map} +1 -1
  34. package/dist/chunks/{McpSettingsPage-Cdej9Evi.js → McpSettingsPage-C5V_rj2V.js} +2 -2
  35. package/dist/chunks/{McpSettingsPage-Cdej9Evi.js.map → McpSettingsPage-C5V_rj2V.js.map} +1 -1
  36. package/dist/chunks/{MemberAssignmentSheet-AKvLbbYW.js → MemberAssignmentSheet-DL0fg1Yf.js} +2 -2
  37. package/dist/chunks/{MemberAssignmentSheet-AKvLbbYW.js.map → MemberAssignmentSheet-DL0fg1Yf.js.map} +1 -1
  38. package/dist/chunks/{MenuCommandPalette-ia0pSIFg.js → MenuCommandPalette-C2PvK3Gh.js} +2 -2
  39. package/dist/chunks/{MenuCommandPalette-ia0pSIFg.js.map → MenuCommandPalette-C2PvK3Gh.js.map} +1 -1
  40. package/dist/chunks/{MenusPage-Bh55bvKH.js → MenusPage-Bytd1HlW.js} +2 -2
  41. package/dist/chunks/{MenusPage-Bh55bvKH.js.map → MenusPage-Bytd1HlW.js.map} +1 -1
  42. package/dist/chunks/{MonacoPreviewPanel-CT_sjf7Z.js → MonacoPreviewPanel-BZrNIcFZ.js} +2 -2
  43. package/dist/chunks/{MonacoPreviewPanel-CT_sjf7Z.js.map → MonacoPreviewPanel-BZrNIcFZ.js.map} +1 -1
  44. package/dist/chunks/{NavListPanel-DMIUMh7q.js → NavListPanel-zwUDIYSP.js} +2 -2
  45. package/dist/chunks/{NavListPanel-DMIUMh7q.js.map → NavListPanel-zwUDIYSP.js.map} +1 -1
  46. package/dist/chunks/{OperationLogsPage-7XVfmhxP.js → OperationLogsPage-D2BQdGNp.js} +2 -2
  47. package/dist/chunks/{OperationLogsPage-7XVfmhxP.js.map → OperationLogsPage-D2BQdGNp.js.map} +1 -1
  48. package/dist/chunks/{OperationLogsTable-gp-WZxiF.js → OperationLogsTable-DaaON4QR.js} +3 -3
  49. package/dist/chunks/{OperationLogsTable-gp-WZxiF.js.map → OperationLogsTable-DaaON4QR.js.map} +1 -1
  50. package/dist/chunks/{PDFPreviewPanel-CyfhyWav.js → PDFPreviewPanel-CMmnWBKW.js} +3 -3
  51. package/dist/chunks/{PDFPreviewPanel-CyfhyWav.js.map → PDFPreviewPanel-CMmnWBKW.js.map} +1 -1
  52. package/dist/chunks/{PositionsPage-Bwua1vNV.js → PositionsPage-CBZITssT.js} +2 -2
  53. package/dist/chunks/{PositionsPage-Bwua1vNV.js.map → PositionsPage-CBZITssT.js.map} +1 -1
  54. package/dist/chunks/{PreferencesSheetBody-C80D3dOM.js → PreferencesSheetBody-B0poTPEA.js} +2 -2
  55. package/dist/chunks/{PreferencesSheetBody-C80D3dOM.js.map → PreferencesSheetBody-B0poTPEA.js.map} +1 -1
  56. package/dist/chunks/{ProfilePage-DeTw-59a.js → ProfilePage-DLhacdWt.js} +2 -2
  57. package/dist/chunks/{ProfilePage-DeTw-59a.js.map → ProfilePage-DLhacdWt.js.map} +1 -1
  58. package/dist/chunks/{ProjectInfoPage-Bqn3gfXa.js → ProjectInfoPage-CJpGxpu5.js} +2 -2
  59. package/dist/chunks/{ProjectInfoPage-Bqn3gfXa.js.map → ProjectInfoPage-CJpGxpu5.js.map} +1 -1
  60. package/dist/chunks/{RelationPanel-Bio-ig-l.js → RelationPanel-BsbfEDo2.js} +2 -2
  61. package/dist/chunks/{RelationPanel-Bio-ig-l.js.map → RelationPanel-BsbfEDo2.js.map} +1 -1
  62. package/dist/chunks/{RolesPage-fwUSs2HR.js → RolesPage-46dzdiah.js} +2 -2
  63. package/dist/chunks/{RolesPage-fwUSs2HR.js.map → RolesPage-46dzdiah.js.map} +1 -1
  64. package/dist/chunks/{SessionConflictModal-Dw4opoNP.js → SessionConflictModal-Bm38eExL.js} +2 -2
  65. package/dist/chunks/{SessionConflictModal-Dw4opoNP.js.map → SessionConflictModal-Bm38eExL.js.map} +1 -1
  66. package/dist/chunks/SettingModuleDetail-BjxUJeH5.js +17 -0
  67. package/dist/chunks/SettingModuleDetail-BjxUJeH5.js.map +1 -0
  68. package/dist/chunks/{SettingsPage-Cy5-q-P6.js → SettingsPage-C32Vuizm.js} +2 -2
  69. package/dist/chunks/{SettingsPage-Cy5-q-P6.js.map → SettingsPage-C32Vuizm.js.map} +1 -1
  70. package/dist/chunks/{StatCard-BROG4NSp.js → StatCard-CRPfkSBY.js} +2 -2
  71. package/dist/chunks/{StatCard-BROG4NSp.js.map → StatCard-CRPfkSBY.js.map} +1 -1
  72. package/dist/chunks/{UserGroupsPage-CsTBkUPy.js → UserGroupsPage-08G5MdGm.js} +2 -2
  73. package/dist/chunks/{UserGroupsPage-CsTBkUPy.js.map → UserGroupsPage-08G5MdGm.js.map} +1 -1
  74. package/dist/chunks/{UserLogsPanels-3u8Z93YU.js → UserLogsPanels-nbIrMym9.js} +2 -2
  75. package/dist/chunks/{UserLogsPanels-3u8Z93YU.js.map → UserLogsPanels-nbIrMym9.js.map} +1 -1
  76. package/dist/chunks/{UserTransferSelect-ChLj4EkS.js → UserTransferSelect-C8betaWG.js} +2 -2
  77. package/dist/chunks/{UserTransferSelect-ChLj4EkS.js.map → UserTransferSelect-C8betaWG.js.map} +1 -1
  78. package/dist/chunks/{UsersPage-CfNnQJi4.js → UsersPage-BjTiNEqF.js} +2 -2
  79. package/dist/chunks/{UsersPage-CfNnQJi4.js.map → UsersPage-BjTiNEqF.js.map} +1 -1
  80. package/dist/chunks/{browser-BKLM0ThC-D0TgzKTC.js → browser-BKLM0ThC-Cp7Gi4-F.js} +1 -1
  81. package/dist/chunks/{code-BkkeN2fd.js → code-LswxAr98.js} +1 -1
  82. package/dist/chunks/{direct-engine-m32m22nx.js → direct-engine-Dv_6v4sx.js} +1 -1
  83. package/dist/chunks/{html-BGNWR_Bp.js → html-BokjxlLb.js} +1 -1
  84. package/dist/chunks/{line-CsTeuEcK.js → line-Bqh6atHH.js} +1 -1
  85. package/dist/chunks/{lrc-D6gjnGZ5.js → lrc-T5e1svZG.js} +1 -1
  86. package/dist/chunks/{markdown-BglUe9j8.js → markdown-BpWokN1s.js} +1 -1
  87. package/dist/chunks/{patch-C97Yl3jr.js → patch-BYVX5C9G.js} +1 -1
  88. package/dist/chunks/{worker-engine-B7_3qQVS.js → worker-engine-CtUAeI4G.js} +1 -1
  89. package/dist/index.js +1 -1
  90. package/dist/{src-DAkFn9SG.js → src-D6UlLiVN.js} +2 -2
  91. package/dist/{src-DAkFn9SG.js.map → src-D6UlLiVN.js.map} +1 -1
  92. package/package.json +9 -9
  93. package/dist/chunks/ApiTokensPage-DiRMgViD.js +0 -2
  94. package/dist/chunks/ApiTokensPage-DiRMgViD.js.map +0 -1
  95. package/dist/chunks/EntityContextRuntime-C9q95WDf.js +0 -1
  96. package/dist/chunks/SettingModuleDetail-I9CSJ-fh.js +0 -17
  97. package/dist/chunks/SettingModuleDetail-I9CSJ-fh.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-Bruge11p.js";import{n,t as r}from"./preload-helper-mKj9XlrD.js";import{$ as i,C as a,E as o,I as s,It as c,M as l,O as u,Q as d,R as f,Rt as p,St as m,T as h,Tt as g,Ut as _,Vt as v,Wt as y,Z as ee,_ as b,b as x,bt as S,c as C,h as w,ht as te,it as ne,j as T,l as E,m as D,mt as re,n as ie,nt as ae,p as oe,q as se,r as ce,rt as le,st as O,w as k,wt as ue,xt as A,y as j}from"./clipboard-dpqHdCyy.js";import{i as M,n as de,o as N,r as fe,s as P}from"./feedback-B1UL2ETz.js";import{n as pe,t as me}from"./MasterDetailLayout-B5uqvh98.js";import{r as he,s as ge,t as _e}from"./toolbar-controls-CrM8hKZg.js";import{Ai as ve,At as ye,Bt as be,C as F,Ct as I,D as xe,Dt as Se,E as Ce,Et as we,Fr as L,Ft as Te,I as Ee,It as De,L as Oe,Lt as ke,Mt as Ae,Nt as je,Ot as Me,Pr as Ne,Pt as Pe,S as Fe,St as Ie,T as Le,Tt as Re,Vt as ze,_ as Be,_i as Ve,b as He,bt as Ue,c as We,cr as Ge,gi as Ke,i as qe,ji as Je,jt as Ye,kt as Xe,m as Ze,n as Qe,o as $e,oi as et,r as tt,si as nt,sr as rt,t as it,w as at,wt as ot,x as st,xt as ct,yt as lt}from"./StatCard-BROG4NSp.js";import{i as ut,n as dt,r as ft,t as pt}from"./chevron-right-B9ihyQx-.js";import{n as mt,t as ht}from"./circle-check-7VdHEHqi.js";import{n as gt,t as _t}from"./circle-x-Dwu41gys.js";import{n as vt,t as yt}from"./list-wgUaW69x.js";import{n as bt,t as xt}from"./plus-C_Qg8uc3.js";import{n as St,t as Ct}from"./useStatusToggle-D7g3Ew35.js";import{n as wt,t as Tt}from"./ResponsiveTableActions-CnTxLUos.js";import{i as Et,t as Dt}from"./deleteAction-CNNyRUSw.js";import{n as Ot,t as kt}from"./useCrudOperationColumn-CPAzNGXp.js";import{n as At}from"./listTableProps-BAghXGb4.js";import{n as jt,t as Mt}from"./useListPage-BPw-KZCv.js";import{n as Nt,t as Pt}from"./DateTimeText-DldSUPjX.js";import{i as Ft,r as It,s as R,t as z}from"./table-columns-CvT6OHd2.js";import{a as Lt,i as Rt,n as zt,o as Bt,r as Vt}from"./EditFormModal-DVQksS9R.js";import{n as Ht,t as Ut}from"./ConfigurableTable-8sYmeul2.js";import{O as Wt,_ as Gt,c as Kt,g as qt,k as Jt,s as Yt}from"./App-CfQx7jWq.js";import{n as Xt,t as Zt}from"./FileTypeIcon-Db__-4Tw.js";import{n as Qt,t as B}from"./AppModal-CVoUC2t3.js";import{n as $t,t as en}from"./PasswordInput-D1X5p0WR.js";import{n as tn,r as nn}from"./NavListPanel-DMIUMh7q.js";import{i as rn,n as an,r as on,t as sn}from"./useSectionSelection-DBggfIoz.js";import{n as cn,t as ln}from"./ExportButton-sMPAV2hd.js";import{Hn as un}from"./chart-data-DI8rr6W3.js";import{n as dn,t as fn}from"./line-CsTeuEcK.js";import{Suspense as pn,cloneElement as mn,lazy as V,useCallback as hn,useEffect as H,useMemo as U,useRef as gn,useState as W}from"react";import{Fragment as G,jsx as K,jsxs as q}from"react/jsx-runtime";import{useQuery as _n,useQueryClient as vn}from"@tanstack/react-query";import{usePreferences as yn}from"@fudanda/admin-antd/core/hooks/usePreferences";import{abortSubmit as bn}from"@fudanda/admin-antd/core/lib/abort-submit";import{escapeRegExp as xn,formatBytes as J}from"@fudanda/client/core";import{goTransport as Sn}from"@fudanda/admin-antd/core/lib/go-transport";import{fileContract as Cn,fileStorageConfigContract as wn}from"@fudanda/admin-antd/core/lib/native-operations";import{contractKey as Tn}from"@fudanda/admin-antd/core/lib/contract-query";import{usePermission as En}from"@fudanda/admin-antd/core/hooks/usePermission";import{useFilterQuery as Dn}from"@fudanda/admin-antd/core/hooks/useFilterQuery";import{useListSearch as On}from"@fudanda/admin-antd/core/hooks/useListSearch";import{formatDateTime as kn,formatDateTimeRangeValuesForApi as An}from"@fudanda/admin-antd/core/utils/date";import{usePagination as jn}from"@fudanda/admin-antd/core/hooks/usePagination";import{IS_GO_FOUNDATION as Mn}from"@fudanda/admin-antd/core/lib/foundation-mode";import{downloadBlob as Nn}from"@fudanda/admin-antd/core/utils/download";import{filesContent as Pn,filesPrivateContent as Fn}from"@fudanda/client/api/file_content";import{config as In}from"@fudanda/admin-antd/core/config";import{resolveFileMimeType as Ln,resolveFileMimeType as Rn}from"@fudanda/admin-antd/core/utils/file-mime";import{createPortal as zn}from"react-dom";import{FILE_OBJECT_ACL_LABELS as Bn,FILE_OBJECT_ACL_SUPPORT as Vn,FILE_STORAGE_PROVIDER_LABELS as Hn,FILE_STORAGE_PROVIDER_OPTIONS as Un,FILE_TYPE_FILTER_OPTIONS as Wn,FILE_URL_STRATEGY_LABELS as Gn,FILE_URL_STRATEGY_OPTIONS as Kn,PRESIGNED_EXPIRY_DEFAULT_SECONDS as qn,PRESIGNED_EXPIRY_MAX_SECONDS as Jn,PRESIGNED_EXPIRY_MIN_SECONDS as Yn}from"@fudanda/client/platform";import{generateWatermarkTile as Xn}from"@fudanda/admin-antd/core/components/watermark-tile";import{createDisplayableImageUrl as Zn}from"@fudanda/admin-antd/core/utils/image-decode";import{fileKeys as Qn,invalidateAfterFilesAdded as $n,useChunkUploadThreshold as er,useDeleteFiles as tr,useFileDetail as nr,useFileList as rr,useFileStats as ir,useUploadFile as ar}from"@fudanda/admin-antd/core/hooks/queries/files";import{useDefaultFileStorageConfig as or,useDeleteFileStorageConfigs as sr,useFileStorageConfigDetail as cr,useFileStorageConfigList as lr,useSaveFileStorageConfig as ur,useSetDefaultFileStorageConfig as dr,useStorageBrowse as fr,useTestFileStorageConfig as pr}from"@fudanda/admin-antd/core/hooks/queries/file-storage-configs";import{filesBatchDownload as mr,filesList as hr}from"@fudanda/client/api/files";import{CHUNKED_UPLOAD_CANCELLED as gr,chunkedUpload as _r}from"@fudanda/admin-antd/core/utils/chunked-upload";var vr,yr;function br(){return(br=e((()=>{
1
+ import{n as e,r as t}from"./rolldown-runtime-Bruge11p.js";import{n,t as r}from"./preload-helper-mKj9XlrD.js";import{$ as i,C as a,E as o,I as s,It as c,M as l,O as u,Q as d,R as f,Rt as p,St as m,T as h,Tt as g,Ut as _,Vt as v,Wt as y,Z as ee,_ as b,b as x,bt as S,c as C,h as w,ht as te,it as ne,j as T,l as E,m as D,mt as re,n as ie,nt as ae,p as oe,q as se,r as ce,rt as le,st as O,w as k,wt as ue,xt as A,y as j}from"./clipboard-dpqHdCyy.js";import{i as M,n as de,o as N,r as fe,s as P}from"./feedback-B1UL2ETz.js";import{n as pe,t as me}from"./MasterDetailLayout-ByIBpmkZ.js";import{r as he,s as ge,t as _e}from"./toolbar-controls-CrM8hKZg.js";import{Ai as ve,At as ye,Bt as be,C as F,Ct as I,D as xe,Dt as Se,E as Ce,Et as we,Fr as L,Ft as Te,I as Ee,It as De,L as Oe,Lt as ke,Mt as Ae,Nt as je,Ot as Me,Pr as Ne,Pt as Pe,S as Fe,St as Ie,T as Le,Tt as Re,Vt as ze,_ as Be,_i as Ve,b as He,bt as Ue,c as We,cr as Ge,gi as Ke,i as qe,ji as Je,jt as Ye,kt as Xe,m as Ze,n as Qe,o as $e,oi as et,r as tt,si as nt,sr as rt,t as it,w as at,wt as ot,x as st,xt as ct,yt as lt}from"./StatCard-CRPfkSBY.js";import{i as ut,n as dt,r as ft,t as pt}from"./chevron-right-B9ihyQx-.js";import{n as mt,t as ht}from"./circle-check-7VdHEHqi.js";import{n as gt,t as _t}from"./circle-x-Dwu41gys.js";import{n as vt,t as yt}from"./list-wgUaW69x.js";import{n as bt,t as xt}from"./plus-C_Qg8uc3.js";import{n as St,t as Ct}from"./useStatusToggle-D7g3Ew35.js";import{n as wt,t as Tt}from"./ResponsiveTableActions-CnTxLUos.js";import{i as Et,t as Dt}from"./deleteAction-CNNyRUSw.js";import{n as Ot,t as kt}from"./useCrudOperationColumn-CPAzNGXp.js";import{n as At}from"./listTableProps-BAghXGb4.js";import{n as jt,t as Mt}from"./useListPage-BPw-KZCv.js";import{n as Nt,t as Pt}from"./DateTimeText-DldSUPjX.js";import{i as Ft,r as It,s as R,t as z}from"./table-columns-CvT6OHd2.js";import{a as Lt,i as Rt,n as zt,o as Bt,r as Vt}from"./EditFormModal-DVQksS9R.js";import{n as Ht,t as Ut}from"./ConfigurableTable-8sYmeul2.js";import{O as Wt,_ as Gt,c as Kt,g as qt,k as Jt,s as Yt}from"./App-nh6_qOo8.js";import{n as Xt,t as Zt}from"./FileTypeIcon-Db__-4Tw.js";import{n as Qt,t as B}from"./AppModal-CEouaU03.js";import{n as $t,t as en}from"./PasswordInput-D1X5p0WR.js";import{n as tn,r as nn}from"./NavListPanel-zwUDIYSP.js";import{i as rn,n as an,r as on,t as sn}from"./useSectionSelection-DBggfIoz.js";import{n as cn,t as ln}from"./ExportButton-DGxB2tcu.js";import{Hn as un}from"./chart-data-DI8rr6W3.js";import{n as dn,t as fn}from"./line-Bqh6atHH.js";import{Suspense as pn,cloneElement as mn,lazy as V,useCallback as hn,useEffect as H,useMemo as U,useRef as gn,useState as W}from"react";import{Fragment as G,jsx as K,jsxs as q}from"react/jsx-runtime";import{useQuery as _n,useQueryClient as vn}from"@tanstack/react-query";import{usePreferences as yn}from"@fudanda/admin-antd/core/hooks/usePreferences";import{abortSubmit as bn}from"@fudanda/admin-antd/core/lib/abort-submit";import{escapeRegExp as xn,formatBytes as J}from"@fudanda/client/core";import{goTransport as Sn}from"@fudanda/admin-antd/core/lib/go-transport";import{fileContract as Cn,fileStorageConfigContract as wn}from"@fudanda/admin-antd/core/lib/native-operations";import{contractKey as Tn}from"@fudanda/admin-antd/core/lib/contract-query";import{usePermission as En}from"@fudanda/admin-antd/core/hooks/usePermission";import{useFilterQuery as Dn}from"@fudanda/admin-antd/core/hooks/useFilterQuery";import{useListSearch as On}from"@fudanda/admin-antd/core/hooks/useListSearch";import{formatDateTime as kn,formatDateTimeRangeValuesForApi as An}from"@fudanda/admin-antd/core/utils/date";import{usePagination as jn}from"@fudanda/admin-antd/core/hooks/usePagination";import{IS_GO_FOUNDATION as Mn}from"@fudanda/admin-antd/core/lib/foundation-mode";import{downloadBlob as Nn}from"@fudanda/admin-antd/core/utils/download";import{filesContent as Pn,filesPrivateContent as Fn}from"@fudanda/client/api/file_content";import{config as In}from"@fudanda/admin-antd/core/config";import{resolveFileMimeType as Ln,resolveFileMimeType as Rn}from"@fudanda/admin-antd/core/utils/file-mime";import{createPortal as zn}from"react-dom";import{FILE_OBJECT_ACL_LABELS as Bn,FILE_OBJECT_ACL_SUPPORT as Vn,FILE_STORAGE_PROVIDER_LABELS as Hn,FILE_STORAGE_PROVIDER_OPTIONS as Un,FILE_TYPE_FILTER_OPTIONS as Wn,FILE_URL_STRATEGY_LABELS as Gn,FILE_URL_STRATEGY_OPTIONS as Kn,PRESIGNED_EXPIRY_DEFAULT_SECONDS as qn,PRESIGNED_EXPIRY_MAX_SECONDS as Jn,PRESIGNED_EXPIRY_MIN_SECONDS as Yn}from"@fudanda/client/platform";import{generateWatermarkTile as Xn}from"@fudanda/admin-antd/core/components/watermark-tile";import{createDisplayableImageUrl as Zn}from"@fudanda/admin-antd/core/utils/image-decode";import{fileKeys as Qn,invalidateAfterFilesAdded as $n,useChunkUploadThreshold as er,useDeleteFiles as tr,useFileDetail as nr,useFileList as rr,useFileStats as ir,useUploadFile as ar}from"@fudanda/admin-antd/core/hooks/queries/files";import{useDefaultFileStorageConfig as or,useDeleteFileStorageConfigs as sr,useFileStorageConfigDetail as cr,useFileStorageConfigList as lr,useSaveFileStorageConfig as ur,useSetDefaultFileStorageConfig as dr,useStorageBrowse as fr,useTestFileStorageConfig as pr}from"@fudanda/admin-antd/core/hooks/queries/file-storage-configs";import{filesBatchDownload as mr,filesList as hr}from"@fudanda/client/api/files";import{CHUNKED_UPLOAD_CANCELLED as gr,chunkedUpload as _r}from"@fudanda/admin-antd/core/utils/chunked-upload";var vr,yr;function br(){return(br=e((()=>{
2
2
  /**
3
3
  * @license lucide-react v1.67.0 - ISC
4
4
  *
@@ -61,5 +61,5 @@ A(),zr={name:`hard-drive-upload`,size:24,node:[[`path`,{d:`m16 6-4-4-4 4`,key:`1
61
61
  * This source code is licensed under the ISC license.
62
62
  * See the LICENSE file in the root directory of this source tree.
63
63
  */
64
- A(),Hr={name:`video`,size:24,node:[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]},Hr.node,Ur=S(Hr)})))()}function Gr(e){let t=e.toLowerCase();if(qr[t])return qr[t];let n=t.lastIndexOf(`.`),r=n>=0?t.slice(n+1):``;return Kr[r]??Jr}var Kr,qr,Jr;function Yr(){return(Yr=e((()=>{Kr={ts:`vscode-icons:file-type-typescript`,tsx:`vscode-icons:file-type-typescript`,js:`vscode-icons:file-type-js-official`,jsx:`vscode-icons:file-type-js-official`,mjs:`vscode-icons:file-type-js-official`,cjs:`vscode-icons:file-type-js-official`,json:`vscode-icons:file-type-json`,jsonc:`vscode-icons:file-type-json`,json5:`vscode-icons:file-type-json`,md:`vscode-icons:file-type-markdown`,mdx:`vscode-icons:file-type-markdown`,markdown:`vscode-icons:file-type-markdown`,html:`vscode-icons:file-type-html`,htm:`vscode-icons:file-type-html`,xhtml:`vscode-icons:file-type-html`,css:`vscode-icons:file-type-css`,scss:`vscode-icons:file-type-scss`,sass:`vscode-icons:file-type-sass`,less:`vscode-icons:file-type-less`,styl:`vscode-icons:file-type-stylus`,stylus:`vscode-icons:file-type-stylus`,py:`vscode-icons:file-type-python`,pyi:`vscode-icons:file-type-python`,go:`vscode-icons:file-type-go`,rs:`vscode-icons:file-type-rust`,java:`vscode-icons:file-type-java`,c:`vscode-icons:file-type-c`,h:`vscode-icons:file-type-c`,cpp:`vscode-icons:file-type-cpp`,cc:`vscode-icons:file-type-cpp`,cxx:`vscode-icons:file-type-cpp`,hpp:`vscode-icons:file-type-cpp`,hxx:`vscode-icons:file-type-cpp`,cs:`vscode-icons:file-type-csharp`,php:`vscode-icons:file-type-php`,rb:`vscode-icons:file-type-ruby`,swift:`vscode-icons:file-type-swift`,kt:`vscode-icons:file-type-kotlin`,kts:`vscode-icons:file-type-kotlin`,dart:`vscode-icons:file-type-dartlang`,scala:`vscode-icons:file-type-scala`,lua:`vscode-icons:file-type-lua`,r:`vscode-icons:file-type-r`,yml:`vscode-icons:file-type-yaml`,yaml:`vscode-icons:file-type-yaml`,xml:`vscode-icons:file-type-xml`,xsl:`vscode-icons:file-type-xml`,xslt:`vscode-icons:file-type-xml`,sql:`vscode-icons:file-type-sql`,sh:`vscode-icons:file-type-shell`,bash:`vscode-icons:file-type-shell`,zsh:`vscode-icons:file-type-shell`,fish:`vscode-icons:file-type-shell`,ps1:`vscode-icons:file-type-powershell`,psm1:`vscode-icons:file-type-powershell`,bat:`vscode-icons:file-type-bat`,cmd:`vscode-icons:file-type-bat`,env:`vscode-icons:file-type-dotenv`,ini:`vscode-icons:file-type-config`,conf:`vscode-icons:file-type-config`,cfg:`vscode-icons:file-type-config`,toml:`vscode-icons:file-type-toml`,txt:`vscode-icons:file-type-text`,log:`vscode-icons:file-type-log`,lock:`vscode-icons:default-file`,png:`vscode-icons:file-type-image`,jpg:`vscode-icons:file-type-image`,jpeg:`vscode-icons:file-type-image`,gif:`vscode-icons:file-type-image`,bmp:`vscode-icons:file-type-image`,webp:`vscode-icons:file-type-image`,ico:`vscode-icons:file-type-image`,tiff:`vscode-icons:file-type-image`,svg:`vscode-icons:file-type-svg`,mp4:`vscode-icons:file-type-video`,mov:`vscode-icons:file-type-video`,avi:`vscode-icons:file-type-video`,mkv:`vscode-icons:file-type-video`,webm:`vscode-icons:file-type-video`,mp3:`vscode-icons:file-type-audio`,wav:`vscode-icons:file-type-audio`,ogg:`vscode-icons:file-type-audio`,flac:`vscode-icons:file-type-audio`,zip:`vscode-icons:file-type-zip`,tar:`vscode-icons:file-type-zip`,gz:`vscode-icons:file-type-zip`,rar:`vscode-icons:file-type-zip`,"7z":`vscode-icons:file-type-zip`,pdf:`vscode-icons:file-type-pdf2`,vue:`vscode-icons:file-type-vue`,svelte:`vscode-icons:file-type-svelte`,graphql:`vscode-icons:file-type-graphql`,gql:`vscode-icons:file-type-graphql`,prisma:`vscode-icons:file-type-prisma`,proto:`vscode-icons:file-type-protobuf`,wasm:`vscode-icons:file-type-wasm`,pem:`vscode-icons:file-type-cert`,crt:`vscode-icons:file-type-cert`,cer:`vscode-icons:file-type-cert`,key:`vscode-icons:file-type-key`,exe:`vscode-icons:file-type-binary`,dll:`vscode-icons:file-type-binary`,so:`vscode-icons:file-type-binary`,dylib:`vscode-icons:file-type-binary`,woff:`vscode-icons:file-type-font`,woff2:`vscode-icons:file-type-font`,ttf:`vscode-icons:file-type-font`,eot:`vscode-icons:file-type-font`,otf:`vscode-icons:file-type-font`,ipynb:`vscode-icons:file-type-jupyter`,db:`vscode-icons:file-type-db`,sqlite:`vscode-icons:file-type-db`,sqlite3:`vscode-icons:file-type-db`,doc:`vscode-icons:file-type-word`,docx:`vscode-icons:file-type-word`,xls:`vscode-icons:file-type-excel`,xlsx:`vscode-icons:file-type-excel`,csv:`vscode-icons:file-type-excel2`,tsv:`vscode-icons:file-type-excel2`,ppt:`vscode-icons:file-type-powerpoint`,pptx:`vscode-icons:file-type-powerpoint`,erb:`vscode-icons:file-type-erb`,haml:`vscode-icons:file-type-haml`,slim:`vscode-icons:file-type-slim`,jinja:`vscode-icons:file-type-jinja`,j2:`vscode-icons:file-type-jinja`,twig:`vscode-icons:file-type-twig`,astro:`vscode-icons:file-type-astro`,ex:`vscode-icons:file-type-elixir`,exs:`vscode-icons:file-type-elixir`,hs:`vscode-icons:file-type-haskell`,lhs:`vscode-icons:file-type-haskell`,erl:`vscode-icons:file-type-erlang`,hrl:`vscode-icons:file-type-erlang`,clj:`vscode-icons:file-type-clojure`,cljs:`vscode-icons:file-type-clojure`,cljc:`vscode-icons:file-type-clojure`,edn:`vscode-icons:file-type-clojure`,fs:`vscode-icons:file-type-fsharp`,fsi:`vscode-icons:file-type-fsharp`,fsx:`vscode-icons:file-type-fsharp`,ml:`vscode-icons:file-type-ocaml`,mli:`vscode-icons:file-type-ocaml`,nim:`vscode-icons:file-type-nim`,zig:`vscode-icons:file-type-zig`,cr:`vscode-icons:file-type-crystal`,d:`vscode-icons:file-type-dlang`,coffee:`vscode-icons:file-type-coffeescript`,tf:`vscode-icons:file-type-terraform`,tfvars:`vscode-icons:file-type-terraform`,hcl:`vscode-icons:file-type-terraform`,nix:`vscode-icons:file-type-nix`,jar:`vscode-icons:file-type-java`,class:`vscode-icons:file-type-java`},qr={dockerfile:`vscode-icons:file-type-docker`,"docker-compose.yml":`vscode-icons:file-type-docker`,"docker-compose.yaml":`vscode-icons:file-type-docker`,"docker-compose.override.yml":`vscode-icons:file-type-docker`,makefile:`vscode-icons:file-type-makefile`,".gitignore":`vscode-icons:file-type-git`,".gitattributes":`vscode-icons:file-type-git`,".gitmodules":`vscode-icons:file-type-git`,".env":`vscode-icons:file-type-dotenv`,".env.local":`vscode-icons:file-type-dotenv`,".env.example":`vscode-icons:file-type-dotenv`,".env.development":`vscode-icons:file-type-dotenv`,".env.production":`vscode-icons:file-type-dotenv`,".env.test":`vscode-icons:file-type-dotenv`,"package.json":`vscode-icons:file-type-npm`,"package-lock.json":`vscode-icons:file-type-npm`,"yarn.lock":`vscode-icons:file-type-yarn`,".yarnrc":`vscode-icons:file-type-yarn`,".yarnrc.yml":`vscode-icons:file-type-yarn`,"pnpm-lock.yaml":`vscode-icons:file-type-pnpm`,".pnpmfile.cjs":`vscode-icons:file-type-pnpm`,"bun.lockb":`vscode-icons:file-type-bun`,"bunfig.toml":`vscode-icons:file-type-bun`,"tsconfig.json":`vscode-icons:file-type-tsconfig`,"tsconfig.node.json":`vscode-icons:file-type-tsconfig`,"tsconfig.base.json":`vscode-icons:file-type-tsconfig`,"jsconfig.json":`vscode-icons:file-type-jsconfig`,"vite.config.ts":`vscode-icons:file-type-vite`,"vite.config.js":`vscode-icons:file-type-vite`,"vite.config.mts":`vscode-icons:file-type-vite`,"vite.config.mjs":`vscode-icons:file-type-vite`,"vitest.config.ts":`vscode-icons:file-type-vitest`,"vitest.config.js":`vscode-icons:file-type-vitest`,"webpack.config.js":`vscode-icons:file-type-webpack`,"webpack.config.ts":`vscode-icons:file-type-webpack`,"rollup.config.js":`vscode-icons:file-type-rollup`,"rollup.config.ts":`vscode-icons:file-type-rollup`,"eslint.config.js":`vscode-icons:file-type-eslint`,"eslint.config.ts":`vscode-icons:file-type-eslint`,"eslint.config.mjs":`vscode-icons:file-type-eslint`,".eslintrc":`vscode-icons:file-type-eslint`,".eslintrc.js":`vscode-icons:file-type-eslint`,".eslintrc.json":`vscode-icons:file-type-eslint`,".eslintrc.yml":`vscode-icons:file-type-eslint`,".eslintignore":`vscode-icons:file-type-eslint`,".prettierrc":`vscode-icons:file-type-prettier`,".prettierrc.js":`vscode-icons:file-type-prettier`,".prettierrc.json":`vscode-icons:file-type-prettier`,".prettierrc.yml":`vscode-icons:file-type-prettier`,".prettierignore":`vscode-icons:file-type-prettier`,"readme.md":`vscode-icons:file-type-markdown`,readme:`vscode-icons:file-type-markdown`,license:`vscode-icons:file-type-license`,"license.md":`vscode-icons:file-type-license`,licence:`vscode-icons:file-type-license`,"changelog.md":`vscode-icons:file-type-log`,changelog:`vscode-icons:file-type-log`,".editorconfig":`vscode-icons:file-type-editorconfig`,".nvmrc":`vscode-icons:file-type-node`,".node-version":`vscode-icons:file-type-node`,"jest.config.js":`vscode-icons:file-type-jest`,"jest.config.ts":`vscode-icons:file-type-jest`,"babel.config.js":`vscode-icons:file-type-babel`,"babel.config.json":`vscode-icons:file-type-babel`,".babelrc":`vscode-icons:file-type-babel`,"tailwind.config.js":`vscode-icons:file-type-tailwind`,"tailwind.config.ts":`vscode-icons:file-type-tailwind`,"postcss.config.js":`vscode-icons:file-type-postcss`,"next.config.js":`vscode-icons:file-type-next`,"next.config.ts":`vscode-icons:file-type-next`,"nuxt.config.ts":`vscode-icons:file-type-nuxt`,"nuxt.config.js":`vscode-icons:file-type-nuxt`,"astro.config.mjs":`vscode-icons:file-type-astro`,"drizzle.config.ts":`vscode-icons:file-type-drizzle-orm`,"drizzle.config.js":`vscode-icons:file-type-drizzle-orm`,"requirements.txt":`vscode-icons:file-type-python`,"requirements-dev.txt":`vscode-icons:file-type-python`,"setup.py":`vscode-icons:file-type-python`,"setup.cfg":`vscode-icons:file-type-python`,"pyproject.toml":`vscode-icons:file-type-python`,pipfile:`vscode-icons:file-type-python`,"pipfile.lock":`vscode-icons:file-type-python`,"tox.ini":`vscode-icons:file-type-python`,".python-version":`vscode-icons:file-type-python`,"conda.yml":`vscode-icons:file-type-python`,"environment.yml":`vscode-icons:file-type-python`,"cargo.toml":`vscode-icons:file-type-rust`,"cargo.lock":`vscode-icons:file-type-rust`,"rust-toolchain":`vscode-icons:file-type-rust`,"rust-toolchain.toml":`vscode-icons:file-type-rust`,"go.mod":`vscode-icons:file-type-go`,"go.sum":`vscode-icons:file-type-go`,"go.work":`vscode-icons:file-type-go`,"pom.xml":`vscode-icons:file-type-maven`,"build.gradle":`vscode-icons:file-type-gradle`,"build.gradle.kts":`vscode-icons:file-type-gradle`,"settings.gradle":`vscode-icons:file-type-gradle`,"settings.gradle.kts":`vscode-icons:file-type-gradle`,"gradle.properties":`vscode-icons:file-type-gradle`,gradlew:`vscode-icons:file-type-gradle`,gemfile:`vscode-icons:file-type-ruby`,"gemfile.lock":`vscode-icons:file-type-ruby`,rakefile:`vscode-icons:file-type-ruby`,".ruby-version":`vscode-icons:file-type-ruby`,"composer.json":`vscode-icons:file-type-composer`,"composer.lock":`vscode-icons:file-type-composer`,".htaccess":`vscode-icons:file-type-apache`,".npmrc":`vscode-icons:file-type-npm`,".npmignore":`vscode-icons:file-type-npm`,"commitlint.config.js":`vscode-icons:file-type-commitlint`,"commitlint.config.ts":`vscode-icons:file-type-commitlint`,"commitlint.config.cjs":`vscode-icons:file-type-commitlint`,".commitlintrc":`vscode-icons:file-type-commitlint`,".commitlintrc.json":`vscode-icons:file-type-commitlint`,".czrc":`vscode-icons:file-type-commitlint`,".cz.json":`vscode-icons:file-type-commitlint`,".stylelintrc":`vscode-icons:file-type-stylelint`,".stylelintrc.json":`vscode-icons:file-type-stylelint`,".stylelintrc.yml":`vscode-icons:file-type-stylelint`,".stylelintignore":`vscode-icons:file-type-stylelint`,"stylelint.config.js":`vscode-icons:file-type-stylelint`,"nx.json":`vscode-icons:file-type-nx`,"turbo.json":`vscode-icons:file-type-turbo`,"lerna.json":`vscode-icons:file-type-lerna`,"rush.json":`vscode-icons:file-type-npm`,"renovate.json":`vscode-icons:file-type-renovate`,".renovaterc":`vscode-icons:file-type-renovate`,".renovaterc.json":`vscode-icons:file-type-renovate`,".travis.yml":`vscode-icons:file-type-travis`,"codecov.yml":`vscode-icons:file-type-yaml`,"robots.txt":`vscode-icons:file-type-robots`,"manifest.json":`vscode-icons:file-type-manifest`,".webmanifest":`vscode-icons:file-type-manifest`,"firebase.json":`vscode-icons:file-type-firebase`,".firebaserc":`vscode-icons:file-type-firebase`,"vercel.json":`vscode-icons:file-type-vercel`,"netlify.toml":`vscode-icons:file-type-netlify`,"fly.toml":`vscode-icons:file-type-toml`,"capacitor.config.ts":`vscode-icons:file-type-capacitor`,"capacitor.config.json":`vscode-icons:file-type-capacitor`,"electron-builder.config.js":`vscode-icons:file-type-electron`,"electron-builder.yml":`vscode-icons:file-type-electron`,"main.tf":`vscode-icons:file-type-terraform`,"variables.tf":`vscode-icons:file-type-terraform`,"outputs.tf":`vscode-icons:file-type-terraform`,"terraform.tfvars":`vscode-icons:file-type-terraform`},Jr=`vscode-icons:default-file`})))()}function Xr(e){return/^https?:\/\//.test(e)?e:`${In.apiBaseUrl||globalThis.location.origin}${e}`}function Zr(e){let t=e.toLowerCase();return t===`image/svg+xml`?`vscode-icons:file-type-svg`:t.startsWith(`image/`)?`vscode-icons:file-type-image`:t.startsWith(`video/`)?`vscode-icons:file-type-video`:t.startsWith(`audio/`)?`vscode-icons:file-type-audio`:t===`application/pdf`||ri(t)?`vscode-icons:file-type-pdf2`:t.includes(`msword`)||t.includes(`wordprocessingml`)||t.includes(`vnd.ms-word`)||t.includes(`opendocument.text`)||t.includes(`rtf`)?`vscode-icons:file-type-word`:t.includes(`presentationml`)||t.includes(`powerpoint`)||t.includes(`opendocument.presentation`)?`vscode-icons:file-type-powerpoint`:t===`text/csv`||t===`application/csv`||t===`text/tab-separated-values`?`vscode-icons:file-type-excel2`:t.includes(`spreadsheetml`)||t.includes(`excel`)||t.includes(`opendocument.spreadsheet`)||t.includes(`apple.numbers`)||t.includes(`iwork-numbers`)?`vscode-icons:file-type-excel`:gi(t)?`vscode-icons:file-type-zip`:t.startsWith(`font/`)||t.includes(`ttf`)||t.includes(`woff`)||t.includes(`opentype`)?`vscode-icons:file-type-font`:t.includes(`json`)?`vscode-icons:file-type-json`:t.includes(`javascript`)?`vscode-icons:file-type-js-official`:t.includes(`typescript`)?`vscode-icons:file-type-typescript`:t.includes(`html`)?`vscode-icons:file-type-html`:t.includes(`css`)?`vscode-icons:file-type-css`:t.includes(`xml`)?`vscode-icons:file-type-xml`:t.includes(`yaml`)?`vscode-icons:file-type-yaml`:t===`application/x-sh`||t===`text/x-shellscript`?`vscode-icons:file-type-shell`:t.includes(`sql`)?`vscode-icons:file-type-sql`:t===`text/markdown`||t===`text/x-markdown`?`vscode-icons:file-type-markdown`:t===`text/x-python`||t===`application/x-python-code`?`vscode-icons:file-type-python`:t===`application/x-msdownload`||t===`application/vnd.microsoft.portable-executable`||t===`application/x-executable`||t===`application/x-msdos-program`?`vscode-icons:file-type-binary`:t.startsWith(`text/`)||t.includes(`document`)?`vscode-icons:file-type-text`:null}function Qr(e,t=15,n){let r=null;if(n){let e=Gr(n);e!==`vscode-icons:default-file`&&(r=e)}return!r&&e&&(r=Zr(e)),/* @__PURE__ */ K(Zt,{icon:r??`vscode-icons:default-file`,size:t})}function $r(e,t){let n=Ln(e,t);return n?n.startsWith(`image/`)||n.startsWith(`audio/`)||n.startsWith(`video/`)||n===`application/pdf`||ri(n)||ii(n)||ai(n)||oi(n)||si(n)||li(n)||ei(n)||ti(n)||ni(n)||ui(n)||di(n)||gi(n)||fi(n)||pi(n)||mi(n):!1}function ei(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/vnd.ms-excel`||t.startsWith(`application/vnd.ms-excel.`)||t.includes(`spreadsheetml`)||t===`text/csv`||t===`application/csv`||t===`text/tab-separated-values`||t===`application/vnd.oasis.opendocument.spreadsheet`||t===`application/vnd.oasis.opendocument.spreadsheet-flat-xml`||t===`application/vnd.apple.numbers`||t===`application/x-iwork-numbers-sffnumbers`}function ti(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/msword`||t.startsWith(`application/vnd.ms-word.`)||t.includes(`wordprocessingml`)||t===`application/vnd.oasis.opendocument.text`||t===`application/rtf`||t===`application/x-rtf`||t===`text/rtf`}function ni(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/vnd.ms-powerpoint`||t.startsWith(`application/vnd.ms-powerpoint.`)||t.includes(`presentationml`)||t===`application/vnd.oasis.opendocument.presentation`}function ri(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/ofd`||t===`application/vnd.ofd`}function ii(e){return!!e&&yi.has(e.toLowerCase())}function ai(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/vnd.xmind.workbook`||t===`application/x-xmind`}function oi(e){return!!e&&bi.has(e.toLowerCase())}function si(e){return!!e&&xi.has(e.toLowerCase())}function ci(e,t){let n=Ln(e,t);return!!n&&n.startsWith(`image/`)&&!si(n)}function li(e){return!!e&&Si.has(e.toLowerCase())}function ui(e){return e===`text/markdown`||e===`text/x-markdown`}function di(e){return e===`text/plain`}function fi(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/json`||t===`text/json`}function pi(e){return e===`image/svg+xml`}function mi(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/javascript`||t===`text/javascript`||t===`application/typescript`||t===`text/typescript`||t===`text/x-python`||t===`application/x-python-code`||t===`text/css`||t===`text/html`||t===`text/xml`||t===`application/xml`||t===`application/x-yaml`||t===`text/yaml`||t===`text/x-yaml`||t===`application/x-sh`||t===`text/x-shellscript`||t===`application/sql`||t===`text/x-sql`}function hi(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/zip`||t===`application/x-zip-compressed`||t===`application/x-zip`}function gi(e){if(!e)return!1;let t=e.toLowerCase();return hi(t)||Ci.has(t)}async function _i(e){let t=vi(e);if(t){let n=/\/private-content(?:[?#]|$)/.test(e)?Fn:Pn;return(await Sn.download(n,{params:{id:t}})).blob()}if(!/^https?:\/\//.test(e))throw Error(`文件地址不是受支持的托管文件或存储直链`);let n=await fetch(e,{credentials:`omit`});if(!n.ok)throw Error(`文件读取失败`);return n.blob()}function vi(e){return wi.exec(e)?.[1]??null}async function Y(e){let t=vi(e);if(t)try{let{getFileAccessUrl:n}=await r(async()=>{let{getFileAccessUrl:e}=await import(`@fudanda/admin-antd/core/hooks/queries/files`);return{getFileAccessUrl:e}},[],import.meta.url),i=await n(t);if(i.url!==e)return await _i(i.url)}catch{}return _i(e)}var yi,bi,xi,Si,Ci,wi;function X(){return(X=e((()=>{Xt(),Yr(),n(),yi=/* @__PURE__ */ new Set([`message/rfc822`,`application/vnd.ms-outlook`,`application/mbox`,`application/x-mbox`]),bi=/* @__PURE__ */ new Set([`text/x-mermaid`,`text/mermaid`,`text/vnd.mermaid`,`application/x-mermaid`,`application/vnd.mermaid`,`application/vnd.jgraph.mxfile`,`application/x-drawio`,`application/vnd.excalidraw+json`,`text/vnd.plantuml`,`text/x-plantuml`]),xi=/* @__PURE__ */ new Set([`font/ttf`,`font/otf`,`font/woff`,`font/woff2`,`application/x-font-ttf`,`application/x-font-otf`,`application/font-woff`,`application/font-woff2`,`application/vnd.ms-opentype`,`image/vnd.adobe.photoshop`,`image/x-photoshop`,`application/x-photoshop`,`application/photoshop`,`application/vnd.sqlite3`,`application/x-sqlite3`,`application/vnd.apache.parquet`,`application/x-parquet`,`application/wasm`]),Si=/* @__PURE__ */ new Set([`application/geo+json`,`application/vnd.geo+json`,`application/vnd.google-earth.kml+xml`,`application/gpx+xml`,`application/x-gpx+xml`,`application/vnd.shp`,`application/x-esri-shape`]),Ci=/* @__PURE__ */ new Set([`application/vnd.rar`,`application/x-rar-compressed`,`application/x-7z-compressed`,`application/x-tar`,`application/x-gtar`,`application/gzip`,`application/x-gzip`,`application/x-bzip2`,`application/x-bzip-compressed-tar`,`application/x-xz`,`application/x-xz-compressed-tar`,`application/x-lzma`,`application/zstd`,`application/x-zstd-compressed-tar`,`application/vnd.ms-cab-compressed`,`application/x-archive`,`application/x-cpio`,`application/x-iso9660-image`,`application/x-xar`,`application/x-lzh-compressed`,`application/java-archive`,`application/vnd.android.package-archive`,`application/vnd.comicbook+zip`,`application/vnd.comicbook-rar`]),wi=(()=>{let[e]=Pn.path.split(`{id}`);return RegExp(`${xn(e)}([0-9a-f-]{36})/(?:private-content|content)(?:[?#]|$)`,`i`)})()})))()}function Ti(e,{preview:t,onDetail:n,onCopyUrl:r,onDelete:i,canDelete:a}){return[{key:`preview`,label:`预览`,disabled:!$r(e.mimeType,e.originalName),loading:t.previewLoadingId===e.id,onClick:()=>t.handlePreview(e)},{key:`download`,label:`下载`,loading:t.downloadLoadingId===e.id,onClick:()=>t.handleDownload(e)},{key:`detail`,label:`详情`,onClick:()=>n(e)},{key:`copy-url`,label:`复制链接`,onClick:()=>r(e)},{key:`delete`,label:`删除`,danger:!0,dividerBefore:!0,hidden:!a,onClick:()=>{C({title:`确认删除此文件?`,content:`删除文件记录后,将同步尝试删除实际存储对象。`,onOk:()=>i(e)})}}]}function Ei(){return(Ei=e((()=>{X(),E()})))()}function Di(e){(e?.kind===`audio`||e?.kind===`video`||e?.kind===`svg`)&&URL.revokeObjectURL(e.url)}function Oi({title:e,onCancel:t,fullscreen:n,onToggleFullscreen:r,width:i,viewportHeight:a,children:s}){return/* @__PURE__ */ K(B,{visible:!0,onCancel:t,title:e,footer:null,fullscreenable:!0,fullscreen:n,onToggleFullscreen:r,width:i,centered:!0,bodyStyle:{padding:0,display:`flex`,flexDirection:`column`,overflow:`hidden`,height:n?`calc(100vh - 40px)`:`calc(${a} - 40px)`},keepDOM:!1,children:/* @__PURE__ */ K(pn,{fallback:/* @__PURE__ */ K(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,flex:1},children:/* @__PURE__ */ K(o,{size:`large`,tip:`加载预览组件...`})}),children:s})})}function ki({fileUrl:e,fileName:t=`文件`,mimeType:n,visible:r,onClose:i,onFallback:a}){let[s,l]=W(!1),u=hn(()=>{l(e=>!e)},[]),{isDark:d}=Kt(),f=U(()=>Rn(n,t),[t,n]),p=U(()=>{if(!f)return null;let e=f.startsWith(`image/`),n=f===`video/mp2t`&&/\.(ts|tsx)$/i.test(t);return ei(f)?`spreadsheet`:ti(f)?`word`:ni(f)?`presentation`:ri(f)?`ofd`:ii(f)?`email`:ai(f)?`mindmap`:oi(f)?`drawing`:si(f)?`dataAsset`:li(f)?`geo`:ui(f)?`markdown`:di(f)?`plainText`:gi(f)?`archive`:fi(f)?`json`:pi(f)?`svg`:mi(f)||n?`code`:f===`application/pdf`?`pdf`:f.startsWith(`audio/`)?`audio`:f.startsWith(`video/`)&&!n?`video`:e?`image`:`unsupported`},[t,f]),h=_n({queryKey:[...Tn(Cn.content),`preview`,r,e,t,f,p],queryFn:async()=>{let n=await Y(e);if(p===`spreadsheet`||p===`word`||p===`presentation`||p===`ofd`||p===`email`||p===`mindmap`||p===`drawing`||p===`dataAsset`||p===`geo`||p===`archive`)return{kind:p,file:new File([n],t,{type:f||n.type})};if(p===`markdown`)return{kind:`markdown`,text:await n.text()};if(p===`plainText`)return{kind:`plainText`,text:await n.text()};if(p===`json`)return{kind:`json`,text:await n.text()};if(p===`svg`)return{kind:`svg`,url:URL.createObjectURL(n)};if(p===`code`)return{kind:`code`,text:await n.text()};if(p===`pdf`)return{kind:`pdf`,file:new File([n],t,{type:`application/pdf`})};if(p===`audio`)return{kind:`audio`,url:URL.createObjectURL(n)};if(p===`video`)return{kind:`video`,url:URL.createObjectURL(n)};throw Error(`文件加载失败`)},enabled:r&&!!p&&p!==`unsupported`&&p!==`image`,staleTime:0,gcTime:0}),_=h.data;H(()=>()=>Di(_),[_]),H(()=>{r?f?p===`unsupported`?(a?.(e,t,f),i()):p===`image`&&i():i():l(!1)},[t,e,i,a,p,f,r]),H(()=>{h.error&&(M.error(h.error instanceof Error?h.error.message:`文件加载失败`),i())},[i,h.error]);let v=()=>{i()},y=/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,minWidth:0},children:[Qr(n,15,t),/* @__PURE__ */ K(c.Text,{ellipsis:{showTooltip:!0},style:{fontSize:13,fontWeight:500,minWidth:0},children:t})]});if(!r)return null;if(h.isLoading)return/* @__PURE__ */ K(B,{visible:!0,onCancel:v,title:y,footer:null,fullscreenable:!1,centered:!0,keepDOM:!1,bodyStyle:{display:`flex`,alignItems:`center`,justifyContent:`center`,padding:40},children:/* @__PURE__ */ K(o,{size:`large`,tip:`加载中...`})});if(_?.kind===`pdf`)return/* @__PURE__ */ K(de,{visible:!0,onCancel:v,title:null,footer:null,fullScreen:s,width:`min(1100px, 92vw)`,centered:!0,bodyStyle:{padding:0,display:`flex`,overflow:`hidden`,height:s?`100vh`:`88vh`},closable:!1,keepDOM:!1,children:/* @__PURE__ */ K(pn,{fallback:/* @__PURE__ */ K(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`100%`},children:/* @__PURE__ */ K(o,{size:`large`})}),children:/* @__PURE__ */ K(Ai,{file:_.file,onClose:v,fullscreen:s,onToggleFullscreen:u,style:{width:`100%`,borderLeft:`none`}})})});if(_?.kind===`spreadsheet`||_?.kind===`word`||_?.kind===`presentation`||_?.kind===`ofd`||_?.kind===`email`||_?.kind===`mindmap`||_?.kind===`drawing`||_?.kind===`dataAsset`||_?.kind===`geo`||_?.kind===`archive`){let e=_.kind===`presentation`,t=_.kind===`spreadsheet`||_.kind===`archive`||_.kind===`email`||_.kind===`mindmap`||_.kind===`drawing`||_.kind===`dataAsset`||_.kind===`geo`||e;return/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:t?`min(1200px, 94vw)`:`min(960px, 92vw)`,viewportHeight:`90vh`,children:/* @__PURE__ */ K(ji,{file:_.file,style:{flex:1}})})}if(_?.kind===`markdown`){let e=_.text.startsWith(`\0PLAINTEXT\0`),t=e?_.text.slice(11):_.text;return/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:`min(900px, 92vw)`,viewportHeight:`90vh`,children:/* @__PURE__ */ K(Mi,{content:t,rawText:e,style:{flex:1,minHeight:0}})})}return _?.kind===`json`?/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:`min(900px, 92vw)`,viewportHeight:`88vh`,children:/* @__PURE__ */ K(Ni,{content:_.text,style:{flex:1,minHeight:0}})}):_?.kind===`code`||_?.kind===`plainText`?/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:`min(1100px, 92vw)`,viewportHeight:`90vh`,children:/* @__PURE__ */ K(Pi,{content:_.text,fileName:t,style:{flex:1,minHeight:0}})}):_?.kind===`svg`?/* @__PURE__ */ K(B,{visible:!0,onCancel:v,title:y,footer:null,fullscreenable:!0,fullscreen:s,onToggleFullscreen:u,width:`min(900px, 92vw)`,centered:!0,bodyStyle:{padding:16,display:`flex`,alignItems:`center`,justifyContent:`center`,overflow:`auto`,height:s?`calc(100vh - 40px)`:`calc(80vh - 40px)`},keepDOM:!1,children:/* @__PURE__ */ K(`img`,{src:_.url,alt:t,style:{maxWidth:`100%`,maxHeight:`100%`,objectFit:`contain`}})}):_?.kind===`audio`?zn(/* @__PURE__ */ K(`div`,{className:`arcbase-audio-dock`,role:`region`,"aria-label":`音频播放器`,children:/* @__PURE__ */ q(`div`,{className:`arcbase-audio-dock__inner`,children:[/* @__PURE__ */ K(`div`,{className:`arcbase-audio-dock__player`,children:/* @__PURE__ */ K(m,{className:`arcbase-audio-preview`,audioUrl:{src:_.url,title:t},theme:d?`dark`:`light`,autoPlay:!0,style:{width:`100%`}})}),/* @__PURE__ */ K(`button`,{type:`button`,className:`arcbase-audio-dock__close`,onClick:v,"aria-label":`关闭音频播放器`,children:/* @__PURE__ */ K(qt,{size:18})})]})}),document.body):_?.kind===`video`?/* @__PURE__ */ K(B,{visible:!0,onCancel:v,title:y,footer:null,fullscreenable:!1,width:`min(960px, 92vw)`,centered:!0,bodyStyle:{padding:0,overflow:`hidden`,borderRadius:`var(--arc-antd-border-radius-medium)`},keepDOM:!1,children:/* @__PURE__ */ K(g,{src:_.url,theme:d?`dark`:`light`,width:`100%`,autoPlay:!1,muted:!1,volume:100,clickToPlay:!0,defaultPlaybackRate:1,playbackRateList:[{label:`0.5x`,value:.5},{label:`1x`,value:1},{label:`1.5x`,value:1.5},{label:`2x`,value:2}],style:{borderRadius:`var(--arc-antd-border-radius-medium)`}})}):null}var Ai,ji,Mi,Ni,Pi;function Fi(){return(Fi=e((()=>{l(),Gt(),Yt(),X(),Qt(),n(),Ai=V(()=>r(()=>import(`./PDFPreviewPanel-CyfhyWav.js`).then(e=>(e.n(),e.t)).then(e=>({default:e.PDFPreviewPanel})),[],import.meta.url)),ji=V(()=>r(()=>import(`./FileViewerPreviewPanel-Rti7pUhU.js`).then(e=>(e.n(),e.t)),[],import.meta.url)),Mi=V(()=>r(()=>import(`./MarkdownPreviewPanel-lqs6AsoN.js`),[],import.meta.url)),Ni=V(()=>r(()=>import(`./JsonPreviewPanel-CDQa72tF.js`),[],import.meta.url)),Pi=V(()=>r(()=>import(`./MonacoPreviewPanel-CT_sjf7Z.js`),[],import.meta.url))})))()}function Ii({content:e,visible:t}){let n=(Array.isArray(e)?e:e?[e]:[]).filter(Boolean),r=JSON.stringify(n),[i,a]=W(null);return H(()=>{let e=JSON.parse(r);if(!t||e.length===0){a(null);return}let n=document.body.getAttribute(`theme-mode`)===`dark`,i=Xn(e,13,.22,-22,180,110,n);i&&a({position:`fixed`,inset:0,pointerEvents:`none`,userSelect:`none`,zIndex:2100,backgroundImage:`url(${i.dataUrl})`,backgroundRepeat:`repeat`,backgroundSize:`${i.cssWidth}px ${i.cssHeight}px`})},[r,t]),i?/* @__PURE__ */ K(`div`,{"aria-hidden":!0,style:i,"data-testid":`preview-watermark`}):null}function Li(){return(Li=e((()=>{})))()}function Ri({preview:e,watermark:t}){return/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(ue,{src:e.previewSrcList,visible:e.previewVisible,currentIndex:e.previewCurrentIndex,onChange:e.setPreviewCurrentIndex,onVisibleChange:t=>{t||e.closeImagePreview()},infinite:!0}),/* @__PURE__ */ K(ki,{fileUrl:e.filePreview?.url??``,fileName:e.filePreview?.name,mimeType:e.filePreview?.mimeType,visible:!!e.filePreview,onClose:e.closeFilePreview}),/* @__PURE__ */ K(Ii,{content:t,visible:e.previewVisible||!!e.filePreview})]})}function zi(){return(zi=e((()=>{l(),Fi(),Li()})))()}function Bi({visible:e,file:t,loading:n,resolveUrl:r,onCopyUrl:i,onClose:a,extraRows:s=[]}){return/* @__PURE__ */ K(B,{title:`文件详情`,visible:e,onCancel:a,footer:/* @__PURE__ */ q(h,{children:[/* @__PURE__ */ K(D,{onClick:()=>t&&i(t),children:`复制链接`}),/* @__PURE__ */ K(D,{type:`primary`,onClick:a,children:`关闭`})]}),width:960,children:/* @__PURE__ */ K(o,{spinning:n,tip:`加载中...`,size:`small`,children:t&&/* @__PURE__ */ K(b,{className:`file-detail-descriptions`,column:{xs:1,sm:1,md:2},align:`left`,size:`medium`,data:[{key:`文件名`,value:t.originalName,span:`filled`},{key:`存储服务`,value:t.storageName},{key:`MIME 类型`,value:t.mimeType||`—`},{key:`文件大小`,value:J(t.size)},{key:`上传人`,value:t.uploaderName||`—`},...s.map(e=>({...e,span:`filled`})),{key:`对象键`,value:/* @__PURE__ */ K(Vi,{copyable:!0,style:{fontSize:12},children:t.objectKey}),span:`filled`},{key:`访问链接`,value:/* @__PURE__ */ K(Vi,{copyable:!0,style:{fontSize:12},children:r(t)}),span:`filled`},{key:`上传时间`,value:kn(t.createdAt),span:`filled`}]})})})}var Vi;function Hi(){return(Hi=e((()=>{l(),Qt(),{Text:Vi}=c})))()}function Ui(e){let[t,n]=W(!1),[r,i]=W([]),[a,o]=W(0),[s,c]=W(null),[l,u]=W(null),[d,f]=W(null),p=gn([]),m=gn(0),h=()=>{p.current.forEach(e=>globalThis.URL.revokeObjectURL(e)),p.current=[]};return{previewVisible:t,previewSrcList:r,previewCurrentIndex:a,setPreviewCurrentIndex:o,previewLoadingId:s,downloadLoadingId:d,filePreview:l,handlePreview:async t=>{let r=Rn(t.mimeType,t.originalName),a=ci(t.mimeType,t.originalName);if(!$r(t.mimeType,t.originalName)&&!a){try{let e=await Y(t.url),n=globalThis.URL.createObjectURL(e);globalThis.open(n,`_blank`,`noopener,noreferrer`),globalThis.setTimeout(()=>globalThis.URL.revokeObjectURL(n),6e4)}catch(e){M.error(e instanceof Error?e.message:`预览文件失败`)}return}if(!a){c(t.id);try{u({id:t.id,url:t.url,name:t.originalName,mimeType:r??`application/octet-stream`})}catch(e){M.error(e instanceof Error?e.message:`预览文件失败`)}finally{c(null)}return}let s=e().filter(e=>ci(e.mimeType,e.originalName)),l=s.findIndex(e=>e.id===t.id);c(t.id),m.current+=1;let d=m.current;try{h();let e=s.map(()=>``);p.current=[...e];let t=s[l],r=await Y(t.url);if(m.current!==d)return;let a=await Zn(r,t.mimeType,t.originalName);if(m.current!==d){globalThis.URL.revokeObjectURL(a);return}e[l]=a,p.current[l]=a,i([...e]),o(Math.max(0,l)),n(!0),s.forEach(async(e,t)=>{if(t!==l)try{let n=await Y(e.url);if(m.current!==d)return;let r=await Zn(n,e.mimeType,e.originalName);if(m.current!==d){globalThis.URL.revokeObjectURL(r);return}p.current[t]=r,i(e=>{let n=[...e];return n[t]=r,n})}catch{}})}catch(e){M.error(e instanceof Error?e.message:`预览图片失败`)}finally{c(null)}},handleDownload:async e=>{f(e.id);try{let t=await Y(e.url),n=globalThis.URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.originalName,r.click(),globalThis.setTimeout(()=>globalThis.URL.revokeObjectURL(n),6e4)}catch(e){M.error(e instanceof Error?e.message:`下载文件失败`)}finally{f(null)}},closeImagePreview:()=>{m.current+=1,n(!1),h(),i([])},closeFilePreview:()=>u(null),resetPreview:()=>{u(null),n(!1),m.current+=1}}}function Wi(){return(Wi=e((()=>{l(),X()})))()}function Gi(e){return mn(e,{style:{...e.props.style,...Ji}})}function Ki(){return document.body}function qi({point:e,contextKey:t,render:n,onClose:r}){let i=`${t}:${e.x}:${e.y}`,a=gn(null),o=hn(()=>{a.current!==i&&(a.current=i,r())},[r,i]);return/* @__PURE__ */ K(j,{visible:!0,trigger:`click`,position:`bottomLeft`,autoAdjustOverflow:!0,rePosKey:i,render:Gi(n),getPopupContainer:Ki,clickToHide:!0,closeOnEsc:!0,onClickOutSide:o,onVisibleChange:e=>{e||o()},children:/* @__PURE__ */ K(`span`,{"aria-hidden":`true`,style:{position:`fixed`,left:e.x,top:e.y,width:1,height:1,pointerEvents:`none`}})})}var Ji;function Yi(){return(Yi=e((()=>{l(),Ji={maxHeight:`calc(100vh - 16px)`,overflowY:`auto`}})))()}function Xi({file:e,selected:t,canSelect:n,onSelect:r,onPreview:i,onDownload:a,onDelete:s,onDetail:c,onCopyUrl:l,canDelete:u,previewLoading:d}){let[f,m]=W(null),h=$r(e.mimeType,e.originalName),g=e.originalName.includes(`.`)?e.originalName.split(`.`).pop()?.toUpperCase():``;return/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(`div`,{className:`files-grid-card${t?` files-grid-card--selected`:``}`,onContextMenu:e=>{e.preventDefault(),m({x:e.clientX,y:e.clientY})},children:[/* @__PURE__ */ K(`button`,{type:`button`,className:`files-grid-card__preview-btn`,"aria-label":h?`预览 ${e.originalName}`:e.originalName,style:{cursor:h?`pointer`:`default`},onClick:a=>{n&&(a.ctrlKey||a.metaKey||a.shiftKey)?r(e.id,!t):h&&i(e)}}),n&&/* @__PURE__ */ K(`div`,{className:`files-grid-card__checkbox`,children:/* @__PURE__ */ K(p,{checked:t,onChange:()=>r(e.id,!t)})}),/* @__PURE__ */ K(`div`,{className:`files-grid-card__media-wrap`,children:/* @__PURE__ */ q(`div`,{className:`files-grid-card__media`,children:[/* @__PURE__ */ K(`span`,{className:`files-grid-card__icon`,children:Qr(e.mimeType,34,e.originalName)}),g&&/* @__PURE__ */ K(`span`,{className:`files-grid-card__type-badge`,children:g}),d&&/* @__PURE__ */ K(`div`,{className:`files-grid-card__media-overlay`,children:/* @__PURE__ */ K(o,{})})]})}),/* @__PURE__ */ q(`div`,{className:`files-grid-card__info`,children:[/* @__PURE__ */ K(T,{content:e.originalName,position:`top`,children:/* @__PURE__ */ K(`div`,{className:`files-grid-card__name`,children:e.originalName})}),/* @__PURE__ */ K(`div`,{className:`files-grid-card__meta`,children:/* @__PURE__ */ K(`span`,{children:J(e.size)})})]})]}),f&&/* @__PURE__ */ K(qi,{point:f,contextKey:e.id,onClose:()=>m(null),render:/* @__PURE__ */ q(j.Menu,{children:[h&&/* @__PURE__ */ K(j.Item,{onClick:()=>i(e),children:`预览`}),/* @__PURE__ */ K(j.Item,{onClick:()=>a(e),children:`下载`}),/* @__PURE__ */ K(j.Item,{onClick:()=>c(e),children:`详情`}),/* @__PURE__ */ K(j.Item,{onClick:()=>l(e),children:`复制链接`}),u&&/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(j.Divider,{}),/* @__PURE__ */ K(j.Item,{type:`danger`,onClick:()=>{Dt({title:`确认删除此文件?`,content:`删除文件记录后,将同步尝试删除实际存储对象。`,run:()=>Promise.resolve(s(e)),successMessage:null})},children:`删除`})]})]})})]})}function Zi(){return(Zi=e((()=>{l(),X(),Et(),Yi()})))()}function Qi({name:e,icon:t,mimeType:n,onClick:r,highlight:i}){let a=i?e.split(RegExp(`(${xn(i)})`,`gi`)):[e],o=/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(`span`,{className:`file-name-cell__icon`,children:t??Qr(n,16,e)}),/* @__PURE__ */ K(T,{content:e,children:/* @__PURE__ */ K(`span`,{className:`file-name-cell__text`,children:a.map((e,t)=>i&&e.toLowerCase()===i.toLowerCase()?/* @__PURE__ */ K(`mark`,{children:e},t):e)})})]});return r?/* @__PURE__ */ K(`button`,{type:`button`,className:`file-name-cell file-name-cell--button`,onClick:r,children:o}):/* @__PURE__ */ K(`div`,{className:`file-name-cell`,children:o})}function $i(){return($i=e((()=>{l(),X()})))()}function ea({config:e,onClose:t}){let{hasPermission:n}=En(),[r,i]=W(`list`),[a,s]=W(``),{page:c,setPage:l}=jn(),u=fr(e?.id,a,!!e),d=u.data??null,f=u.isFetching,p=tr(),[m,g]=W([``]),[_,v]=W(0),y=_>0,ee=_<m.length-1,b=Ui(()=>d?.files??[]),[x,S]=W(null),C=nr(x?.id,!!x),w=C.data??x,te=C.isFetching;H(()=>{e&&(s(``),i(`list`),l(1),g([``]),v(0),S(null),b.resetPreview())},[e,l]);let ne=(e,t=!0)=>{s(e),l(1),t&&(g(t=>{let n=t.slice(0,_+1);return n.push(e),n}),v(e=>e+1))},E=e=>ne(e.path),ae=e=>ne(e),ce=()=>{let e=_-1,t=m[e]??``;v(e),s(t),l(1)},le=()=>{let e=_+1,t=m[e]??``;v(e),s(t),l(1)},O=a?a.split(`/`):[],k=async e=>{await p.mutateAsync([e.id]),M.success(`文件已删除`),u.refetch()},ue=e=>{S(e)},A=async e=>{await ie(Xr(e.url),{success:`链接已复制`,error:`复制失败,请手动复制`})},j=[{title:`名称`,key:`name`,ellipsis:{showTitle:!1},render:(e,t)=>{if(!(`id`in t))return/* @__PURE__ */ K(Qi,{name:t.name,icon:/* @__PURE__ */ K(Lr,{size:15,className:`storage-browser__folder-icon`}),onClick:()=>E(t)});let n=$r(t.mimeType,t.originalName);return/* @__PURE__ */ K(Qi,{name:t.originalName,mimeType:t.mimeType,onClick:n?()=>void b.handlePreview(t):void 0})}},{title:`大小`,key:`size`,width:110,align:`right`,render:(e,t)=>`id`in t?J(t.size):/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`})},{title:`上传时间`,key:`createdAt`,width:180,render:(e,t)=>`id`in t?/* @__PURE__ */ K(Pt,{value:t.createdAt}):/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`})},Tt({width:180,desktopInlineKeys:[`open`,`preview`,`download`],actions:e=>`id`in e?Ti(e,{preview:b,onDetail:e=>{ue(e)},onCopyUrl:A,onDelete:k,canDelete:n(`system:file:delete`)}):[{key:`open`,label:`打开`,onClick:()=>E(e)}]})],de=[...d?.folders??[],...d?.files??[]],N=de.length,P=de.slice((c-1)*50,c*50);return/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(fe,{title:e?`文件浏览 · ${e.name}`:`文件浏览`,visible:!!e,onCancel:t,size:`large`,bodyStyle:{padding:0,display:`flex`,flexDirection:`column`},headerStyle:{borderBottom:`1px solid var(--arc-antd-color-border)`},children:[/* @__PURE__ */ q(`div`,{className:`storage-browser__toolbar`,children:[/* @__PURE__ */ q(h,{spacing:4,style:{flexShrink:0},children:[/* @__PURE__ */ K(D,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ K(ft,{size:15}),disabled:!y,onClick:ce}),/* @__PURE__ */ K(D,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ K(pt,{size:15}),disabled:!ee,onClick:le})]}),/* @__PURE__ */ q(oe,{className:`storage-browser__breadcrumb`,children:[/* @__PURE__ */ K(oe.Item,{onClick:()=>ae(``),style:{cursor:a?`pointer`:`default`,color:a?`var(--arc-antd-color-primary)`:void 0},children:`根目录`}),O.map((e,t)=>{let n=O.slice(0,t+1).join(`/`),r=t===O.length-1;return/* @__PURE__ */ K(oe.Item,{onClick:r?void 0:()=>ae(n),style:{cursor:r?`default`:`pointer`,color:r?void 0:`var(--arc-antd-color-primary)`},children:e},n)})]}),/* @__PURE__ */ q(h,{spacing:0,children:[/* @__PURE__ */ K(D,{size:`small`,theme:r===`list`?`solid`:`light`,type:r===`list`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(yt,{size:14}),style:{borderRadius:`4px 0 0 4px`},onClick:()=>i(`list`)}),/* @__PURE__ */ K(D,{size:`small`,theme:r===`grid`?`solid`:`light`,type:r===`grid`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(re,{size:14}),style:{borderRadius:`0 4px 4px 0`},onClick:()=>i(`grid`)})]})]}),/* @__PURE__ */ K(`div`,{className:`storage-browser__content`,children:/* @__PURE__ */ q(o,{spinning:f,size:`large`,wrapperClassName:`storage-browser__spin`,children:[!f&&N===0&&/* @__PURE__ */ K(`div`,{className:`storage-browser__empty`,children:`当前目录为空`}),r===`list`&&N>0&&/* @__PURE__ */ K(Ut,{bordered:!0,columns:j,dataSource:P,rowKey:e=>e?`id`in e?`file-${e.id}`:`folder-${e.path}`:``,loading:!1,onRefresh:()=>void u.refetch(),refreshLoading:f,size:`small`,pagination:!1,onRow:e=>e&&!(`id`in e)?{onClick:()=>E(e),style:{cursor:`pointer`}}:{}}),r===`grid`&&N>0&&(()=>{let e=P.filter(e=>!(`id`in e)),t=P.filter(e=>`id`in e);return/* @__PURE__ */ q(`div`,{className:`storage-browser__grid-wrap`,children:[e.length>0&&/* @__PURE__ */ q(`div`,{className:`storage-browser__grid-section`,children:[/* @__PURE__ */ K(`div`,{className:`storage-browser__grid-section-label`,children:`文件夹`}),/* @__PURE__ */ K(`div`,{className:`storage-browser__folder-grid`,children:e.map(e=>/* @__PURE__ */ q(`button`,{type:`button`,className:`storage-browser__folder-card`,onClick:()=>E(e),children:[/* @__PURE__ */ K(Lr,{size:32,className:`storage-browser__folder-card-icon`}),/* @__PURE__ */ K(T,{content:e.name,position:`top`,children:/* @__PURE__ */ K(`span`,{className:`storage-browser__folder-card-name`,children:e.name})})]},e.path))})]}),t.length>0&&/* @__PURE__ */ q(`div`,{className:`storage-browser__grid-section`,children:[e.length>0&&/* @__PURE__ */ K(`div`,{className:`storage-browser__grid-section-label`,children:`文件`}),/* @__PURE__ */ K(`div`,{className:`storage-browser__file-grid`,children:t.map(e=>/* @__PURE__ */ K(Xi,{file:e,selected:!1,canSelect:!1,onSelect:()=>{},onPreview:b.handlePreview,onDownload:b.handleDownload,onDelete:k,onDetail:ue,onCopyUrl:A,canDelete:n(`system:file:delete`),previewLoading:b.previewLoadingId===e.id},e.id))})]})]})})()]})}),/* @__PURE__ */ q(`div`,{className:`storage-browser__footer`,children:[/* @__PURE__ */ q(ta,{type:`secondary`,size:`small`,children:[(d?.folders.length??0)>0&&`${d.folders.length} 个文件夹`,(d?.folders.length??0)>0&&(d?.files.length??0)>0&&`,`,(d?.files.length??0)>0&&`${d.files.length} 个文件`,N===0&&!f&&`空目录`]}),N>0&&/* @__PURE__ */ K(se,{currentPage:c,pageSize:50,total:N,onPageChange:l,size:`small`,hoverShowPageSelect:!0})]})]}),/* @__PURE__ */ K(Ri,{preview:b}),/* @__PURE__ */ K(Bi,{visible:!!x,file:w,loading:te,resolveUrl:e=>Xr(e.url),onCopyUrl:e=>void A(e),onClose:()=>S(null)})]})}var ta;function na(){return(na=e((()=>{l(),Rr(),ut(),dt(),te(),vt(),Nt(),X(),Ei(),ce(),zi(),Hi(),Wi(),Ht(),wt(),Zi(),$i(),{Text:ta}=c})))()}function Z(e){return e?.trim()??``}function ra(e,t,n){return wn.create.input.shape.body.parse({name:n.name?.trim()??``,status:n.status??`enabled`,isDefault:t,basePath:Z(n.basePath),objectAcl:`default`,urlStrategy:`proxy`,publicBaseUrl:``,presignedExpirySeconds:qn,provider:e,remark:Z(n.remark),...e===`local`?{localRootPath:Z(n.localRootPath)}:{s3Region:Z(n.s3Region),s3Endpoint:Z(n.s3Endpoint),s3Bucket:Z(n.s3Bucket),s3AccessKeyId:Z(n.s3AccessKeyId),s3SecretAccessKey:Z(n.s3SecretAccessKey),s3ForcePathStyle:n.s3ForcePathStyle??!1}})}function ia(e){return e.provider===`local`?e.localRootPath||z:[e.s3Bucket,e.s3Region].filter(Boolean).join(` / `)||z}function aa(){let{hasPermission:e}=En(),t=jt({contract:wn,useList:lr}),{tableProps:n,filterQuery:r}=t,[i,a]=W(`local`),[o,s]=W(!1),[c,l]=W(null),p=ur(),m=ur(),h=Bt({entityName:`文件配置`,save:Rt(p,{create:wn.create.input.shape.body,update:wn.update.input.shape.body}),useDetail:cr,defaults:{name:``,provider:`local`,status:`enabled`,isDefault:!1,basePath:``,objectAcl:`default`,urlStrategy:`proxy`,publicBaseUrl:``,presignedExpirySeconds:qn,localRootPath:`storage/local`,remark:``},toValues:e=>({name:e.name,status:e.status,isDefault:e.isDefault,provider:e.provider,basePath:e.basePath,objectAcl:`default`,urlStrategy:`proxy`,publicBaseUrl:``,presignedExpirySeconds:qn,localRootPath:e.localRootPath??``,s3Region:e.s3Region??``,s3Endpoint:e.s3Endpoint??``,s3Bucket:e.s3Bucket??``,s3AccessKeyId:e.s3AccessKeyId??``,s3SecretAccessKey:``,s3ForcePathStyle:e.s3ForcePathStyle??!1,remark:e.remark??``}),beforeSave:e=>ra(i,o,e),successMessage:({isEdit:e})=>e?`文件服务配置已更新`:`文件服务配置已创建`,labelWidth:150}),g=sr(),ee=dr(),b=pr(),x=b.isPending&&!b.variables?.id,S=b.isPending?b.variables?.id??null:null;H(()=>{h.editing&&(a(h.editing.provider),s(h.editing.isDefault))},[h.editing]);let C=()=>{a(`local`),s(!1),h.openCreate()},te=e=>{a(e.provider),s(e.isDefault),h.openEdit(e)},ne=async()=>{let e;try{e=await h.formApi.current.validate()}catch{return}if(!e)return;let t=ra(i,o,e);await b.mutateAsync(h.editing?{id:h.editing.id,values:t}:{values:t}),M.success(`存储连接测试通过`)},T=async e=>{await ee.mutateAsync({params:{id:e.id}}),M.success(`默认文件服务已更新`)},E=async e=>{await b.mutateAsync({id:e.id,values:{}}),M.success(`存储连接测试通过`)},re=St({toggle:async(e,t)=>{!t&&e.isDefault&&(M.warning(`默认配置不能禁用,请先将其他配置设为默认`),bn(`default-config-cannot-be-disabled`)),await m.mutateAsync({id:e.id,values:ra(e.provider,e.isDefault,{...e,status:t?`enabled`:`disabled`})})},confirmDisable:e=>e.isDefault?null:{danger:!0,title:`确认禁用「${e.name}」?`,okText:`确认禁用`},disabled:!e(`system:file:config:update`),messages:{disabled:`已禁用`}}),ie=Ot({permission:`system:file:config`,edit:te,remove:g,title:`确认删除此文件服务配置?`,content:`若已绑定文件记录,后端会阻止删除。`,successMessage:`文件服务配置已删除`,disabled:{remove:e=>e.isDefault},extra:t=>[{key:`browse`,label:`浏览`,hidden:!e(`system:file:list`),onClick:()=>l(t)},{key:`default`,label:`设为默认`,hidden:!e(`system:file:config:default`),disabled:t.isDefault||t.status!==`enabled`,onClick:()=>T(t)}],extraBetween:t=>[{key:`test`,label:`测试连接`,loading:S===t.id,hidden:!e(`system:file:config`),onClick:()=>{E(t)}}],width:180,desktopInlineKeys:[`browse`,`edit`]}),ae=[{title:`配置名称`,dataIndex:`name`,minWidth:180,render:R},{title:`存储类型`,dataIndex:`provider`,width:120,render:e=>/* @__PURE__ */ K(u,{color:{local:`blue`,s3:`purple`}[e],size:`small`,children:Hn[e]})},{title:`默认服务`,dataIndex:`isDefault`,width:110,align:`center`,render:e=>e?/* @__PURE__ */ K(u,{color:`green`,size:`small`,children:`默认`}):/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`})},{title:`存储信息`,key:`storageSummary`,dataIndex:`storageSummary`,width:180,render:(e,t)=>{let n={local:`目录`,s3:`Bucket`}[t.provider]??`Bucket`,r=ia(t);return R(`${n}: ${r}`)}},{title:`基础路径`,dataIndex:`basePath`,width:160,render:e=>R(e)},{title:`读写权限`,dataIndex:`objectAcl`,width:120,align:`center`,render:(e,t)=>{if(!sa.includes(t.provider))return/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`});let n={default:`grey`},r=e??`default`;return/* @__PURE__ */ K(u,{color:n[r],size:`small`,children:Bn[r]})}},{title:`访问策略`,dataIndex:`urlStrategy`,width:120,align:`center`,render:e=>{let t=e??`proxy`;return/* @__PURE__ */ K(u,{color:{proxy:`grey`}[t],size:`small`,children:Gn[t]})}},It(`更新时间`,`updatedAt`),re.column(),ie];return/* @__PURE__ */ q(`div`,{className:`storage-configs-panel`,children:[/* @__PURE__ */ K(`div`,{className:`storage-configs-tip`,style:{marginBottom:0,marginTop:-4},children:/* @__PURE__ */ K(oa,{type:`secondary`,children:`当前支持多文件服务配置,但上传时会优先走"默认文件服务"。切换默认服务不会影响历史文件记录。`})}),/* @__PURE__ */ K(Ut,{searchConfig:d({page:t,filters:[`status`,[`startTime`,`endTime`]],create:/* @__PURE__ */ K(he,{permission:`system:file:config:create`,onClick:C}),actions:/* @__PURE__ */ K(ln,{entity:`system.file-storage-configs`,query:r}),filterTitle:`文件配置筛选`,actionTitle:`文件配置操作`}),columns:ae,...n}),/* @__PURE__ */ q(zt,{modal:h,width:780,footer:/* @__PURE__ */ q(`div`,{style:{display:`flex`,justifyContent:`space-between`,gap:8},children:[` `,/* @__PURE__ */ K(D,{icon:/* @__PURE__ */ K(Wt,{size:14}),loading:x,disabled:h.detailLoading,onClick:()=>void ne(),children:` 测试连接 `}),` `,/* @__PURE__ */ q(`div`,{style:{display:`flex`,gap:8},children:[` `,/* @__PURE__ */ K(D,{type:`tertiary`,onClick:h.close,children:`取消`}),` `,/* @__PURE__ */ K(D,{type:`primary`,theme:`solid`,loading:h.modalProps.okButtonProps.loading,disabled:h.modalProps.okButtonProps.disabled,onClick:()=>void P(h.modalProps.onOk),children:` 保存 `}),` `]}),` `]}),children:[/* @__PURE__ */ q(f.Section,{text:`基础信息`,children:[/* @__PURE__ */ q(k,{gutter:16,children:[/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`name`,label:`配置名称`,placeholder:`请输入配置名称`,rules:[{required:!0,message:`请输入配置名称`}]})}),/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Select,{field:`provider`,label:`存储类型`,style:{width:`100%`},optionList:Un.filter(e=>[`local`,`s3`].includes(e.value)),onChange:e=>{if(e!==`local`&&e!==`s3`)return;let t=e;a(t);let n=h.formApi.current?.getValue(`objectAcl`);n&&!(Vn[t]??[]).includes(n)&&h.formApi.current?.setValue(`objectAcl`,`default`)},placeholder:`请选择存储类型`})})]}),/* @__PURE__ */ q(k,{gutter:16,children:[/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ q(f.Select,{field:`status`,label:`状态`,style:{width:`100%`},placeholder:`请选择状态`,children:[/* @__PURE__ */ K(_.Option,{value:`enabled`,children:`启用`}),/* @__PURE__ */ K(_.Option,{value:`disabled`,children:`禁用`})]})}),i===`s3`&&/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`basePath`,label:`基础路径`,placeholder:`例如 uploads / images`})})]}),/* @__PURE__ */ K(f.Slot,{label:`设为默认服务`,children:/* @__PURE__ */ K(y,{checked:o,onChange:s})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`remark`,label:`备注`,placeholder:`选填,说明该文件服务的用途`})})})]}),/* @__PURE__ */ q(f.Section,{text:`${Hn[i]} 连接配置`,children:[i===`local`&&/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`localRootPath`,label:`存储目录`,placeholder:`例如 storage/local 或 D:/uploads`,rules:[{required:!0,message:`请输入本地磁盘存储目录`}]})})}),i===`s3`&&/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(k,{gutter:16,children:[/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`s3Region`,label:`Region`,placeholder:`请输入 S3 Region`,rules:[{required:!0,message:`请输入 S3 Region`}]})}),/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`s3Bucket`,label:`Bucket`,placeholder:`请输入 S3 Bucket`,rules:[{required:!0,message:`请输入 S3 Bucket`}]})})]}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`s3Endpoint`,label:`Endpoint`,placeholder:`可选,兼容 S3 自定义存储`})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`s3AccessKeyId`,label:`Access Key ID`,placeholder:`请输入 Access Key ID`,rules:[{required:!0,message:`请输入 Access Key ID`}]})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(en,{field:`s3SecretAccessKey`,label:`Secret Access Key`,placeholder:h.isEdit?`留空表示不修改`:`请输入 Secret Access Key`,rules:h.isEdit?[]:[{required:!0,message:`请输入 Secret Access Key`}]})})}),/* @__PURE__ */ K(f.Checkbox,{field:`s3ForcePathStyle`,noLabel:!0,children:`强制路径样式(MinIO / Ceph 等兼容当需开启)`})]})]}),/* @__PURE__ */ q(f.Section,{text:`访问与权限`,children:[sa.includes(i)&&/* @__PURE__ */ K(f.RadioGroup,{field:`objectAcl`,label:`读写权限`,type:`button`,extraText:i===`s3`?`上传文件将按此权限设置对象 ACL。注意:AWS S3 新建桶默认禁用 ACL(Bucket owner enforced),启用前请先在桶设置中开启;MinIO / Cloudflare R2 不支持对象 ACL,请保持「继承 Bucket」。`:`上传文件将按此权限设置对象 ACL;「继承 Bucket」表示不单独指定、跟随 Bucket 权限。公共读 / 公共读写存在数据泄露风险,请谨慎选择。`,children:[`default`].map(e=>/* @__PURE__ */ K(v,{value:e,children:Bn[e]},e))}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Select,{field:`urlStrategy`,disabled:Mn,label:`访问策略`,style:{width:`100%`},extraText:`代理:文件流量经过服务端(兜底);公开直链:返回永久直连地址,要求对象可公开读;临时签名:按需签发限时直连地址,适合私有文件(本地磁盘 / SFTP 不支持)`,children:Kn.filter(e=>e.value===`proxy`).map(e=>/* @__PURE__ */ K(_.Option,{value:e.value,children:e.label},e.value))})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.InputNumber,{field:`presignedExpirySeconds`,disabled:Mn,label:`签名有效期(秒)`,style:{width:`100%`},min:Yn,max:Jn,extraText:`仅临时签名策略生效;修改只影响新签发的链接`})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`publicBaseUrl`,disabled:Mn,label:`访问域名(CDN)`,placeholder:`可选,例如 https://cdn.example.com,公开直链优先使用该域名`})})})]})]}),/* @__PURE__ */ K(ea,{config:c,onClose:()=>l(null)})]})}var oa,sa;function ca(){return(ca=e((()=>{$t(),l(),Jt(),Lt(),cn(),Ft(),Ht(),i(),Ct(),kt(),N(),na(),ge(),Mt(),Vt(),{Text:oa}=c,sa=[`s3`]})))()}function la(e){if(e===`success`)return`var(--arc-antd-color-success)`;if(e===`error`)return`var(--arc-antd-color-danger)`;if(e===`cancelled`)return`var(--arc-antd-color-disabled-text)`}function ua(e,t,n,r,i,a){let o=e=>i(n=>n.map(n=>n.uid===t?e(n):n)),s=()=>o(e=>({...e,progress:100,status:`success`})),c=e=>o(t=>n.aborted?{...t,status:`cancelled`}:{...t,status:`error`,errorMsg:e instanceof Error?e.message:`上传失败`});o(e=>({...e,status:`uploading`})),e.size>r?_r(e,{signal:n,onProgress:e=>o(t=>({...t,progress:e}))}).then(s).catch(c):a([e],e=>o(t=>({...t,progress:e})),n).then(s).catch(c)}async function da(e){try{let t,n=e.directUrl??(/^https?:\/\//.test(e.url)?e.url:null);if(n)t=n;else{let n=await Y(e.url);t=URL.createObjectURL(n)}return await new Promise(e=>{let r=new Image,i=()=>{n||URL.revokeObjectURL(t)};r.onload=()=>{i(),e({width:r.naturalWidth,height:r.naturalHeight})},r.onerror=()=>{i(),e(null)},r.src=t})}catch{return null}}function fa({active:e}){let t=vn(),{hasPermission:n}=En(),{preferences:r,setPreferences:i,canEditPreference:o}=yn(),l={keyword:``,provider:void 0,fileType:void 0,timeRange:null},u=gn(null),[f,m]=W([]),[g,_]=W(!1),v=gn(/* @__PURE__ */ new Map),{bind:y,bindKeyword:b,submittedParams:x,handleSearch:S,handleReset:C}=On({defaults:l,listKey:Qn.lists}),w=r.filesViewMode??`list`,te=jn({resetKey:w}),E=jn({pageSize:ga,pageSizeOpts:_a,resetKey:w}),{page:oe,pageSize:ce,setPage:O,setPageSize:k,buildPagination:ue}=w===`grid`?E:te,[A,j]=W([]),[de,N]=W(!1),[fe,P]=W(null),[pe,me]=W(null),he=or().data?.config??null,[ge,ve]=An(x.timeRange),ye=Dn({keyword:x.keyword,provider:hr.query.shape.provider.safeParse(x.provider).data,fileType:hr.query.shape.fileType.safeParse(x.fileType).data,startDate:ge,endDate:ve}),be=rr({page:oe,pageSize:ce,...ye},e),F=be.data??null,I=Ui(()=>F?.list??[]),xe=ar(),Se=er(),Ce=tr(),we=tr(),L=nr(fe?.id,!!fe),Te=L.data??fe,Ee=L.isFetching,De=e=>{o(`filesViewMode`)&&i({filesViewMode:e})},Oe=(e,t)=>{j(n=>t?[...n,e]:n.filter(t=>t!==e))},ke=e=>{let t=(F?.list??[]).map(e=>e.id);j(e?e=>{let n=[...e];for(let e of t)n.includes(e)||n.push(e);return n}:e=>e.filter(e=>!t.includes(e)))},Ae=e=>{P(e),me(null)};H(()=>{let e=L.data;e?.mimeType?.startsWith(`image/`)&&da(e).then(e=>{e&&me(e)})},[L.data]),H(()=>{if(g&&f.length>0&&f.every(ha)){let e=f.filter(e=>e.status===`success`).length,n=setTimeout(()=>{_(!1),e>0&&(M.success(e>1?`成功上传 ${e} 个文件`:`文件上传成功`),O(1),$n(t))},1e3);return()=>clearTimeout(n)}},[f,g,t,O]);let je=()=>{u.current?.click()},Me=e=>{let t=Array.from(e.target.files??[]);if(e.target.value=``,t.length===0)return;let n=t.map((e,t)=>({uid:`${e.name}-${Date.now()}-${t}`,name:e.name,size:e.size,progress:0,status:`pending`}));v.current.clear(),m(n),_(!0);for(let[e,r]of t.entries()){let t=new AbortController;v.current.set(n[e].uid,t),ua(r,n[e].uid,t.signal,Se,m,(e,t,n)=>xe.mutateAsync({files:e,onProgress:t,signal:n}))}},Ne=e=>{v.current.get(e)?.abort(gr)},Pe=async e=>{await Ce.mutateAsync([e.id]),M.success(`文件已删除`)},Fe=()=>{Dt({title:`确认删除选中的 ${A.length} 个文件?`,content:`删除后将同步尝试删除实际存储对象,无法恢复。`,run:()=>we.mutateAsync(A),successMessage:`批量删除成功`,onDeleted:()=>j([])})},Ie=async()=>{if(A.length!==0){N(!0);try{let e=await(await Sn.download(mr,{body:{ids:A}})).blob();if(!e)return;Nn(e,`files_${Date.now()}.zip`),M.success(`已打包 ${A.length} 个文件`)}catch{M.error(`批量下载失败`)}finally{N(!1)}}},Le=async e=>{await ie(e.directUrl??Xr(e.url),{success:`链接已复制`,error:`复制失败,请手动复制`})},Re=[{title:`文件名`,dataIndex:`originalName`,minWidth:220,ellipsis:{showTitle:!1},render:(e,t)=>{let n=$r(t.mimeType,e);return/* @__PURE__ */ K(Qi,{name:e,mimeType:t.mimeType,onClick:n?()=>void I.handlePreview(t):void 0})}},{title:`来源服务`,dataIndex:`storageName`,width:120,ellipsis:!0,render:(e,t)=>R(t.storageName)},{title:`MIME 类型`,dataIndex:`mimeType`,width:160,ellipsis:!0,render:R},{title:`大小`,dataIndex:`size`,width:100,align:`right`,render:e=>J(e)},It(`上传时间`,`createdAt`),{title:`上传人`,dataIndex:`uploaderName`,width:100,ellipsis:!0,render:R},Tt({width:180,desktopInlineKeys:[`preview`,`download`],actions:e=>Ti(e,{preview:I,onDetail:e=>{Ae(e)},onCopyUrl:Le,onDelete:Pe,canDelete:n(`system:file:delete`)})})],ze=d({keyword:/* @__PURE__ */ K(ne,{placeholder:`搜索文件名 / 对象键 / 文件服务`,...b(`keyword`),style:{width:`min(280px, 100%)`}}),filters:/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(le,{placeholder:`全部存储类型`,items:Un.filter(e=>[`local`,`s3`].includes(e.value)),...y(`provider`),width:140}),/* @__PURE__ */ K(le,{placeholder:`全部文件类型`,items:Wn,...y(`fileType`),width:140}),/* @__PURE__ */ K(ae,{searchLabel:`上传时间`,type:`dateTimeRange`,...y(`timeRange`)})]}),onSearch:S,onReset:C,create:n(`system:file:upload`)&&/* @__PURE__ */ K(D,{type:`primary`,icon:/* @__PURE__ */ K(xt,{size:14}),loading:g&&f.some(e=>e.status===`uploading`||e.status===`pending`),disabled:!he,onClick:je,children:`上传文件`}),actions:A.length>0?/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(D,{type:`tertiary`,theme:`light`,icon:/* @__PURE__ */ K(Pr,{size:14}),loading:de,onClick:Ie,children:[`批量下载 (`,A.length,`)`]}),n(`system:file:delete`)&&/* @__PURE__ */ K(_e,{count:A.length,loading:we.isPending,onClick:Fe}),/* @__PURE__ */ K(D,{type:`tertiary`,theme:`light`,icon:/* @__PURE__ */ K(qt,{size:12}),onClick:()=>j([]),children:`取消选择`})]}):null,filterTitle:`文件筛选`,actionTitle:`文件操作`});return e?/* @__PURE__ */ q(G,{children:[w===`grid`&&/* @__PURE__ */ K(ee,{config:ze}),/* @__PURE__ */ K(`input`,{ref:u,type:`file`,hidden:!0,multiple:!0,onChange:Me}),/* @__PURE__ */ q(`div`,{className:`files-default-tip`,style:{padding:`8px 0`},children:[/* @__PURE__ */ q(h,{children:[/* @__PURE__ */ K(pa,{strong:!0,children:`默认文件服务:`}),he?/* @__PURE__ */ K(pa,{children:he.name}):/* @__PURE__ */ K(pa,{type:`danger`,children:`未配置默认文件服务,请先前往"文件配置"设置。`})]}),o(`filesViewMode`)&&/* @__PURE__ */ q(h,{spacing:0,children:[/* @__PURE__ */ K(D,{size:`small`,theme:w===`list`?`solid`:`light`,type:w===`list`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(yt,{size:14}),style:{borderRadius:`4px 0 0 4px`},onClick:()=>De(`list`)}),/* @__PURE__ */ K(D,{size:`small`,theme:w===`grid`?`solid`:`light`,type:w===`grid`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(re,{size:14}),style:{borderRadius:`0 4px 4px 0`},onClick:()=>De(`grid`)})]})]}),/* @__PURE__ */ K(B,{title:`上传进度`,visible:g,onCancel:()=>_(!1),footer:f.every(ha)?/* @__PURE__ */ K(D,{type:`primary`,onClick:()=>_(!1),children:`关闭`}):null,width:480,keepDOM:!1,children:/* @__PURE__ */ K(`div`,{style:{display:`flex`,flexDirection:`column`,gap:14,padding:`4px 0`},children:f.map(e=>/* @__PURE__ */ q(`div`,{children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:4},children:[/* @__PURE__ */ q(h,{spacing:6,style:{overflow:`hidden`,flex:1,minWidth:0},children:[/* @__PURE__ */ K(`span`,{style:{display:`flex`,alignItems:`center`,flexShrink:0},children:Qr(void 0,14,e.name)}),/* @__PURE__ */ K(c.Text,{ellipsis:{showTooltip:!0},style:{fontSize:13,flex:1,minWidth:0},children:e.name})]}),/* @__PURE__ */ q(h,{spacing:6,style:{flexShrink:0,marginLeft:8},children:[/* @__PURE__ */ K(c.Text,{type:`tertiary`,size:`small`,children:J(e.size)}),e.status===`uploading`&&/* @__PURE__ */ q(c.Text,{size:`small`,children:[e.progress,`%`]}),e.status===`success`&&/* @__PURE__ */ K(ht,{size:14,color:`var(--arc-antd-color-success)`}),e.status===`error`&&/* @__PURE__ */ K(T,{content:e.errorMsg,children:/* @__PURE__ */ K(_t,{size:14,color:`var(--arc-antd-color-danger)`})}),e.status===`cancelled`&&/* @__PURE__ */ K(c.Text,{type:`tertiary`,size:`small`,children:`已取消`}),!ha(e)&&/* @__PURE__ */ K(T,{content:`取消上传`,children:/* @__PURE__ */ K(D,{theme:`borderless`,type:`tertiary`,size:`small`,icon:/* @__PURE__ */ K(qt,{size:14}),"aria-label":`取消上传 ${e.name}`,onClick:()=>Ne(e.uid)})})]})]}),/* @__PURE__ */ K(a,{percent:e.progress,type:`line`,size:`small`,stroke:la(e.status),showInfo:!1,style:{margin:0}})]},e.uid))})}),/* @__PURE__ */ K(Ri,{preview:I}),/* @__PURE__ */ K(Bi,{visible:!!fe,file:Te,loading:Ee,resolveUrl:e=>e.directUrl??Xr(e.url),onCopyUrl:e=>void Le(e),onClose:()=>{P(null),me(null)},extraRows:pe?[{key:`分辨率`,value:`${pe.width} × ${pe.height} px`}]:[]}),w===`list`?/* @__PURE__ */ K(Ut,{searchConfig:ze,columns:Re,empty:`暂无文件记录`,...At(be,{pagination:ue,rowSelection:n(`system:file:delete`)?{selectedRowKeys:A,onChange:e=>j((e??[]).map(String))}:void 0})}):/* @__PURE__ */ q(G,{children:[n(`system:file:delete`)&&(F?.list??[]).length>0&&(()=>{let e=(F?.list??[]).map(e=>e.id),t=e.filter(e=>A.includes(e)),n=t.length===e.length,r=t.length>0&&!n;return/* @__PURE__ */ q(`div`,{className:`files-grid-select-bar`,style:{display:`flex`,alignItems:`center`,gap:8},children:[/* @__PURE__ */ K(p,{checked:n,indeterminate:r,onChange:()=>ke(!n),children:/* @__PURE__ */ q(`span`,{style:{fontSize:14,color:`var(--arc-antd-color-text-0)`},children:[`全选当前页`,t.length>0&&/* @__PURE__ */ q(`span`,{style:{marginLeft:4,color:`var(--arc-antd-color-text-2)`,fontWeight:400},children:[`(`,t.length,`/`,e.length,`)`]})]})}),A.length>0&&/* @__PURE__ */ q(D,{size:`small`,theme:`light`,type:`tertiary`,icon:/* @__PURE__ */ K(qt,{size:12}),onClick:()=>j([]),children:[`已选 `,A.length,` 项,取消选择`]})]})})(),/* @__PURE__ */ K(s,{grid:{gutter:[6,8],xs:8,sm:6,md:4,lg:3,xl:2,xxl:2},dataSource:F?.list??[],loading:be.isFetching,split:!1,emptyContent:/* @__PURE__ */ K(`div`,{className:`files-grid-empty`,children:`暂无文件记录`}),renderItem:e=>/* @__PURE__ */ K(s.Item,{style:{padding:0,height:`100%`},children:/* @__PURE__ */ K(Xi,{file:e,selected:A.includes(e.id),canSelect:n(`system:file:delete`),onSelect:Oe,onPreview:I.handlePreview,onDownload:I.handleDownload,onDelete:Pe,onDetail:Ae,onCopyUrl:Le,canDelete:n(`system:file:delete`),previewLoading:I.previewLoadingId===e.id})},e.id)}),(F?.total??0)>0&&/* @__PURE__ */ K(`div`,{className:`files-grid-pagination`,children:/* @__PURE__ */ K(se,{currentPage:oe,pageSize:ce,total:F?.total??0,onPageChange:e=>{O(e)},onPageSizeChange:e=>{k(e),O(1)},showSizeChanger:!0,showTotal:!0,pageSizeOpts:_a})})]})]}):null}var pa,ma,ha,ga,_a;function va(){return(va=e((()=>{Qt(),Hi(),l(),bt(),Fr(),te(),vt(),mt(),gt(),Gt(),X(),Ei(),zi(),Wi(),Zi(),$i(),Ft(),Ht(),wt(),ge(),Et(),i(),ce(),O(),{Text:pa}=c,ma=[`pending`,`uploading`],ha=e=>!ma.includes(e.status),ga=60,_a=[60,120,240]})))()}var ya;function ba(){return(ba=e((()=>{ke(),Ne(),ya=class extends De{_getDefaultSeriesSpec(e){let t=super._getDefaultSeriesSpec(e,[`point`,`line`,`activePoint`,`sampling`,`samplingFactor`,`pointDis`,`pointDisMul`,`markOverlap`,`lineLabel`]);return t.seriesMark=e.seriesMark??`line`,t}transformSpec(e){super.transformSpec(e),L(e)}}})))()}var Q,xa;function Sa(){return(Sa=e((()=>{Ve(),fn(),nt(),ba(),ze(),Te(),Ae(),ye(),Xe(),we(),I(),ct(),lt(),Q=class extends be{constructor(){super(...arguments),this.transformerConstructor=ya,this.type=`line`,this.seriesType=Ke.line}_setModelOption(){this._modelOption.getDimensionInfo=Se,this._modelOption.getDimensionInfoByValue=Me,this._modelOption.getRectByDimensionData=Re}},Q.type=`line`,Q.seriesType=Ke.line,Q.transformerConstructor=ya,un(Q,Pe),xa=()=>{ot(),Ie(),Ue(),Ye(),je(),dn(),et.registerChart(Q.type,Q)}})))()}var Ca;function wa(){return(wa=e((()=>{Ge(),Sa(),Ee(),xe(),at(),Ca=Ce(`LineChart`,{type:`line`,vchartConstructor:rt},[xa,Oe,...Le])})))()}function Ta({value:e,max:t,minPercent:n=0,color:r,fillOpacity:i,track:a,height:o=8,radius:s,title:c,className:l,style:u}){let d=Number.isFinite(e)&&Number.isFinite(t)&&t>0?e/t:0,f=Math.min(100,Math.max(e>0?n:0,d*100)),p=[`zx-data-bar`,l].filter(Boolean).join(` `),m={"--zx-bar-height":`${o}px`,"--zx-bar-scale":f/100,...r?{"--zx-bar-stroke":r}:{},...i===void 0?{}:{"--zx-bar-opacity":i},...a?{"--zx-bar-track":a}:{},...s===void 0?{}:{"--zx-bar-radius":typeof s==`number`?`${s}px`:s},...u};return/* @__PURE__ */ K(`div`,{className:p,style:m,title:c,"aria-hidden":`true`,children:/* @__PURE__ */ K(`span`,{className:`zx-data-bar__fill`})})}function Ea(){return(Ea=e((()=>{})))()}function Da(){let e=st(),t=ir(),n=t.data??null,r=n?.summary,i=r?.totalFiles??0,a=U(()=>(n?.providerStats??[]).map((e,t)=>({...e,providerLabel:Oa[e.provider]??e.provider,fill:ka[t%ka.length]})),[n]),s=U(()=>(n?.uploaderStats??[]).map(e=>({...e,sizeLabel:J(e.size)})),[n]),c=U(()=>$e({data:a,xField:`providerLabel`,series:[{field:`count`,name:`文件数`,color:`#3b82f6`}],palette:e,horizontal:!0,categoryAxisWidth:80,colorByDatum:e=>String(e?.fill),tooltip:{value:e=>`${e} 个文件`}}),[e,a]),l=U(()=>We({data:n?.monthlyStats??[],xField:`month`,series:[{field:`count`,name:`新增文件`,color:`#3b82f6`}],palette:e,point:!0,tooltip:{value:e=>`${e} 个`}}),[e,n]),u=U(()=>$e({data:n?.sizeRangeStats??[],xField:`range`,series:[{field:`count`,name:`文件数`,color:`#10b981`}],palette:e,tooltip:{value:e=>`${e} 个`}}),[e,n]),d=U(()=>$e({data:s,xField:`username`,series:[{field:`count`,name:`文件数`,color:`#8b5cf6`}],palette:e,horizontal:!0,categoryAxisWidth:80,tooltip:{value:e=>`${e} 个文件`}}),[e,s]);return/* @__PURE__ */ K(o,{spinning:t.isFetching,children:/* @__PURE__ */ q(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[/* @__PURE__ */ q(Qe,{children:[/* @__PURE__ */ K(it,{title:`文件总数`,value:i>0?i.toLocaleString():z}),/* @__PURE__ */ K(it,{title:`占用空间`,value:r?J(r.totalSize):z}),/* @__PURE__ */ K(it,{title:`今日新增`,value:r?.todayCount==null?z:r.todayCount.toLocaleString(),sub:`今日共上传`}),/* @__PURE__ */ K(it,{title:`本月新增`,value:r?.thisMonthCount==null?z:r.thisMonthCount.toLocaleString(),sub:`本月共上传`})]}),/* @__PURE__ */ K(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(min(160px, 100%), 1fr))`,gap:12},children:Aa.map(({type:e,label:t,Icon:r,color:a,bgColor:o})=>{let s=n?.typeStats.find(t=>t.type===e),c=s?.count??0,l=s?.size??0,u=i>0?c/i*100:0;return/* @__PURE__ */ q(`div`,{className:`zx-panel`,style:{padding:16,display:`flex`,flexDirection:`column`,gap:10},children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`flex-start`,gap:10},children:[/* @__PURE__ */ K(`div`,{style:{width:38,height:38,borderRadius:`var(--arc-antd-border-radius-large)`,background:o,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:/* @__PURE__ */ K(r,{size:19,color:a})}),/* @__PURE__ */ q(`div`,{style:{flex:1,minWidth:0},children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`baseline`,justifyContent:`space-between`,gap:4},children:[/* @__PURE__ */ K(`span`,{style:{fontSize:13,fontWeight:600,color:`var(--arc-antd-color-text-0)`},children:t}),/* @__PURE__ */ K(`span`,{style:{fontSize:18,fontWeight:700,color:`var(--arc-antd-color-text-0)`,flexShrink:0},children:c.toLocaleString()})]}),/* @__PURE__ */ K(`div`,{style:{fontSize:11,color:`var(--arc-antd-color-text-2)`,marginTop:3},children:J(l)})]})]}),/* @__PURE__ */ q(`div`,{children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:5},children:[/* @__PURE__ */ K(`span`,{style:{fontSize:11,color:`var(--arc-antd-color-text-2)`},children:`占比`}),/* @__PURE__ */ q(`span`,{style:{fontSize:11,fontWeight:600,color:a},children:[u.toFixed(1),`%`]})]}),/* @__PURE__ */ K(Ta,{value:u,max:100,color:a,height:5})]})]},e)})}),/* @__PURE__ */ q(`div`,{className:`chart-grid`,children:[/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`存储类型分布`}),/* @__PURE__ */ K(Fe,{...c,options:Ze,height:220})]}),/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`月度上传趋势(近 12 个月)`}),/* @__PURE__ */ K(Ca,{...l,options:Ze,height:220})]})]}),/* @__PURE__ */ q(`div`,{className:`chart-grid`,children:[/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`文件大小分布`}),/* @__PURE__ */ K(Fe,{...u,options:Ze,height:220})]}),n&&n.uploaderStats.length>0&&/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`Top 上传人(按文件数)`}),/* @__PURE__ */ K(Fe,{...d,options:Ze,height:220})]})]})]})})}var Oa,ka,Aa,$;function ja(){return(ja=e((()=>{l(),F(),wa(),He(),Be(),qe(),tt(),Cr(),Wr(),br(),Er(),kr(),Ea(),Ft(),Oa=Hn,ka=[`#3b82f6`,`#10b981`,`#f59e0b`,`#ef4444`,`#8b5cf6`,`#06b6d4`,`#f97316`,`#84cc16`,`#ec4899`],Aa=[{type:`image`,label:`图片`,Icon:Sr,color:`#3b82f6`,bgColor:`rgba(59,130,246,0.12)`},{type:`video`,label:`视频`,Icon:Ur,color:`#8b5cf6`,bgColor:`rgba(139,92,246,0.12)`},{type:`audio`,label:`音频`,Icon:yr,color:`#f59e0b`,bgColor:`rgba(245,158,11,0.12)`},{type:`document`,label:`文档`,Icon:Tr,color:`#10b981`,bgColor:`rgba(16,185,129,0.12)`},{type:`other`,label:`其他`,Icon:Or,color:`#6b7280`,bgColor:`rgba(107,114,128,0.12)`}],$={fontSize:14,fontWeight:600,color:`var(--arc-antd-color-text-0)`,marginBottom:12}})))()}var Ma=/* @__PURE__ */ t({default:()=>Na});function Na(){let{hasPermission:e}=En(),t=e(`system:file:config`),n=e(`system:file:list`),r=U(()=>Pa.filter(e=>e.key===`config`?t:n),[t,n]),i=an(r.map(e=>e.key),n?`list`:`config`),a=i.active;return r.length===0?/* @__PURE__ */ K(x,{description:`无访问权限`}):/* @__PURE__ */ K(`div`,{className:`page-container page-container--stretch`,children:/* @__PURE__ */ K(me,{defaultSize:260,minSize:200,maxSize:400,persistKey:`file-management`,style:{flex:1,minHeight:0,overflow:`hidden`},showDetail:a!==null,onBack:i.back,onResponsiveChange:i.responsiveChange,master:/* @__PURE__ */ K(tn,{title:`文件管理`,rawBody:!0,children:/* @__PURE__ */ K(on,{sections:r,active:a,onSelect:i.select})}),detail:/* @__PURE__ */ q(me.Body,{padding:a===`config`?0:16,scroll:a===`stats`?`auto`:`hidden`,style:{display:`flex`,flexDirection:`column`},children:[n&&/* @__PURE__ */ K(fa,{active:a===`list`}),t&&a===`config`&&/* @__PURE__ */ K(aa,{}),n&&a===`stats`&&/* @__PURE__ */ K(Da,{})]})})})}var Pa;function Fa(){return(Fa=e((()=>{Je(),Mr(),Vr(),l(),pe(),nn(),rn(),sn(),ca(),va(),ja(),Pa=[{key:`config`,title:`文件配置`,description:`本地存储与对象存储服务`,icon:Br},{key:`list`,title:`文件列表`,description:`上传、查看和管理文件`,icon:jr},{key:`stats`,title:`统计分析`,description:`存储用量与文件分布`,icon:ve}]})))()}export{Rn as a,ei as i,Fa as n,X as r,Ma as t};
65
- //# sourceMappingURL=FilesPage-D_iYsUwl.js.map
64
+ A(),Hr={name:`video`,size:24,node:[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]},Hr.node,Ur=S(Hr)})))()}function Gr(e){let t=e.toLowerCase();if(qr[t])return qr[t];let n=t.lastIndexOf(`.`),r=n>=0?t.slice(n+1):``;return Kr[r]??Jr}var Kr,qr,Jr;function Yr(){return(Yr=e((()=>{Kr={ts:`vscode-icons:file-type-typescript`,tsx:`vscode-icons:file-type-typescript`,js:`vscode-icons:file-type-js-official`,jsx:`vscode-icons:file-type-js-official`,mjs:`vscode-icons:file-type-js-official`,cjs:`vscode-icons:file-type-js-official`,json:`vscode-icons:file-type-json`,jsonc:`vscode-icons:file-type-json`,json5:`vscode-icons:file-type-json`,md:`vscode-icons:file-type-markdown`,mdx:`vscode-icons:file-type-markdown`,markdown:`vscode-icons:file-type-markdown`,html:`vscode-icons:file-type-html`,htm:`vscode-icons:file-type-html`,xhtml:`vscode-icons:file-type-html`,css:`vscode-icons:file-type-css`,scss:`vscode-icons:file-type-scss`,sass:`vscode-icons:file-type-sass`,less:`vscode-icons:file-type-less`,styl:`vscode-icons:file-type-stylus`,stylus:`vscode-icons:file-type-stylus`,py:`vscode-icons:file-type-python`,pyi:`vscode-icons:file-type-python`,go:`vscode-icons:file-type-go`,rs:`vscode-icons:file-type-rust`,java:`vscode-icons:file-type-java`,c:`vscode-icons:file-type-c`,h:`vscode-icons:file-type-c`,cpp:`vscode-icons:file-type-cpp`,cc:`vscode-icons:file-type-cpp`,cxx:`vscode-icons:file-type-cpp`,hpp:`vscode-icons:file-type-cpp`,hxx:`vscode-icons:file-type-cpp`,cs:`vscode-icons:file-type-csharp`,php:`vscode-icons:file-type-php`,rb:`vscode-icons:file-type-ruby`,swift:`vscode-icons:file-type-swift`,kt:`vscode-icons:file-type-kotlin`,kts:`vscode-icons:file-type-kotlin`,dart:`vscode-icons:file-type-dartlang`,scala:`vscode-icons:file-type-scala`,lua:`vscode-icons:file-type-lua`,r:`vscode-icons:file-type-r`,yml:`vscode-icons:file-type-yaml`,yaml:`vscode-icons:file-type-yaml`,xml:`vscode-icons:file-type-xml`,xsl:`vscode-icons:file-type-xml`,xslt:`vscode-icons:file-type-xml`,sql:`vscode-icons:file-type-sql`,sh:`vscode-icons:file-type-shell`,bash:`vscode-icons:file-type-shell`,zsh:`vscode-icons:file-type-shell`,fish:`vscode-icons:file-type-shell`,ps1:`vscode-icons:file-type-powershell`,psm1:`vscode-icons:file-type-powershell`,bat:`vscode-icons:file-type-bat`,cmd:`vscode-icons:file-type-bat`,env:`vscode-icons:file-type-dotenv`,ini:`vscode-icons:file-type-config`,conf:`vscode-icons:file-type-config`,cfg:`vscode-icons:file-type-config`,toml:`vscode-icons:file-type-toml`,txt:`vscode-icons:file-type-text`,log:`vscode-icons:file-type-log`,lock:`vscode-icons:default-file`,png:`vscode-icons:file-type-image`,jpg:`vscode-icons:file-type-image`,jpeg:`vscode-icons:file-type-image`,gif:`vscode-icons:file-type-image`,bmp:`vscode-icons:file-type-image`,webp:`vscode-icons:file-type-image`,ico:`vscode-icons:file-type-image`,tiff:`vscode-icons:file-type-image`,svg:`vscode-icons:file-type-svg`,mp4:`vscode-icons:file-type-video`,mov:`vscode-icons:file-type-video`,avi:`vscode-icons:file-type-video`,mkv:`vscode-icons:file-type-video`,webm:`vscode-icons:file-type-video`,mp3:`vscode-icons:file-type-audio`,wav:`vscode-icons:file-type-audio`,ogg:`vscode-icons:file-type-audio`,flac:`vscode-icons:file-type-audio`,zip:`vscode-icons:file-type-zip`,tar:`vscode-icons:file-type-zip`,gz:`vscode-icons:file-type-zip`,rar:`vscode-icons:file-type-zip`,"7z":`vscode-icons:file-type-zip`,pdf:`vscode-icons:file-type-pdf2`,vue:`vscode-icons:file-type-vue`,svelte:`vscode-icons:file-type-svelte`,graphql:`vscode-icons:file-type-graphql`,gql:`vscode-icons:file-type-graphql`,prisma:`vscode-icons:file-type-prisma`,proto:`vscode-icons:file-type-protobuf`,wasm:`vscode-icons:file-type-wasm`,pem:`vscode-icons:file-type-cert`,crt:`vscode-icons:file-type-cert`,cer:`vscode-icons:file-type-cert`,key:`vscode-icons:file-type-key`,exe:`vscode-icons:file-type-binary`,dll:`vscode-icons:file-type-binary`,so:`vscode-icons:file-type-binary`,dylib:`vscode-icons:file-type-binary`,woff:`vscode-icons:file-type-font`,woff2:`vscode-icons:file-type-font`,ttf:`vscode-icons:file-type-font`,eot:`vscode-icons:file-type-font`,otf:`vscode-icons:file-type-font`,ipynb:`vscode-icons:file-type-jupyter`,db:`vscode-icons:file-type-db`,sqlite:`vscode-icons:file-type-db`,sqlite3:`vscode-icons:file-type-db`,doc:`vscode-icons:file-type-word`,docx:`vscode-icons:file-type-word`,xls:`vscode-icons:file-type-excel`,xlsx:`vscode-icons:file-type-excel`,csv:`vscode-icons:file-type-excel2`,tsv:`vscode-icons:file-type-excel2`,ppt:`vscode-icons:file-type-powerpoint`,pptx:`vscode-icons:file-type-powerpoint`,erb:`vscode-icons:file-type-erb`,haml:`vscode-icons:file-type-haml`,slim:`vscode-icons:file-type-slim`,jinja:`vscode-icons:file-type-jinja`,j2:`vscode-icons:file-type-jinja`,twig:`vscode-icons:file-type-twig`,astro:`vscode-icons:file-type-astro`,ex:`vscode-icons:file-type-elixir`,exs:`vscode-icons:file-type-elixir`,hs:`vscode-icons:file-type-haskell`,lhs:`vscode-icons:file-type-haskell`,erl:`vscode-icons:file-type-erlang`,hrl:`vscode-icons:file-type-erlang`,clj:`vscode-icons:file-type-clojure`,cljs:`vscode-icons:file-type-clojure`,cljc:`vscode-icons:file-type-clojure`,edn:`vscode-icons:file-type-clojure`,fs:`vscode-icons:file-type-fsharp`,fsi:`vscode-icons:file-type-fsharp`,fsx:`vscode-icons:file-type-fsharp`,ml:`vscode-icons:file-type-ocaml`,mli:`vscode-icons:file-type-ocaml`,nim:`vscode-icons:file-type-nim`,zig:`vscode-icons:file-type-zig`,cr:`vscode-icons:file-type-crystal`,d:`vscode-icons:file-type-dlang`,coffee:`vscode-icons:file-type-coffeescript`,tf:`vscode-icons:file-type-terraform`,tfvars:`vscode-icons:file-type-terraform`,hcl:`vscode-icons:file-type-terraform`,nix:`vscode-icons:file-type-nix`,jar:`vscode-icons:file-type-java`,class:`vscode-icons:file-type-java`},qr={dockerfile:`vscode-icons:file-type-docker`,"docker-compose.yml":`vscode-icons:file-type-docker`,"docker-compose.yaml":`vscode-icons:file-type-docker`,"docker-compose.override.yml":`vscode-icons:file-type-docker`,makefile:`vscode-icons:file-type-makefile`,".gitignore":`vscode-icons:file-type-git`,".gitattributes":`vscode-icons:file-type-git`,".gitmodules":`vscode-icons:file-type-git`,".env":`vscode-icons:file-type-dotenv`,".env.local":`vscode-icons:file-type-dotenv`,".env.example":`vscode-icons:file-type-dotenv`,".env.development":`vscode-icons:file-type-dotenv`,".env.production":`vscode-icons:file-type-dotenv`,".env.test":`vscode-icons:file-type-dotenv`,"package.json":`vscode-icons:file-type-npm`,"package-lock.json":`vscode-icons:file-type-npm`,"yarn.lock":`vscode-icons:file-type-yarn`,".yarnrc":`vscode-icons:file-type-yarn`,".yarnrc.yml":`vscode-icons:file-type-yarn`,"pnpm-lock.yaml":`vscode-icons:file-type-pnpm`,".pnpmfile.cjs":`vscode-icons:file-type-pnpm`,"bun.lockb":`vscode-icons:file-type-bun`,"bunfig.toml":`vscode-icons:file-type-bun`,"tsconfig.json":`vscode-icons:file-type-tsconfig`,"tsconfig.node.json":`vscode-icons:file-type-tsconfig`,"tsconfig.base.json":`vscode-icons:file-type-tsconfig`,"jsconfig.json":`vscode-icons:file-type-jsconfig`,"vite.config.ts":`vscode-icons:file-type-vite`,"vite.config.js":`vscode-icons:file-type-vite`,"vite.config.mts":`vscode-icons:file-type-vite`,"vite.config.mjs":`vscode-icons:file-type-vite`,"vitest.config.ts":`vscode-icons:file-type-vitest`,"vitest.config.js":`vscode-icons:file-type-vitest`,"webpack.config.js":`vscode-icons:file-type-webpack`,"webpack.config.ts":`vscode-icons:file-type-webpack`,"rollup.config.js":`vscode-icons:file-type-rollup`,"rollup.config.ts":`vscode-icons:file-type-rollup`,"eslint.config.js":`vscode-icons:file-type-eslint`,"eslint.config.ts":`vscode-icons:file-type-eslint`,"eslint.config.mjs":`vscode-icons:file-type-eslint`,".eslintrc":`vscode-icons:file-type-eslint`,".eslintrc.js":`vscode-icons:file-type-eslint`,".eslintrc.json":`vscode-icons:file-type-eslint`,".eslintrc.yml":`vscode-icons:file-type-eslint`,".eslintignore":`vscode-icons:file-type-eslint`,".prettierrc":`vscode-icons:file-type-prettier`,".prettierrc.js":`vscode-icons:file-type-prettier`,".prettierrc.json":`vscode-icons:file-type-prettier`,".prettierrc.yml":`vscode-icons:file-type-prettier`,".prettierignore":`vscode-icons:file-type-prettier`,"readme.md":`vscode-icons:file-type-markdown`,readme:`vscode-icons:file-type-markdown`,license:`vscode-icons:file-type-license`,"license.md":`vscode-icons:file-type-license`,licence:`vscode-icons:file-type-license`,"changelog.md":`vscode-icons:file-type-log`,changelog:`vscode-icons:file-type-log`,".editorconfig":`vscode-icons:file-type-editorconfig`,".nvmrc":`vscode-icons:file-type-node`,".node-version":`vscode-icons:file-type-node`,"jest.config.js":`vscode-icons:file-type-jest`,"jest.config.ts":`vscode-icons:file-type-jest`,"babel.config.js":`vscode-icons:file-type-babel`,"babel.config.json":`vscode-icons:file-type-babel`,".babelrc":`vscode-icons:file-type-babel`,"tailwind.config.js":`vscode-icons:file-type-tailwind`,"tailwind.config.ts":`vscode-icons:file-type-tailwind`,"postcss.config.js":`vscode-icons:file-type-postcss`,"next.config.js":`vscode-icons:file-type-next`,"next.config.ts":`vscode-icons:file-type-next`,"nuxt.config.ts":`vscode-icons:file-type-nuxt`,"nuxt.config.js":`vscode-icons:file-type-nuxt`,"astro.config.mjs":`vscode-icons:file-type-astro`,"drizzle.config.ts":`vscode-icons:file-type-drizzle-orm`,"drizzle.config.js":`vscode-icons:file-type-drizzle-orm`,"requirements.txt":`vscode-icons:file-type-python`,"requirements-dev.txt":`vscode-icons:file-type-python`,"setup.py":`vscode-icons:file-type-python`,"setup.cfg":`vscode-icons:file-type-python`,"pyproject.toml":`vscode-icons:file-type-python`,pipfile:`vscode-icons:file-type-python`,"pipfile.lock":`vscode-icons:file-type-python`,"tox.ini":`vscode-icons:file-type-python`,".python-version":`vscode-icons:file-type-python`,"conda.yml":`vscode-icons:file-type-python`,"environment.yml":`vscode-icons:file-type-python`,"cargo.toml":`vscode-icons:file-type-rust`,"cargo.lock":`vscode-icons:file-type-rust`,"rust-toolchain":`vscode-icons:file-type-rust`,"rust-toolchain.toml":`vscode-icons:file-type-rust`,"go.mod":`vscode-icons:file-type-go`,"go.sum":`vscode-icons:file-type-go`,"go.work":`vscode-icons:file-type-go`,"pom.xml":`vscode-icons:file-type-maven`,"build.gradle":`vscode-icons:file-type-gradle`,"build.gradle.kts":`vscode-icons:file-type-gradle`,"settings.gradle":`vscode-icons:file-type-gradle`,"settings.gradle.kts":`vscode-icons:file-type-gradle`,"gradle.properties":`vscode-icons:file-type-gradle`,gradlew:`vscode-icons:file-type-gradle`,gemfile:`vscode-icons:file-type-ruby`,"gemfile.lock":`vscode-icons:file-type-ruby`,rakefile:`vscode-icons:file-type-ruby`,".ruby-version":`vscode-icons:file-type-ruby`,"composer.json":`vscode-icons:file-type-composer`,"composer.lock":`vscode-icons:file-type-composer`,".htaccess":`vscode-icons:file-type-apache`,".npmrc":`vscode-icons:file-type-npm`,".npmignore":`vscode-icons:file-type-npm`,"commitlint.config.js":`vscode-icons:file-type-commitlint`,"commitlint.config.ts":`vscode-icons:file-type-commitlint`,"commitlint.config.cjs":`vscode-icons:file-type-commitlint`,".commitlintrc":`vscode-icons:file-type-commitlint`,".commitlintrc.json":`vscode-icons:file-type-commitlint`,".czrc":`vscode-icons:file-type-commitlint`,".cz.json":`vscode-icons:file-type-commitlint`,".stylelintrc":`vscode-icons:file-type-stylelint`,".stylelintrc.json":`vscode-icons:file-type-stylelint`,".stylelintrc.yml":`vscode-icons:file-type-stylelint`,".stylelintignore":`vscode-icons:file-type-stylelint`,"stylelint.config.js":`vscode-icons:file-type-stylelint`,"nx.json":`vscode-icons:file-type-nx`,"turbo.json":`vscode-icons:file-type-turbo`,"lerna.json":`vscode-icons:file-type-lerna`,"rush.json":`vscode-icons:file-type-npm`,"renovate.json":`vscode-icons:file-type-renovate`,".renovaterc":`vscode-icons:file-type-renovate`,".renovaterc.json":`vscode-icons:file-type-renovate`,".travis.yml":`vscode-icons:file-type-travis`,"codecov.yml":`vscode-icons:file-type-yaml`,"robots.txt":`vscode-icons:file-type-robots`,"manifest.json":`vscode-icons:file-type-manifest`,".webmanifest":`vscode-icons:file-type-manifest`,"firebase.json":`vscode-icons:file-type-firebase`,".firebaserc":`vscode-icons:file-type-firebase`,"vercel.json":`vscode-icons:file-type-vercel`,"netlify.toml":`vscode-icons:file-type-netlify`,"fly.toml":`vscode-icons:file-type-toml`,"capacitor.config.ts":`vscode-icons:file-type-capacitor`,"capacitor.config.json":`vscode-icons:file-type-capacitor`,"electron-builder.config.js":`vscode-icons:file-type-electron`,"electron-builder.yml":`vscode-icons:file-type-electron`,"main.tf":`vscode-icons:file-type-terraform`,"variables.tf":`vscode-icons:file-type-terraform`,"outputs.tf":`vscode-icons:file-type-terraform`,"terraform.tfvars":`vscode-icons:file-type-terraform`},Jr=`vscode-icons:default-file`})))()}function Xr(e){return/^https?:\/\//.test(e)?e:`${In.apiBaseUrl||globalThis.location.origin}${e}`}function Zr(e){let t=e.toLowerCase();return t===`image/svg+xml`?`vscode-icons:file-type-svg`:t.startsWith(`image/`)?`vscode-icons:file-type-image`:t.startsWith(`video/`)?`vscode-icons:file-type-video`:t.startsWith(`audio/`)?`vscode-icons:file-type-audio`:t===`application/pdf`||ri(t)?`vscode-icons:file-type-pdf2`:t.includes(`msword`)||t.includes(`wordprocessingml`)||t.includes(`vnd.ms-word`)||t.includes(`opendocument.text`)||t.includes(`rtf`)?`vscode-icons:file-type-word`:t.includes(`presentationml`)||t.includes(`powerpoint`)||t.includes(`opendocument.presentation`)?`vscode-icons:file-type-powerpoint`:t===`text/csv`||t===`application/csv`||t===`text/tab-separated-values`?`vscode-icons:file-type-excel2`:t.includes(`spreadsheetml`)||t.includes(`excel`)||t.includes(`opendocument.spreadsheet`)||t.includes(`apple.numbers`)||t.includes(`iwork-numbers`)?`vscode-icons:file-type-excel`:gi(t)?`vscode-icons:file-type-zip`:t.startsWith(`font/`)||t.includes(`ttf`)||t.includes(`woff`)||t.includes(`opentype`)?`vscode-icons:file-type-font`:t.includes(`json`)?`vscode-icons:file-type-json`:t.includes(`javascript`)?`vscode-icons:file-type-js-official`:t.includes(`typescript`)?`vscode-icons:file-type-typescript`:t.includes(`html`)?`vscode-icons:file-type-html`:t.includes(`css`)?`vscode-icons:file-type-css`:t.includes(`xml`)?`vscode-icons:file-type-xml`:t.includes(`yaml`)?`vscode-icons:file-type-yaml`:t===`application/x-sh`||t===`text/x-shellscript`?`vscode-icons:file-type-shell`:t.includes(`sql`)?`vscode-icons:file-type-sql`:t===`text/markdown`||t===`text/x-markdown`?`vscode-icons:file-type-markdown`:t===`text/x-python`||t===`application/x-python-code`?`vscode-icons:file-type-python`:t===`application/x-msdownload`||t===`application/vnd.microsoft.portable-executable`||t===`application/x-executable`||t===`application/x-msdos-program`?`vscode-icons:file-type-binary`:t.startsWith(`text/`)||t.includes(`document`)?`vscode-icons:file-type-text`:null}function Qr(e,t=15,n){let r=null;if(n){let e=Gr(n);e!==`vscode-icons:default-file`&&(r=e)}return!r&&e&&(r=Zr(e)),/* @__PURE__ */ K(Zt,{icon:r??`vscode-icons:default-file`,size:t})}function $r(e,t){let n=Ln(e,t);return n?n.startsWith(`image/`)||n.startsWith(`audio/`)||n.startsWith(`video/`)||n===`application/pdf`||ri(n)||ii(n)||ai(n)||oi(n)||si(n)||li(n)||ei(n)||ti(n)||ni(n)||ui(n)||di(n)||gi(n)||fi(n)||pi(n)||mi(n):!1}function ei(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/vnd.ms-excel`||t.startsWith(`application/vnd.ms-excel.`)||t.includes(`spreadsheetml`)||t===`text/csv`||t===`application/csv`||t===`text/tab-separated-values`||t===`application/vnd.oasis.opendocument.spreadsheet`||t===`application/vnd.oasis.opendocument.spreadsheet-flat-xml`||t===`application/vnd.apple.numbers`||t===`application/x-iwork-numbers-sffnumbers`}function ti(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/msword`||t.startsWith(`application/vnd.ms-word.`)||t.includes(`wordprocessingml`)||t===`application/vnd.oasis.opendocument.text`||t===`application/rtf`||t===`application/x-rtf`||t===`text/rtf`}function ni(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/vnd.ms-powerpoint`||t.startsWith(`application/vnd.ms-powerpoint.`)||t.includes(`presentationml`)||t===`application/vnd.oasis.opendocument.presentation`}function ri(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/ofd`||t===`application/vnd.ofd`}function ii(e){return!!e&&yi.has(e.toLowerCase())}function ai(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/vnd.xmind.workbook`||t===`application/x-xmind`}function oi(e){return!!e&&bi.has(e.toLowerCase())}function si(e){return!!e&&xi.has(e.toLowerCase())}function ci(e,t){let n=Ln(e,t);return!!n&&n.startsWith(`image/`)&&!si(n)}function li(e){return!!e&&Si.has(e.toLowerCase())}function ui(e){return e===`text/markdown`||e===`text/x-markdown`}function di(e){return e===`text/plain`}function fi(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/json`||t===`text/json`}function pi(e){return e===`image/svg+xml`}function mi(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/javascript`||t===`text/javascript`||t===`application/typescript`||t===`text/typescript`||t===`text/x-python`||t===`application/x-python-code`||t===`text/css`||t===`text/html`||t===`text/xml`||t===`application/xml`||t===`application/x-yaml`||t===`text/yaml`||t===`text/x-yaml`||t===`application/x-sh`||t===`text/x-shellscript`||t===`application/sql`||t===`text/x-sql`}function hi(e){if(!e)return!1;let t=e.toLowerCase();return t===`application/zip`||t===`application/x-zip-compressed`||t===`application/x-zip`}function gi(e){if(!e)return!1;let t=e.toLowerCase();return hi(t)||Ci.has(t)}async function _i(e){let t=vi(e);if(t){let n=/\/private-content(?:[?#]|$)/.test(e)?Fn:Pn;return(await Sn.download(n,{params:{id:t}})).blob()}if(!/^https?:\/\//.test(e))throw Error(`文件地址不是受支持的托管文件或存储直链`);let n=await fetch(e,{credentials:`omit`});if(!n.ok)throw Error(`文件读取失败`);return n.blob()}function vi(e){return wi.exec(e)?.[1]??null}async function Y(e){let t=vi(e);if(t)try{let{getFileAccessUrl:n}=await r(async()=>{let{getFileAccessUrl:e}=await import(`@fudanda/admin-antd/core/hooks/queries/files`);return{getFileAccessUrl:e}},[],import.meta.url),i=await n(t);if(i.url!==e)return await _i(i.url)}catch{}return _i(e)}var yi,bi,xi,Si,Ci,wi;function X(){return(X=e((()=>{Xt(),Yr(),n(),yi=/* @__PURE__ */ new Set([`message/rfc822`,`application/vnd.ms-outlook`,`application/mbox`,`application/x-mbox`]),bi=/* @__PURE__ */ new Set([`text/x-mermaid`,`text/mermaid`,`text/vnd.mermaid`,`application/x-mermaid`,`application/vnd.mermaid`,`application/vnd.jgraph.mxfile`,`application/x-drawio`,`application/vnd.excalidraw+json`,`text/vnd.plantuml`,`text/x-plantuml`]),xi=/* @__PURE__ */ new Set([`font/ttf`,`font/otf`,`font/woff`,`font/woff2`,`application/x-font-ttf`,`application/x-font-otf`,`application/font-woff`,`application/font-woff2`,`application/vnd.ms-opentype`,`image/vnd.adobe.photoshop`,`image/x-photoshop`,`application/x-photoshop`,`application/photoshop`,`application/vnd.sqlite3`,`application/x-sqlite3`,`application/vnd.apache.parquet`,`application/x-parquet`,`application/wasm`]),Si=/* @__PURE__ */ new Set([`application/geo+json`,`application/vnd.geo+json`,`application/vnd.google-earth.kml+xml`,`application/gpx+xml`,`application/x-gpx+xml`,`application/vnd.shp`,`application/x-esri-shape`]),Ci=/* @__PURE__ */ new Set([`application/vnd.rar`,`application/x-rar-compressed`,`application/x-7z-compressed`,`application/x-tar`,`application/x-gtar`,`application/gzip`,`application/x-gzip`,`application/x-bzip2`,`application/x-bzip-compressed-tar`,`application/x-xz`,`application/x-xz-compressed-tar`,`application/x-lzma`,`application/zstd`,`application/x-zstd-compressed-tar`,`application/vnd.ms-cab-compressed`,`application/x-archive`,`application/x-cpio`,`application/x-iso9660-image`,`application/x-xar`,`application/x-lzh-compressed`,`application/java-archive`,`application/vnd.android.package-archive`,`application/vnd.comicbook+zip`,`application/vnd.comicbook-rar`]),wi=(()=>{let[e]=Pn.path.split(`{id}`);return RegExp(`${xn(e)}([0-9a-f-]{36})/(?:private-content|content)(?:[?#]|$)`,`i`)})()})))()}function Ti(e,{preview:t,onDetail:n,onCopyUrl:r,onDelete:i,canDelete:a}){return[{key:`preview`,label:`预览`,disabled:!$r(e.mimeType,e.originalName),loading:t.previewLoadingId===e.id,onClick:()=>t.handlePreview(e)},{key:`download`,label:`下载`,loading:t.downloadLoadingId===e.id,onClick:()=>t.handleDownload(e)},{key:`detail`,label:`详情`,onClick:()=>n(e)},{key:`copy-url`,label:`复制链接`,onClick:()=>r(e)},{key:`delete`,label:`删除`,danger:!0,dividerBefore:!0,hidden:!a,onClick:()=>{C({title:`确认删除此文件?`,content:`删除文件记录后,将同步尝试删除实际存储对象。`,onOk:()=>i(e)})}}]}function Ei(){return(Ei=e((()=>{X(),E()})))()}function Di(e){(e?.kind===`audio`||e?.kind===`video`||e?.kind===`svg`)&&URL.revokeObjectURL(e.url)}function Oi({title:e,onCancel:t,fullscreen:n,onToggleFullscreen:r,width:i,viewportHeight:a,children:s}){return/* @__PURE__ */ K(B,{visible:!0,onCancel:t,title:e,footer:null,fullscreenable:!0,fullscreen:n,onToggleFullscreen:r,width:i,centered:!0,bodyStyle:{padding:0,display:`flex`,flexDirection:`column`,overflow:`hidden`,height:n?`calc(100vh - 40px)`:`calc(${a} - 40px)`},keepDOM:!1,children:/* @__PURE__ */ K(pn,{fallback:/* @__PURE__ */ K(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,flex:1},children:/* @__PURE__ */ K(o,{size:`large`,tip:`加载预览组件...`})}),children:s})})}function ki({fileUrl:e,fileName:t=`文件`,mimeType:n,visible:r,onClose:i,onFallback:a}){let[s,l]=W(!1),u=hn(()=>{l(e=>!e)},[]),{isDark:d}=Kt(),f=U(()=>Rn(n,t),[t,n]),p=U(()=>{if(!f)return null;let e=f.startsWith(`image/`),n=f===`video/mp2t`&&/\.(ts|tsx)$/i.test(t);return ei(f)?`spreadsheet`:ti(f)?`word`:ni(f)?`presentation`:ri(f)?`ofd`:ii(f)?`email`:ai(f)?`mindmap`:oi(f)?`drawing`:si(f)?`dataAsset`:li(f)?`geo`:ui(f)?`markdown`:di(f)?`plainText`:gi(f)?`archive`:fi(f)?`json`:pi(f)?`svg`:mi(f)||n?`code`:f===`application/pdf`?`pdf`:f.startsWith(`audio/`)?`audio`:f.startsWith(`video/`)&&!n?`video`:e?`image`:`unsupported`},[t,f]),h=_n({queryKey:[...Tn(Cn.content),`preview`,r,e,t,f,p],queryFn:async()=>{let n=await Y(e);if(p===`spreadsheet`||p===`word`||p===`presentation`||p===`ofd`||p===`email`||p===`mindmap`||p===`drawing`||p===`dataAsset`||p===`geo`||p===`archive`)return{kind:p,file:new File([n],t,{type:f||n.type})};if(p===`markdown`)return{kind:`markdown`,text:await n.text()};if(p===`plainText`)return{kind:`plainText`,text:await n.text()};if(p===`json`)return{kind:`json`,text:await n.text()};if(p===`svg`)return{kind:`svg`,url:URL.createObjectURL(n)};if(p===`code`)return{kind:`code`,text:await n.text()};if(p===`pdf`)return{kind:`pdf`,file:new File([n],t,{type:`application/pdf`})};if(p===`audio`)return{kind:`audio`,url:URL.createObjectURL(n)};if(p===`video`)return{kind:`video`,url:URL.createObjectURL(n)};throw Error(`文件加载失败`)},enabled:r&&!!p&&p!==`unsupported`&&p!==`image`,staleTime:0,gcTime:0}),_=h.data;H(()=>()=>Di(_),[_]),H(()=>{r?f?p===`unsupported`?(a?.(e,t,f),i()):p===`image`&&i():i():l(!1)},[t,e,i,a,p,f,r]),H(()=>{h.error&&(M.error(h.error instanceof Error?h.error.message:`文件加载失败`),i())},[i,h.error]);let v=()=>{i()},y=/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,minWidth:0},children:[Qr(n,15,t),/* @__PURE__ */ K(c.Text,{ellipsis:{showTooltip:!0},style:{fontSize:13,fontWeight:500,minWidth:0},children:t})]});if(!r)return null;if(h.isLoading)return/* @__PURE__ */ K(B,{visible:!0,onCancel:v,title:y,footer:null,fullscreenable:!1,centered:!0,keepDOM:!1,bodyStyle:{display:`flex`,alignItems:`center`,justifyContent:`center`,padding:40},children:/* @__PURE__ */ K(o,{size:`large`,tip:`加载中...`})});if(_?.kind===`pdf`)return/* @__PURE__ */ K(de,{visible:!0,onCancel:v,title:null,footer:null,fullScreen:s,width:`min(1100px, 92vw)`,centered:!0,bodyStyle:{padding:0,display:`flex`,overflow:`hidden`,height:s?`100vh`:`88vh`},closable:!1,keepDOM:!1,children:/* @__PURE__ */ K(pn,{fallback:/* @__PURE__ */ K(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`center`,width:`100%`},children:/* @__PURE__ */ K(o,{size:`large`})}),children:/* @__PURE__ */ K(Ai,{file:_.file,onClose:v,fullscreen:s,onToggleFullscreen:u,style:{width:`100%`,borderLeft:`none`}})})});if(_?.kind===`spreadsheet`||_?.kind===`word`||_?.kind===`presentation`||_?.kind===`ofd`||_?.kind===`email`||_?.kind===`mindmap`||_?.kind===`drawing`||_?.kind===`dataAsset`||_?.kind===`geo`||_?.kind===`archive`){let e=_.kind===`presentation`,t=_.kind===`spreadsheet`||_.kind===`archive`||_.kind===`email`||_.kind===`mindmap`||_.kind===`drawing`||_.kind===`dataAsset`||_.kind===`geo`||e;return/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:t?`min(1200px, 94vw)`:`min(960px, 92vw)`,viewportHeight:`90vh`,children:/* @__PURE__ */ K(ji,{file:_.file,style:{flex:1}})})}if(_?.kind===`markdown`){let e=_.text.startsWith(`\0PLAINTEXT\0`),t=e?_.text.slice(11):_.text;return/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:`min(900px, 92vw)`,viewportHeight:`90vh`,children:/* @__PURE__ */ K(Mi,{content:t,rawText:e,style:{flex:1,minHeight:0}})})}return _?.kind===`json`?/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:`min(900px, 92vw)`,viewportHeight:`88vh`,children:/* @__PURE__ */ K(Ni,{content:_.text,style:{flex:1,minHeight:0}})}):_?.kind===`code`||_?.kind===`plainText`?/* @__PURE__ */ K(Oi,{title:y,onCancel:v,fullscreen:s,onToggleFullscreen:u,width:`min(1100px, 92vw)`,viewportHeight:`90vh`,children:/* @__PURE__ */ K(Pi,{content:_.text,fileName:t,style:{flex:1,minHeight:0}})}):_?.kind===`svg`?/* @__PURE__ */ K(B,{visible:!0,onCancel:v,title:y,footer:null,fullscreenable:!0,fullscreen:s,onToggleFullscreen:u,width:`min(900px, 92vw)`,centered:!0,bodyStyle:{padding:16,display:`flex`,alignItems:`center`,justifyContent:`center`,overflow:`auto`,height:s?`calc(100vh - 40px)`:`calc(80vh - 40px)`},keepDOM:!1,children:/* @__PURE__ */ K(`img`,{src:_.url,alt:t,style:{maxWidth:`100%`,maxHeight:`100%`,objectFit:`contain`}})}):_?.kind===`audio`?zn(/* @__PURE__ */ K(`div`,{className:`arcbase-audio-dock`,role:`region`,"aria-label":`音频播放器`,children:/* @__PURE__ */ q(`div`,{className:`arcbase-audio-dock__inner`,children:[/* @__PURE__ */ K(`div`,{className:`arcbase-audio-dock__player`,children:/* @__PURE__ */ K(m,{className:`arcbase-audio-preview`,audioUrl:{src:_.url,title:t},theme:d?`dark`:`light`,autoPlay:!0,style:{width:`100%`}})}),/* @__PURE__ */ K(`button`,{type:`button`,className:`arcbase-audio-dock__close`,onClick:v,"aria-label":`关闭音频播放器`,children:/* @__PURE__ */ K(qt,{size:18})})]})}),document.body):_?.kind===`video`?/* @__PURE__ */ K(B,{visible:!0,onCancel:v,title:y,footer:null,fullscreenable:!1,width:`min(960px, 92vw)`,centered:!0,bodyStyle:{padding:0,overflow:`hidden`,borderRadius:`var(--arc-antd-border-radius-medium)`},keepDOM:!1,children:/* @__PURE__ */ K(g,{src:_.url,theme:d?`dark`:`light`,width:`100%`,autoPlay:!1,muted:!1,volume:100,clickToPlay:!0,defaultPlaybackRate:1,playbackRateList:[{label:`0.5x`,value:.5},{label:`1x`,value:1},{label:`1.5x`,value:1.5},{label:`2x`,value:2}],style:{borderRadius:`var(--arc-antd-border-radius-medium)`}})}):null}var Ai,ji,Mi,Ni,Pi;function Fi(){return(Fi=e((()=>{l(),Gt(),Yt(),X(),Qt(),n(),Ai=V(()=>r(()=>import(`./PDFPreviewPanel-CMmnWBKW.js`).then(e=>(e.n(),e.t)).then(e=>({default:e.PDFPreviewPanel})),[],import.meta.url)),ji=V(()=>r(()=>import(`./FileViewerPreviewPanel-BMZ7FdKV.js`).then(e=>(e.n(),e.t)),[],import.meta.url)),Mi=V(()=>r(()=>import(`./MarkdownPreviewPanel-CBcPc7Wv.js`),[],import.meta.url)),Ni=V(()=>r(()=>import(`./JsonPreviewPanel-CDQa72tF.js`),[],import.meta.url)),Pi=V(()=>r(()=>import(`./MonacoPreviewPanel-BZrNIcFZ.js`),[],import.meta.url))})))()}function Ii({content:e,visible:t}){let n=(Array.isArray(e)?e:e?[e]:[]).filter(Boolean),r=JSON.stringify(n),[i,a]=W(null);return H(()=>{let e=JSON.parse(r);if(!t||e.length===0){a(null);return}let n=document.body.getAttribute(`theme-mode`)===`dark`,i=Xn(e,13,.22,-22,180,110,n);i&&a({position:`fixed`,inset:0,pointerEvents:`none`,userSelect:`none`,zIndex:2100,backgroundImage:`url(${i.dataUrl})`,backgroundRepeat:`repeat`,backgroundSize:`${i.cssWidth}px ${i.cssHeight}px`})},[r,t]),i?/* @__PURE__ */ K(`div`,{"aria-hidden":!0,style:i,"data-testid":`preview-watermark`}):null}function Li(){return(Li=e((()=>{})))()}function Ri({preview:e,watermark:t}){return/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(ue,{src:e.previewSrcList,visible:e.previewVisible,currentIndex:e.previewCurrentIndex,onChange:e.setPreviewCurrentIndex,onVisibleChange:t=>{t||e.closeImagePreview()},infinite:!0}),/* @__PURE__ */ K(ki,{fileUrl:e.filePreview?.url??``,fileName:e.filePreview?.name,mimeType:e.filePreview?.mimeType,visible:!!e.filePreview,onClose:e.closeFilePreview}),/* @__PURE__ */ K(Ii,{content:t,visible:e.previewVisible||!!e.filePreview})]})}function zi(){return(zi=e((()=>{l(),Fi(),Li()})))()}function Bi({visible:e,file:t,loading:n,resolveUrl:r,onCopyUrl:i,onClose:a,extraRows:s=[]}){return/* @__PURE__ */ K(B,{title:`文件详情`,visible:e,onCancel:a,footer:/* @__PURE__ */ q(h,{children:[/* @__PURE__ */ K(D,{onClick:()=>t&&i(t),children:`复制链接`}),/* @__PURE__ */ K(D,{type:`primary`,onClick:a,children:`关闭`})]}),width:960,children:/* @__PURE__ */ K(o,{spinning:n,tip:`加载中...`,size:`small`,children:t&&/* @__PURE__ */ K(b,{className:`file-detail-descriptions`,column:{xs:1,sm:1,md:2},align:`left`,size:`medium`,data:[{key:`文件名`,value:t.originalName,span:`filled`},{key:`存储服务`,value:t.storageName},{key:`MIME 类型`,value:t.mimeType||`—`},{key:`文件大小`,value:J(t.size)},{key:`上传人`,value:t.uploaderName||`—`},...s.map(e=>({...e,span:`filled`})),{key:`对象键`,value:/* @__PURE__ */ K(Vi,{copyable:!0,style:{fontSize:12},children:t.objectKey}),span:`filled`},{key:`访问链接`,value:/* @__PURE__ */ K(Vi,{copyable:!0,style:{fontSize:12},children:r(t)}),span:`filled`},{key:`上传时间`,value:kn(t.createdAt),span:`filled`}]})})})}var Vi;function Hi(){return(Hi=e((()=>{l(),Qt(),{Text:Vi}=c})))()}function Ui(e){let[t,n]=W(!1),[r,i]=W([]),[a,o]=W(0),[s,c]=W(null),[l,u]=W(null),[d,f]=W(null),p=gn([]),m=gn(0),h=()=>{p.current.forEach(e=>globalThis.URL.revokeObjectURL(e)),p.current=[]};return{previewVisible:t,previewSrcList:r,previewCurrentIndex:a,setPreviewCurrentIndex:o,previewLoadingId:s,downloadLoadingId:d,filePreview:l,handlePreview:async t=>{let r=Rn(t.mimeType,t.originalName),a=ci(t.mimeType,t.originalName);if(!$r(t.mimeType,t.originalName)&&!a){try{let e=await Y(t.url),n=globalThis.URL.createObjectURL(e);globalThis.open(n,`_blank`,`noopener,noreferrer`),globalThis.setTimeout(()=>globalThis.URL.revokeObjectURL(n),6e4)}catch(e){M.error(e instanceof Error?e.message:`预览文件失败`)}return}if(!a){c(t.id);try{u({id:t.id,url:t.url,name:t.originalName,mimeType:r??`application/octet-stream`})}catch(e){M.error(e instanceof Error?e.message:`预览文件失败`)}finally{c(null)}return}let s=e().filter(e=>ci(e.mimeType,e.originalName)),l=s.findIndex(e=>e.id===t.id);c(t.id),m.current+=1;let d=m.current;try{h();let e=s.map(()=>``);p.current=[...e];let t=s[l],r=await Y(t.url);if(m.current!==d)return;let a=await Zn(r,t.mimeType,t.originalName);if(m.current!==d){globalThis.URL.revokeObjectURL(a);return}e[l]=a,p.current[l]=a,i([...e]),o(Math.max(0,l)),n(!0),s.forEach(async(e,t)=>{if(t!==l)try{let n=await Y(e.url);if(m.current!==d)return;let r=await Zn(n,e.mimeType,e.originalName);if(m.current!==d){globalThis.URL.revokeObjectURL(r);return}p.current[t]=r,i(e=>{let n=[...e];return n[t]=r,n})}catch{}})}catch(e){M.error(e instanceof Error?e.message:`预览图片失败`)}finally{c(null)}},handleDownload:async e=>{f(e.id);try{let t=await Y(e.url),n=globalThis.URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.originalName,r.click(),globalThis.setTimeout(()=>globalThis.URL.revokeObjectURL(n),6e4)}catch(e){M.error(e instanceof Error?e.message:`下载文件失败`)}finally{f(null)}},closeImagePreview:()=>{m.current+=1,n(!1),h(),i([])},closeFilePreview:()=>u(null),resetPreview:()=>{u(null),n(!1),m.current+=1}}}function Wi(){return(Wi=e((()=>{l(),X()})))()}function Gi(e){return mn(e,{style:{...e.props.style,...Ji}})}function Ki(){return document.body}function qi({point:e,contextKey:t,render:n,onClose:r}){let i=`${t}:${e.x}:${e.y}`,a=gn(null),o=hn(()=>{a.current!==i&&(a.current=i,r())},[r,i]);return/* @__PURE__ */ K(j,{visible:!0,trigger:`click`,position:`bottomLeft`,autoAdjustOverflow:!0,rePosKey:i,render:Gi(n),getPopupContainer:Ki,clickToHide:!0,closeOnEsc:!0,onClickOutSide:o,onVisibleChange:e=>{e||o()},children:/* @__PURE__ */ K(`span`,{"aria-hidden":`true`,style:{position:`fixed`,left:e.x,top:e.y,width:1,height:1,pointerEvents:`none`}})})}var Ji;function Yi(){return(Yi=e((()=>{l(),Ji={maxHeight:`calc(100vh - 16px)`,overflowY:`auto`}})))()}function Xi({file:e,selected:t,canSelect:n,onSelect:r,onPreview:i,onDownload:a,onDelete:s,onDetail:c,onCopyUrl:l,canDelete:u,previewLoading:d}){let[f,m]=W(null),h=$r(e.mimeType,e.originalName),g=e.originalName.includes(`.`)?e.originalName.split(`.`).pop()?.toUpperCase():``;return/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(`div`,{className:`files-grid-card${t?` files-grid-card--selected`:``}`,onContextMenu:e=>{e.preventDefault(),m({x:e.clientX,y:e.clientY})},children:[/* @__PURE__ */ K(`button`,{type:`button`,className:`files-grid-card__preview-btn`,"aria-label":h?`预览 ${e.originalName}`:e.originalName,style:{cursor:h?`pointer`:`default`},onClick:a=>{n&&(a.ctrlKey||a.metaKey||a.shiftKey)?r(e.id,!t):h&&i(e)}}),n&&/* @__PURE__ */ K(`div`,{className:`files-grid-card__checkbox`,children:/* @__PURE__ */ K(p,{checked:t,onChange:()=>r(e.id,!t)})}),/* @__PURE__ */ K(`div`,{className:`files-grid-card__media-wrap`,children:/* @__PURE__ */ q(`div`,{className:`files-grid-card__media`,children:[/* @__PURE__ */ K(`span`,{className:`files-grid-card__icon`,children:Qr(e.mimeType,34,e.originalName)}),g&&/* @__PURE__ */ K(`span`,{className:`files-grid-card__type-badge`,children:g}),d&&/* @__PURE__ */ K(`div`,{className:`files-grid-card__media-overlay`,children:/* @__PURE__ */ K(o,{})})]})}),/* @__PURE__ */ q(`div`,{className:`files-grid-card__info`,children:[/* @__PURE__ */ K(T,{content:e.originalName,position:`top`,children:/* @__PURE__ */ K(`div`,{className:`files-grid-card__name`,children:e.originalName})}),/* @__PURE__ */ K(`div`,{className:`files-grid-card__meta`,children:/* @__PURE__ */ K(`span`,{children:J(e.size)})})]})]}),f&&/* @__PURE__ */ K(qi,{point:f,contextKey:e.id,onClose:()=>m(null),render:/* @__PURE__ */ q(j.Menu,{children:[h&&/* @__PURE__ */ K(j.Item,{onClick:()=>i(e),children:`预览`}),/* @__PURE__ */ K(j.Item,{onClick:()=>a(e),children:`下载`}),/* @__PURE__ */ K(j.Item,{onClick:()=>c(e),children:`详情`}),/* @__PURE__ */ K(j.Item,{onClick:()=>l(e),children:`复制链接`}),u&&/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(j.Divider,{}),/* @__PURE__ */ K(j.Item,{type:`danger`,onClick:()=>{Dt({title:`确认删除此文件?`,content:`删除文件记录后,将同步尝试删除实际存储对象。`,run:()=>Promise.resolve(s(e)),successMessage:null})},children:`删除`})]})]})})]})}function Zi(){return(Zi=e((()=>{l(),X(),Et(),Yi()})))()}function Qi({name:e,icon:t,mimeType:n,onClick:r,highlight:i}){let a=i?e.split(RegExp(`(${xn(i)})`,`gi`)):[e],o=/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(`span`,{className:`file-name-cell__icon`,children:t??Qr(n,16,e)}),/* @__PURE__ */ K(T,{content:e,children:/* @__PURE__ */ K(`span`,{className:`file-name-cell__text`,children:a.map((e,t)=>i&&e.toLowerCase()===i.toLowerCase()?/* @__PURE__ */ K(`mark`,{children:e},t):e)})})]});return r?/* @__PURE__ */ K(`button`,{type:`button`,className:`file-name-cell file-name-cell--button`,onClick:r,children:o}):/* @__PURE__ */ K(`div`,{className:`file-name-cell`,children:o})}function $i(){return($i=e((()=>{l(),X()})))()}function ea({config:e,onClose:t}){let{hasPermission:n}=En(),[r,i]=W(`list`),[a,s]=W(``),{page:c,setPage:l}=jn(),u=fr(e?.id,a,!!e),d=u.data??null,f=u.isFetching,p=tr(),[m,g]=W([``]),[_,v]=W(0),y=_>0,ee=_<m.length-1,b=Ui(()=>d?.files??[]),[x,S]=W(null),C=nr(x?.id,!!x),w=C.data??x,te=C.isFetching;H(()=>{e&&(s(``),i(`list`),l(1),g([``]),v(0),S(null),b.resetPreview())},[e,l]);let ne=(e,t=!0)=>{s(e),l(1),t&&(g(t=>{let n=t.slice(0,_+1);return n.push(e),n}),v(e=>e+1))},E=e=>ne(e.path),ae=e=>ne(e),ce=()=>{let e=_-1,t=m[e]??``;v(e),s(t),l(1)},le=()=>{let e=_+1,t=m[e]??``;v(e),s(t),l(1)},O=a?a.split(`/`):[],k=async e=>{await p.mutateAsync([e.id]),M.success(`文件已删除`),u.refetch()},ue=e=>{S(e)},A=async e=>{await ie(Xr(e.url),{success:`链接已复制`,error:`复制失败,请手动复制`})},j=[{title:`名称`,key:`name`,ellipsis:{showTitle:!1},render:(e,t)=>{if(!(`id`in t))return/* @__PURE__ */ K(Qi,{name:t.name,icon:/* @__PURE__ */ K(Lr,{size:15,className:`storage-browser__folder-icon`}),onClick:()=>E(t)});let n=$r(t.mimeType,t.originalName);return/* @__PURE__ */ K(Qi,{name:t.originalName,mimeType:t.mimeType,onClick:n?()=>void b.handlePreview(t):void 0})}},{title:`大小`,key:`size`,width:110,align:`right`,render:(e,t)=>`id`in t?J(t.size):/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`})},{title:`上传时间`,key:`createdAt`,width:180,render:(e,t)=>`id`in t?/* @__PURE__ */ K(Pt,{value:t.createdAt}):/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`})},Tt({width:180,desktopInlineKeys:[`open`,`preview`,`download`],actions:e=>`id`in e?Ti(e,{preview:b,onDetail:e=>{ue(e)},onCopyUrl:A,onDelete:k,canDelete:n(`system:file:delete`)}):[{key:`open`,label:`打开`,onClick:()=>E(e)}]})],de=[...d?.folders??[],...d?.files??[]],N=de.length,P=de.slice((c-1)*50,c*50);return/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(fe,{title:e?`文件浏览 · ${e.name}`:`文件浏览`,visible:!!e,onCancel:t,size:`large`,bodyStyle:{padding:0,display:`flex`,flexDirection:`column`},headerStyle:{borderBottom:`1px solid var(--arc-antd-color-border)`},children:[/* @__PURE__ */ q(`div`,{className:`storage-browser__toolbar`,children:[/* @__PURE__ */ q(h,{spacing:4,style:{flexShrink:0},children:[/* @__PURE__ */ K(D,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ K(ft,{size:15}),disabled:!y,onClick:ce}),/* @__PURE__ */ K(D,{size:`small`,theme:`borderless`,type:`tertiary`,icon:/* @__PURE__ */ K(pt,{size:15}),disabled:!ee,onClick:le})]}),/* @__PURE__ */ q(oe,{className:`storage-browser__breadcrumb`,children:[/* @__PURE__ */ K(oe.Item,{onClick:()=>ae(``),style:{cursor:a?`pointer`:`default`,color:a?`var(--arc-antd-color-primary)`:void 0},children:`根目录`}),O.map((e,t)=>{let n=O.slice(0,t+1).join(`/`),r=t===O.length-1;return/* @__PURE__ */ K(oe.Item,{onClick:r?void 0:()=>ae(n),style:{cursor:r?`default`:`pointer`,color:r?void 0:`var(--arc-antd-color-primary)`},children:e},n)})]}),/* @__PURE__ */ q(h,{spacing:0,children:[/* @__PURE__ */ K(D,{size:`small`,theme:r===`list`?`solid`:`light`,type:r===`list`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(yt,{size:14}),style:{borderRadius:`4px 0 0 4px`},onClick:()=>i(`list`)}),/* @__PURE__ */ K(D,{size:`small`,theme:r===`grid`?`solid`:`light`,type:r===`grid`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(re,{size:14}),style:{borderRadius:`0 4px 4px 0`},onClick:()=>i(`grid`)})]})]}),/* @__PURE__ */ K(`div`,{className:`storage-browser__content`,children:/* @__PURE__ */ q(o,{spinning:f,size:`large`,wrapperClassName:`storage-browser__spin`,children:[!f&&N===0&&/* @__PURE__ */ K(`div`,{className:`storage-browser__empty`,children:`当前目录为空`}),r===`list`&&N>0&&/* @__PURE__ */ K(Ut,{bordered:!0,columns:j,dataSource:P,rowKey:e=>e?`id`in e?`file-${e.id}`:`folder-${e.path}`:``,loading:!1,onRefresh:()=>void u.refetch(),refreshLoading:f,size:`small`,pagination:!1,onRow:e=>e&&!(`id`in e)?{onClick:()=>E(e),style:{cursor:`pointer`}}:{}}),r===`grid`&&N>0&&(()=>{let e=P.filter(e=>!(`id`in e)),t=P.filter(e=>`id`in e);return/* @__PURE__ */ q(`div`,{className:`storage-browser__grid-wrap`,children:[e.length>0&&/* @__PURE__ */ q(`div`,{className:`storage-browser__grid-section`,children:[/* @__PURE__ */ K(`div`,{className:`storage-browser__grid-section-label`,children:`文件夹`}),/* @__PURE__ */ K(`div`,{className:`storage-browser__folder-grid`,children:e.map(e=>/* @__PURE__ */ q(`button`,{type:`button`,className:`storage-browser__folder-card`,onClick:()=>E(e),children:[/* @__PURE__ */ K(Lr,{size:32,className:`storage-browser__folder-card-icon`}),/* @__PURE__ */ K(T,{content:e.name,position:`top`,children:/* @__PURE__ */ K(`span`,{className:`storage-browser__folder-card-name`,children:e.name})})]},e.path))})]}),t.length>0&&/* @__PURE__ */ q(`div`,{className:`storage-browser__grid-section`,children:[e.length>0&&/* @__PURE__ */ K(`div`,{className:`storage-browser__grid-section-label`,children:`文件`}),/* @__PURE__ */ K(`div`,{className:`storage-browser__file-grid`,children:t.map(e=>/* @__PURE__ */ K(Xi,{file:e,selected:!1,canSelect:!1,onSelect:()=>{},onPreview:b.handlePreview,onDownload:b.handleDownload,onDelete:k,onDetail:ue,onCopyUrl:A,canDelete:n(`system:file:delete`),previewLoading:b.previewLoadingId===e.id},e.id))})]})]})})()]})}),/* @__PURE__ */ q(`div`,{className:`storage-browser__footer`,children:[/* @__PURE__ */ q(ta,{type:`secondary`,size:`small`,children:[(d?.folders.length??0)>0&&`${d.folders.length} 个文件夹`,(d?.folders.length??0)>0&&(d?.files.length??0)>0&&`,`,(d?.files.length??0)>0&&`${d.files.length} 个文件`,N===0&&!f&&`空目录`]}),N>0&&/* @__PURE__ */ K(se,{currentPage:c,pageSize:50,total:N,onPageChange:l,size:`small`,hoverShowPageSelect:!0})]})]}),/* @__PURE__ */ K(Ri,{preview:b}),/* @__PURE__ */ K(Bi,{visible:!!x,file:w,loading:te,resolveUrl:e=>Xr(e.url),onCopyUrl:e=>void A(e),onClose:()=>S(null)})]})}var ta;function na(){return(na=e((()=>{l(),Rr(),ut(),dt(),te(),vt(),Nt(),X(),Ei(),ce(),zi(),Hi(),Wi(),Ht(),wt(),Zi(),$i(),{Text:ta}=c})))()}function Z(e){return e?.trim()??``}function ra(e,t,n){return wn.create.input.shape.body.parse({name:n.name?.trim()??``,status:n.status??`enabled`,isDefault:t,basePath:Z(n.basePath),objectAcl:`default`,urlStrategy:`proxy`,publicBaseUrl:``,presignedExpirySeconds:qn,provider:e,remark:Z(n.remark),...e===`local`?{localRootPath:Z(n.localRootPath)}:{s3Region:Z(n.s3Region),s3Endpoint:Z(n.s3Endpoint),s3Bucket:Z(n.s3Bucket),s3AccessKeyId:Z(n.s3AccessKeyId),s3SecretAccessKey:Z(n.s3SecretAccessKey),s3ForcePathStyle:n.s3ForcePathStyle??!1}})}function ia(e){return e.provider===`local`?e.localRootPath||z:[e.s3Bucket,e.s3Region].filter(Boolean).join(` / `)||z}function aa(){let{hasPermission:e}=En(),t=jt({contract:wn,useList:lr}),{tableProps:n,filterQuery:r}=t,[i,a]=W(`local`),[o,s]=W(!1),[c,l]=W(null),p=ur(),m=ur(),h=Bt({entityName:`文件配置`,save:Rt(p,{create:wn.create.input.shape.body,update:wn.update.input.shape.body}),useDetail:cr,defaults:{name:``,provider:`local`,status:`enabled`,isDefault:!1,basePath:``,objectAcl:`default`,urlStrategy:`proxy`,publicBaseUrl:``,presignedExpirySeconds:qn,localRootPath:`storage/local`,remark:``},toValues:e=>({name:e.name,status:e.status,isDefault:e.isDefault,provider:e.provider,basePath:e.basePath,objectAcl:`default`,urlStrategy:`proxy`,publicBaseUrl:``,presignedExpirySeconds:qn,localRootPath:e.localRootPath??``,s3Region:e.s3Region??``,s3Endpoint:e.s3Endpoint??``,s3Bucket:e.s3Bucket??``,s3AccessKeyId:e.s3AccessKeyId??``,s3SecretAccessKey:``,s3ForcePathStyle:e.s3ForcePathStyle??!1,remark:e.remark??``}),beforeSave:e=>ra(i,o,e),successMessage:({isEdit:e})=>e?`文件服务配置已更新`:`文件服务配置已创建`,labelWidth:150}),g=sr(),ee=dr(),b=pr(),x=b.isPending&&!b.variables?.id,S=b.isPending?b.variables?.id??null:null;H(()=>{h.editing&&(a(h.editing.provider),s(h.editing.isDefault))},[h.editing]);let C=()=>{a(`local`),s(!1),h.openCreate()},te=e=>{a(e.provider),s(e.isDefault),h.openEdit(e)},ne=async()=>{let e;try{e=await h.formApi.current.validate()}catch{return}if(!e)return;let t=ra(i,o,e);await b.mutateAsync(h.editing?{id:h.editing.id,values:t}:{values:t}),M.success(`存储连接测试通过`)},T=async e=>{await ee.mutateAsync({params:{id:e.id}}),M.success(`默认文件服务已更新`)},E=async e=>{await b.mutateAsync({id:e.id,values:{}}),M.success(`存储连接测试通过`)},re=St({toggle:async(e,t)=>{!t&&e.isDefault&&(M.warning(`默认配置不能禁用,请先将其他配置设为默认`),bn(`default-config-cannot-be-disabled`)),await m.mutateAsync({id:e.id,values:ra(e.provider,e.isDefault,{...e,status:t?`enabled`:`disabled`})})},confirmDisable:e=>e.isDefault?null:{danger:!0,title:`确认禁用「${e.name}」?`,okText:`确认禁用`},disabled:!e(`system:file:config:update`),messages:{disabled:`已禁用`}}),ie=Ot({permission:`system:file:config`,edit:te,remove:g,title:`确认删除此文件服务配置?`,content:`若已绑定文件记录,后端会阻止删除。`,successMessage:`文件服务配置已删除`,disabled:{remove:e=>e.isDefault},extra:t=>[{key:`browse`,label:`浏览`,hidden:!e(`system:file:list`),onClick:()=>l(t)},{key:`default`,label:`设为默认`,hidden:!e(`system:file:config:default`),disabled:t.isDefault||t.status!==`enabled`,onClick:()=>T(t)}],extraBetween:t=>[{key:`test`,label:`测试连接`,loading:S===t.id,hidden:!e(`system:file:config`),onClick:()=>{E(t)}}],width:180,desktopInlineKeys:[`browse`,`edit`]}),ae=[{title:`配置名称`,dataIndex:`name`,minWidth:180,render:R},{title:`存储类型`,dataIndex:`provider`,width:120,render:e=>/* @__PURE__ */ K(u,{color:{local:`blue`,s3:`purple`}[e],size:`small`,children:Hn[e]})},{title:`默认服务`,dataIndex:`isDefault`,width:110,align:`center`,render:e=>e?/* @__PURE__ */ K(u,{color:`green`,size:`small`,children:`默认`}):/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`})},{title:`存储信息`,key:`storageSummary`,dataIndex:`storageSummary`,width:180,render:(e,t)=>{let n={local:`目录`,s3:`Bucket`}[t.provider]??`Bucket`,r=ia(t);return R(`${n}: ${r}`)}},{title:`基础路径`,dataIndex:`basePath`,width:160,render:e=>R(e)},{title:`读写权限`,dataIndex:`objectAcl`,width:120,align:`center`,render:(e,t)=>{if(!sa.includes(t.provider))return/* @__PURE__ */ K(`span`,{className:`table-cell-placeholder`,children:`—`});let n={default:`grey`},r=e??`default`;return/* @__PURE__ */ K(u,{color:n[r],size:`small`,children:Bn[r]})}},{title:`访问策略`,dataIndex:`urlStrategy`,width:120,align:`center`,render:e=>{let t=e??`proxy`;return/* @__PURE__ */ K(u,{color:{proxy:`grey`}[t],size:`small`,children:Gn[t]})}},It(`更新时间`,`updatedAt`),re.column(),ie];return/* @__PURE__ */ q(`div`,{className:`storage-configs-panel`,children:[/* @__PURE__ */ K(`div`,{className:`storage-configs-tip`,style:{marginBottom:0,marginTop:-4},children:/* @__PURE__ */ K(oa,{type:`secondary`,children:`当前支持多文件服务配置,但上传时会优先走"默认文件服务"。切换默认服务不会影响历史文件记录。`})}),/* @__PURE__ */ K(Ut,{searchConfig:d({page:t,filters:[`status`,[`startTime`,`endTime`]],create:/* @__PURE__ */ K(he,{permission:`system:file:config:create`,onClick:C}),actions:/* @__PURE__ */ K(ln,{entity:`system.file-storage-configs`,query:r}),filterTitle:`文件配置筛选`,actionTitle:`文件配置操作`}),columns:ae,...n}),/* @__PURE__ */ q(zt,{modal:h,width:780,footer:/* @__PURE__ */ q(`div`,{style:{display:`flex`,justifyContent:`space-between`,gap:8},children:[` `,/* @__PURE__ */ K(D,{icon:/* @__PURE__ */ K(Wt,{size:14}),loading:x,disabled:h.detailLoading,onClick:()=>void ne(),children:` 测试连接 `}),` `,/* @__PURE__ */ q(`div`,{style:{display:`flex`,gap:8},children:[` `,/* @__PURE__ */ K(D,{type:`tertiary`,onClick:h.close,children:`取消`}),` `,/* @__PURE__ */ K(D,{type:`primary`,theme:`solid`,loading:h.modalProps.okButtonProps.loading,disabled:h.modalProps.okButtonProps.disabled,onClick:()=>void P(h.modalProps.onOk),children:` 保存 `}),` `]}),` `]}),children:[/* @__PURE__ */ q(f.Section,{text:`基础信息`,children:[/* @__PURE__ */ q(k,{gutter:16,children:[/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`name`,label:`配置名称`,placeholder:`请输入配置名称`,rules:[{required:!0,message:`请输入配置名称`}]})}),/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Select,{field:`provider`,label:`存储类型`,style:{width:`100%`},optionList:Un.filter(e=>[`local`,`s3`].includes(e.value)),onChange:e=>{if(e!==`local`&&e!==`s3`)return;let t=e;a(t);let n=h.formApi.current?.getValue(`objectAcl`);n&&!(Vn[t]??[]).includes(n)&&h.formApi.current?.setValue(`objectAcl`,`default`)},placeholder:`请选择存储类型`})})]}),/* @__PURE__ */ q(k,{gutter:16,children:[/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ q(f.Select,{field:`status`,label:`状态`,style:{width:`100%`},placeholder:`请选择状态`,children:[/* @__PURE__ */ K(_.Option,{value:`enabled`,children:`启用`}),/* @__PURE__ */ K(_.Option,{value:`disabled`,children:`禁用`})]})}),i===`s3`&&/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`basePath`,label:`基础路径`,placeholder:`例如 uploads / images`})})]}),/* @__PURE__ */ K(f.Slot,{label:`设为默认服务`,children:/* @__PURE__ */ K(y,{checked:o,onChange:s})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`remark`,label:`备注`,placeholder:`选填,说明该文件服务的用途`})})})]}),/* @__PURE__ */ q(f.Section,{text:`${Hn[i]} 连接配置`,children:[i===`local`&&/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`localRootPath`,label:`存储目录`,placeholder:`例如 storage/local 或 D:/uploads`,rules:[{required:!0,message:`请输入本地磁盘存储目录`}]})})}),i===`s3`&&/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(k,{gutter:16,children:[/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`s3Region`,label:`Region`,placeholder:`请输入 S3 Region`,rules:[{required:!0,message:`请输入 S3 Region`}]})}),/* @__PURE__ */ K(w,{span:12,children:/* @__PURE__ */ K(f.Input,{field:`s3Bucket`,label:`Bucket`,placeholder:`请输入 S3 Bucket`,rules:[{required:!0,message:`请输入 S3 Bucket`}]})})]}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`s3Endpoint`,label:`Endpoint`,placeholder:`可选,兼容 S3 自定义存储`})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`s3AccessKeyId`,label:`Access Key ID`,placeholder:`请输入 Access Key ID`,rules:[{required:!0,message:`请输入 Access Key ID`}]})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(en,{field:`s3SecretAccessKey`,label:`Secret Access Key`,placeholder:h.isEdit?`留空表示不修改`:`请输入 Secret Access Key`,rules:h.isEdit?[]:[{required:!0,message:`请输入 Secret Access Key`}]})})}),/* @__PURE__ */ K(f.Checkbox,{field:`s3ForcePathStyle`,noLabel:!0,children:`强制路径样式(MinIO / Ceph 等兼容当需开启)`})]})]}),/* @__PURE__ */ q(f.Section,{text:`访问与权限`,children:[sa.includes(i)&&/* @__PURE__ */ K(f.RadioGroup,{field:`objectAcl`,label:`读写权限`,type:`button`,extraText:i===`s3`?`上传文件将按此权限设置对象 ACL。注意:AWS S3 新建桶默认禁用 ACL(Bucket owner enforced),启用前请先在桶设置中开启;MinIO / Cloudflare R2 不支持对象 ACL,请保持「继承 Bucket」。`:`上传文件将按此权限设置对象 ACL;「继承 Bucket」表示不单独指定、跟随 Bucket 权限。公共读 / 公共读写存在数据泄露风险,请谨慎选择。`,children:[`default`].map(e=>/* @__PURE__ */ K(v,{value:e,children:Bn[e]},e))}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Select,{field:`urlStrategy`,disabled:Mn,label:`访问策略`,style:{width:`100%`},extraText:`代理:文件流量经过服务端(兜底);公开直链:返回永久直连地址,要求对象可公开读;临时签名:按需签发限时直连地址,适合私有文件(本地磁盘 / SFTP 不支持)`,children:Kn.filter(e=>e.value===`proxy`).map(e=>/* @__PURE__ */ K(_.Option,{value:e.value,children:e.label},e.value))})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.InputNumber,{field:`presignedExpirySeconds`,disabled:Mn,label:`签名有效期(秒)`,style:{width:`100%`},min:Yn,max:Jn,extraText:`仅临时签名策略生效;修改只影响新签发的链接`})})}),/* @__PURE__ */ K(k,{gutter:16,children:/* @__PURE__ */ K(w,{span:24,children:/* @__PURE__ */ K(f.Input,{field:`publicBaseUrl`,disabled:Mn,label:`访问域名(CDN)`,placeholder:`可选,例如 https://cdn.example.com,公开直链优先使用该域名`})})})]})]}),/* @__PURE__ */ K(ea,{config:c,onClose:()=>l(null)})]})}var oa,sa;function ca(){return(ca=e((()=>{$t(),l(),Jt(),Lt(),cn(),Ft(),Ht(),i(),Ct(),kt(),N(),na(),ge(),Mt(),Vt(),{Text:oa}=c,sa=[`s3`]})))()}function la(e){if(e===`success`)return`var(--arc-antd-color-success)`;if(e===`error`)return`var(--arc-antd-color-danger)`;if(e===`cancelled`)return`var(--arc-antd-color-disabled-text)`}function ua(e,t,n,r,i,a){let o=e=>i(n=>n.map(n=>n.uid===t?e(n):n)),s=()=>o(e=>({...e,progress:100,status:`success`})),c=e=>o(t=>n.aborted?{...t,status:`cancelled`}:{...t,status:`error`,errorMsg:e instanceof Error?e.message:`上传失败`});o(e=>({...e,status:`uploading`})),e.size>r?_r(e,{signal:n,onProgress:e=>o(t=>({...t,progress:e}))}).then(s).catch(c):a([e],e=>o(t=>({...t,progress:e})),n).then(s).catch(c)}async function da(e){try{let t,n=e.directUrl??(/^https?:\/\//.test(e.url)?e.url:null);if(n)t=n;else{let n=await Y(e.url);t=URL.createObjectURL(n)}return await new Promise(e=>{let r=new Image,i=()=>{n||URL.revokeObjectURL(t)};r.onload=()=>{i(),e({width:r.naturalWidth,height:r.naturalHeight})},r.onerror=()=>{i(),e(null)},r.src=t})}catch{return null}}function fa({active:e}){let t=vn(),{hasPermission:n}=En(),{preferences:r,setPreferences:i,canEditPreference:o}=yn(),l={keyword:``,provider:void 0,fileType:void 0,timeRange:null},u=gn(null),[f,m]=W([]),[g,_]=W(!1),v=gn(/* @__PURE__ */ new Map),{bind:y,bindKeyword:b,submittedParams:x,handleSearch:S,handleReset:C}=On({defaults:l,listKey:Qn.lists}),w=r.filesViewMode??`list`,te=jn({resetKey:w}),E=jn({pageSize:ga,pageSizeOpts:_a,resetKey:w}),{page:oe,pageSize:ce,setPage:O,setPageSize:k,buildPagination:ue}=w===`grid`?E:te,[A,j]=W([]),[de,N]=W(!1),[fe,P]=W(null),[pe,me]=W(null),he=or().data?.config??null,[ge,ve]=An(x.timeRange),ye=Dn({keyword:x.keyword,provider:hr.query.shape.provider.safeParse(x.provider).data,fileType:hr.query.shape.fileType.safeParse(x.fileType).data,startDate:ge,endDate:ve}),be=rr({page:oe,pageSize:ce,...ye},e),F=be.data??null,I=Ui(()=>F?.list??[]),xe=ar(),Se=er(),Ce=tr(),we=tr(),L=nr(fe?.id,!!fe),Te=L.data??fe,Ee=L.isFetching,De=e=>{o(`filesViewMode`)&&i({filesViewMode:e})},Oe=(e,t)=>{j(n=>t?[...n,e]:n.filter(t=>t!==e))},ke=e=>{let t=(F?.list??[]).map(e=>e.id);j(e?e=>{let n=[...e];for(let e of t)n.includes(e)||n.push(e);return n}:e=>e.filter(e=>!t.includes(e)))},Ae=e=>{P(e),me(null)};H(()=>{let e=L.data;e?.mimeType?.startsWith(`image/`)&&da(e).then(e=>{e&&me(e)})},[L.data]),H(()=>{if(g&&f.length>0&&f.every(ha)){let e=f.filter(e=>e.status===`success`).length,n=setTimeout(()=>{_(!1),e>0&&(M.success(e>1?`成功上传 ${e} 个文件`:`文件上传成功`),O(1),$n(t))},1e3);return()=>clearTimeout(n)}},[f,g,t,O]);let je=()=>{u.current?.click()},Me=e=>{let t=Array.from(e.target.files??[]);if(e.target.value=``,t.length===0)return;let n=t.map((e,t)=>({uid:`${e.name}-${Date.now()}-${t}`,name:e.name,size:e.size,progress:0,status:`pending`}));v.current.clear(),m(n),_(!0);for(let[e,r]of t.entries()){let t=new AbortController;v.current.set(n[e].uid,t),ua(r,n[e].uid,t.signal,Se,m,(e,t,n)=>xe.mutateAsync({files:e,onProgress:t,signal:n}))}},Ne=e=>{v.current.get(e)?.abort(gr)},Pe=async e=>{await Ce.mutateAsync([e.id]),M.success(`文件已删除`)},Fe=()=>{Dt({title:`确认删除选中的 ${A.length} 个文件?`,content:`删除后将同步尝试删除实际存储对象,无法恢复。`,run:()=>we.mutateAsync(A),successMessage:`批量删除成功`,onDeleted:()=>j([])})},Ie=async()=>{if(A.length!==0){N(!0);try{let e=await(await Sn.download(mr,{body:{ids:A}})).blob();if(!e)return;Nn(e,`files_${Date.now()}.zip`),M.success(`已打包 ${A.length} 个文件`)}catch{M.error(`批量下载失败`)}finally{N(!1)}}},Le=async e=>{await ie(e.directUrl??Xr(e.url),{success:`链接已复制`,error:`复制失败,请手动复制`})},Re=[{title:`文件名`,dataIndex:`originalName`,minWidth:220,ellipsis:{showTitle:!1},render:(e,t)=>{let n=$r(t.mimeType,e);return/* @__PURE__ */ K(Qi,{name:e,mimeType:t.mimeType,onClick:n?()=>void I.handlePreview(t):void 0})}},{title:`来源服务`,dataIndex:`storageName`,width:120,ellipsis:!0,render:(e,t)=>R(t.storageName)},{title:`MIME 类型`,dataIndex:`mimeType`,width:160,ellipsis:!0,render:R},{title:`大小`,dataIndex:`size`,width:100,align:`right`,render:e=>J(e)},It(`上传时间`,`createdAt`),{title:`上传人`,dataIndex:`uploaderName`,width:100,ellipsis:!0,render:R},Tt({width:180,desktopInlineKeys:[`preview`,`download`],actions:e=>Ti(e,{preview:I,onDetail:e=>{Ae(e)},onCopyUrl:Le,onDelete:Pe,canDelete:n(`system:file:delete`)})})],ze=d({keyword:/* @__PURE__ */ K(ne,{placeholder:`搜索文件名 / 对象键 / 文件服务`,...b(`keyword`),style:{width:`min(280px, 100%)`}}),filters:/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ K(le,{placeholder:`全部存储类型`,items:Un.filter(e=>[`local`,`s3`].includes(e.value)),...y(`provider`),width:140}),/* @__PURE__ */ K(le,{placeholder:`全部文件类型`,items:Wn,...y(`fileType`),width:140}),/* @__PURE__ */ K(ae,{searchLabel:`上传时间`,type:`dateTimeRange`,...y(`timeRange`)})]}),onSearch:S,onReset:C,create:n(`system:file:upload`)&&/* @__PURE__ */ K(D,{type:`primary`,icon:/* @__PURE__ */ K(xt,{size:14}),loading:g&&f.some(e=>e.status===`uploading`||e.status===`pending`),disabled:!he,onClick:je,children:`上传文件`}),actions:A.length>0?/* @__PURE__ */ q(G,{children:[/* @__PURE__ */ q(D,{type:`tertiary`,theme:`light`,icon:/* @__PURE__ */ K(Pr,{size:14}),loading:de,onClick:Ie,children:[`批量下载 (`,A.length,`)`]}),n(`system:file:delete`)&&/* @__PURE__ */ K(_e,{count:A.length,loading:we.isPending,onClick:Fe}),/* @__PURE__ */ K(D,{type:`tertiary`,theme:`light`,icon:/* @__PURE__ */ K(qt,{size:12}),onClick:()=>j([]),children:`取消选择`})]}):null,filterTitle:`文件筛选`,actionTitle:`文件操作`});return e?/* @__PURE__ */ q(G,{children:[w===`grid`&&/* @__PURE__ */ K(ee,{config:ze}),/* @__PURE__ */ K(`input`,{ref:u,type:`file`,hidden:!0,multiple:!0,onChange:Me}),/* @__PURE__ */ q(`div`,{className:`files-default-tip`,style:{padding:`8px 0`},children:[/* @__PURE__ */ q(h,{children:[/* @__PURE__ */ K(pa,{strong:!0,children:`默认文件服务:`}),he?/* @__PURE__ */ K(pa,{children:he.name}):/* @__PURE__ */ K(pa,{type:`danger`,children:`未配置默认文件服务,请先前往"文件配置"设置。`})]}),o(`filesViewMode`)&&/* @__PURE__ */ q(h,{spacing:0,children:[/* @__PURE__ */ K(D,{size:`small`,theme:w===`list`?`solid`:`light`,type:w===`list`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(yt,{size:14}),style:{borderRadius:`4px 0 0 4px`},onClick:()=>De(`list`)}),/* @__PURE__ */ K(D,{size:`small`,theme:w===`grid`?`solid`:`light`,type:w===`grid`?`primary`:`tertiary`,icon:/* @__PURE__ */ K(re,{size:14}),style:{borderRadius:`0 4px 4px 0`},onClick:()=>De(`grid`)})]})]}),/* @__PURE__ */ K(B,{title:`上传进度`,visible:g,onCancel:()=>_(!1),footer:f.every(ha)?/* @__PURE__ */ K(D,{type:`primary`,onClick:()=>_(!1),children:`关闭`}):null,width:480,keepDOM:!1,children:/* @__PURE__ */ K(`div`,{style:{display:`flex`,flexDirection:`column`,gap:14,padding:`4px 0`},children:f.map(e=>/* @__PURE__ */ q(`div`,{children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:4},children:[/* @__PURE__ */ q(h,{spacing:6,style:{overflow:`hidden`,flex:1,minWidth:0},children:[/* @__PURE__ */ K(`span`,{style:{display:`flex`,alignItems:`center`,flexShrink:0},children:Qr(void 0,14,e.name)}),/* @__PURE__ */ K(c.Text,{ellipsis:{showTooltip:!0},style:{fontSize:13,flex:1,minWidth:0},children:e.name})]}),/* @__PURE__ */ q(h,{spacing:6,style:{flexShrink:0,marginLeft:8},children:[/* @__PURE__ */ K(c.Text,{type:`tertiary`,size:`small`,children:J(e.size)}),e.status===`uploading`&&/* @__PURE__ */ q(c.Text,{size:`small`,children:[e.progress,`%`]}),e.status===`success`&&/* @__PURE__ */ K(ht,{size:14,color:`var(--arc-antd-color-success)`}),e.status===`error`&&/* @__PURE__ */ K(T,{content:e.errorMsg,children:/* @__PURE__ */ K(_t,{size:14,color:`var(--arc-antd-color-danger)`})}),e.status===`cancelled`&&/* @__PURE__ */ K(c.Text,{type:`tertiary`,size:`small`,children:`已取消`}),!ha(e)&&/* @__PURE__ */ K(T,{content:`取消上传`,children:/* @__PURE__ */ K(D,{theme:`borderless`,type:`tertiary`,size:`small`,icon:/* @__PURE__ */ K(qt,{size:14}),"aria-label":`取消上传 ${e.name}`,onClick:()=>Ne(e.uid)})})]})]}),/* @__PURE__ */ K(a,{percent:e.progress,type:`line`,size:`small`,stroke:la(e.status),showInfo:!1,style:{margin:0}})]},e.uid))})}),/* @__PURE__ */ K(Ri,{preview:I}),/* @__PURE__ */ K(Bi,{visible:!!fe,file:Te,loading:Ee,resolveUrl:e=>e.directUrl??Xr(e.url),onCopyUrl:e=>void Le(e),onClose:()=>{P(null),me(null)},extraRows:pe?[{key:`分辨率`,value:`${pe.width} × ${pe.height} px`}]:[]}),w===`list`?/* @__PURE__ */ K(Ut,{searchConfig:ze,columns:Re,empty:`暂无文件记录`,...At(be,{pagination:ue,rowSelection:n(`system:file:delete`)?{selectedRowKeys:A,onChange:e=>j((e??[]).map(String))}:void 0})}):/* @__PURE__ */ q(G,{children:[n(`system:file:delete`)&&(F?.list??[]).length>0&&(()=>{let e=(F?.list??[]).map(e=>e.id),t=e.filter(e=>A.includes(e)),n=t.length===e.length,r=t.length>0&&!n;return/* @__PURE__ */ q(`div`,{className:`files-grid-select-bar`,style:{display:`flex`,alignItems:`center`,gap:8},children:[/* @__PURE__ */ K(p,{checked:n,indeterminate:r,onChange:()=>ke(!n),children:/* @__PURE__ */ q(`span`,{style:{fontSize:14,color:`var(--arc-antd-color-text-0)`},children:[`全选当前页`,t.length>0&&/* @__PURE__ */ q(`span`,{style:{marginLeft:4,color:`var(--arc-antd-color-text-2)`,fontWeight:400},children:[`(`,t.length,`/`,e.length,`)`]})]})}),A.length>0&&/* @__PURE__ */ q(D,{size:`small`,theme:`light`,type:`tertiary`,icon:/* @__PURE__ */ K(qt,{size:12}),onClick:()=>j([]),children:[`已选 `,A.length,` 项,取消选择`]})]})})(),/* @__PURE__ */ K(s,{grid:{gutter:[6,8],xs:8,sm:6,md:4,lg:3,xl:2,xxl:2},dataSource:F?.list??[],loading:be.isFetching,split:!1,emptyContent:/* @__PURE__ */ K(`div`,{className:`files-grid-empty`,children:`暂无文件记录`}),renderItem:e=>/* @__PURE__ */ K(s.Item,{style:{padding:0,height:`100%`},children:/* @__PURE__ */ K(Xi,{file:e,selected:A.includes(e.id),canSelect:n(`system:file:delete`),onSelect:Oe,onPreview:I.handlePreview,onDownload:I.handleDownload,onDelete:Pe,onDetail:Ae,onCopyUrl:Le,canDelete:n(`system:file:delete`),previewLoading:I.previewLoadingId===e.id})},e.id)}),(F?.total??0)>0&&/* @__PURE__ */ K(`div`,{className:`files-grid-pagination`,children:/* @__PURE__ */ K(se,{currentPage:oe,pageSize:ce,total:F?.total??0,onPageChange:e=>{O(e)},onPageSizeChange:e=>{k(e),O(1)},showSizeChanger:!0,showTotal:!0,pageSizeOpts:_a})})]})]}):null}var pa,ma,ha,ga,_a;function va(){return(va=e((()=>{Qt(),Hi(),l(),bt(),Fr(),te(),vt(),mt(),gt(),Gt(),X(),Ei(),zi(),Wi(),Zi(),$i(),Ft(),Ht(),wt(),ge(),Et(),i(),ce(),O(),{Text:pa}=c,ma=[`pending`,`uploading`],ha=e=>!ma.includes(e.status),ga=60,_a=[60,120,240]})))()}var ya;function ba(){return(ba=e((()=>{ke(),Ne(),ya=class extends De{_getDefaultSeriesSpec(e){let t=super._getDefaultSeriesSpec(e,[`point`,`line`,`activePoint`,`sampling`,`samplingFactor`,`pointDis`,`pointDisMul`,`markOverlap`,`lineLabel`]);return t.seriesMark=e.seriesMark??`line`,t}transformSpec(e){super.transformSpec(e),L(e)}}})))()}var Q,xa;function Sa(){return(Sa=e((()=>{Ve(),fn(),nt(),ba(),ze(),Te(),Ae(),ye(),Xe(),we(),I(),ct(),lt(),Q=class extends be{constructor(){super(...arguments),this.transformerConstructor=ya,this.type=`line`,this.seriesType=Ke.line}_setModelOption(){this._modelOption.getDimensionInfo=Se,this._modelOption.getDimensionInfoByValue=Me,this._modelOption.getRectByDimensionData=Re}},Q.type=`line`,Q.seriesType=Ke.line,Q.transformerConstructor=ya,un(Q,Pe),xa=()=>{ot(),Ie(),Ue(),Ye(),je(),dn(),et.registerChart(Q.type,Q)}})))()}var Ca;function wa(){return(wa=e((()=>{Ge(),Sa(),Ee(),xe(),at(),Ca=Ce(`LineChart`,{type:`line`,vchartConstructor:rt},[xa,Oe,...Le])})))()}function Ta({value:e,max:t,minPercent:n=0,color:r,fillOpacity:i,track:a,height:o=8,radius:s,title:c,className:l,style:u}){let d=Number.isFinite(e)&&Number.isFinite(t)&&t>0?e/t:0,f=Math.min(100,Math.max(e>0?n:0,d*100)),p=[`zx-data-bar`,l].filter(Boolean).join(` `),m={"--zx-bar-height":`${o}px`,"--zx-bar-scale":f/100,...r?{"--zx-bar-stroke":r}:{},...i===void 0?{}:{"--zx-bar-opacity":i},...a?{"--zx-bar-track":a}:{},...s===void 0?{}:{"--zx-bar-radius":typeof s==`number`?`${s}px`:s},...u};return/* @__PURE__ */ K(`div`,{className:p,style:m,title:c,"aria-hidden":`true`,children:/* @__PURE__ */ K(`span`,{className:`zx-data-bar__fill`})})}function Ea(){return(Ea=e((()=>{})))()}function Da(){let e=st(),t=ir(),n=t.data??null,r=n?.summary,i=r?.totalFiles??0,a=U(()=>(n?.providerStats??[]).map((e,t)=>({...e,providerLabel:Oa[e.provider]??e.provider,fill:ka[t%ka.length]})),[n]),s=U(()=>(n?.uploaderStats??[]).map(e=>({...e,sizeLabel:J(e.size)})),[n]),c=U(()=>$e({data:a,xField:`providerLabel`,series:[{field:`count`,name:`文件数`,color:`#3b82f6`}],palette:e,horizontal:!0,categoryAxisWidth:80,colorByDatum:e=>String(e?.fill),tooltip:{value:e=>`${e} 个文件`}}),[e,a]),l=U(()=>We({data:n?.monthlyStats??[],xField:`month`,series:[{field:`count`,name:`新增文件`,color:`#3b82f6`}],palette:e,point:!0,tooltip:{value:e=>`${e} 个`}}),[e,n]),u=U(()=>$e({data:n?.sizeRangeStats??[],xField:`range`,series:[{field:`count`,name:`文件数`,color:`#10b981`}],palette:e,tooltip:{value:e=>`${e} 个`}}),[e,n]),d=U(()=>$e({data:s,xField:`username`,series:[{field:`count`,name:`文件数`,color:`#8b5cf6`}],palette:e,horizontal:!0,categoryAxisWidth:80,tooltip:{value:e=>`${e} 个文件`}}),[e,s]);return/* @__PURE__ */ K(o,{spinning:t.isFetching,children:/* @__PURE__ */ q(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[/* @__PURE__ */ q(Qe,{children:[/* @__PURE__ */ K(it,{title:`文件总数`,value:i>0?i.toLocaleString():z}),/* @__PURE__ */ K(it,{title:`占用空间`,value:r?J(r.totalSize):z}),/* @__PURE__ */ K(it,{title:`今日新增`,value:r?.todayCount==null?z:r.todayCount.toLocaleString(),sub:`今日共上传`}),/* @__PURE__ */ K(it,{title:`本月新增`,value:r?.thisMonthCount==null?z:r.thisMonthCount.toLocaleString(),sub:`本月共上传`})]}),/* @__PURE__ */ K(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(min(160px, 100%), 1fr))`,gap:12},children:Aa.map(({type:e,label:t,Icon:r,color:a,bgColor:o})=>{let s=n?.typeStats.find(t=>t.type===e),c=s?.count??0,l=s?.size??0,u=i>0?c/i*100:0;return/* @__PURE__ */ q(`div`,{className:`zx-panel`,style:{padding:16,display:`flex`,flexDirection:`column`,gap:10},children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`flex-start`,gap:10},children:[/* @__PURE__ */ K(`div`,{style:{width:38,height:38,borderRadius:`var(--arc-antd-border-radius-large)`,background:o,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:/* @__PURE__ */ K(r,{size:19,color:a})}),/* @__PURE__ */ q(`div`,{style:{flex:1,minWidth:0},children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,alignItems:`baseline`,justifyContent:`space-between`,gap:4},children:[/* @__PURE__ */ K(`span`,{style:{fontSize:13,fontWeight:600,color:`var(--arc-antd-color-text-0)`},children:t}),/* @__PURE__ */ K(`span`,{style:{fontSize:18,fontWeight:700,color:`var(--arc-antd-color-text-0)`,flexShrink:0},children:c.toLocaleString()})]}),/* @__PURE__ */ K(`div`,{style:{fontSize:11,color:`var(--arc-antd-color-text-2)`,marginTop:3},children:J(l)})]})]}),/* @__PURE__ */ q(`div`,{children:[/* @__PURE__ */ q(`div`,{style:{display:`flex`,justifyContent:`space-between`,marginBottom:5},children:[/* @__PURE__ */ K(`span`,{style:{fontSize:11,color:`var(--arc-antd-color-text-2)`},children:`占比`}),/* @__PURE__ */ q(`span`,{style:{fontSize:11,fontWeight:600,color:a},children:[u.toFixed(1),`%`]})]}),/* @__PURE__ */ K(Ta,{value:u,max:100,color:a,height:5})]})]},e)})}),/* @__PURE__ */ q(`div`,{className:`chart-grid`,children:[/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`存储类型分布`}),/* @__PURE__ */ K(Fe,{...c,options:Ze,height:220})]}),/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`月度上传趋势(近 12 个月)`}),/* @__PURE__ */ K(Ca,{...l,options:Ze,height:220})]})]}),/* @__PURE__ */ q(`div`,{className:`chart-grid`,children:[/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`文件大小分布`}),/* @__PURE__ */ K(Fe,{...u,options:Ze,height:220})]}),n&&n.uploaderStats.length>0&&/* @__PURE__ */ q(`div`,{className:`zx-panel`,children:[/* @__PURE__ */ K(`div`,{style:$,children:`Top 上传人(按文件数)`}),/* @__PURE__ */ K(Fe,{...d,options:Ze,height:220})]})]})]})})}var Oa,ka,Aa,$;function ja(){return(ja=e((()=>{l(),F(),wa(),He(),Be(),qe(),tt(),Cr(),Wr(),br(),Er(),kr(),Ea(),Ft(),Oa=Hn,ka=[`#3b82f6`,`#10b981`,`#f59e0b`,`#ef4444`,`#8b5cf6`,`#06b6d4`,`#f97316`,`#84cc16`,`#ec4899`],Aa=[{type:`image`,label:`图片`,Icon:Sr,color:`#3b82f6`,bgColor:`rgba(59,130,246,0.12)`},{type:`video`,label:`视频`,Icon:Ur,color:`#8b5cf6`,bgColor:`rgba(139,92,246,0.12)`},{type:`audio`,label:`音频`,Icon:yr,color:`#f59e0b`,bgColor:`rgba(245,158,11,0.12)`},{type:`document`,label:`文档`,Icon:Tr,color:`#10b981`,bgColor:`rgba(16,185,129,0.12)`},{type:`other`,label:`其他`,Icon:Or,color:`#6b7280`,bgColor:`rgba(107,114,128,0.12)`}],$={fontSize:14,fontWeight:600,color:`var(--arc-antd-color-text-0)`,marginBottom:12}})))()}var Ma=/* @__PURE__ */ t({default:()=>Na});function Na(){let{hasPermission:e}=En(),t=e(`system:file:config`),n=e(`system:file:list`),r=U(()=>Pa.filter(e=>e.key===`config`?t:n),[t,n]),i=an(r.map(e=>e.key),n?`list`:`config`),a=i.active;return r.length===0?/* @__PURE__ */ K(x,{description:`无访问权限`}):/* @__PURE__ */ K(`div`,{className:`page-container page-container--stretch`,children:/* @__PURE__ */ K(me,{defaultSize:260,minSize:200,maxSize:400,persistKey:`file-management`,style:{flex:1,minHeight:0,overflow:`hidden`},showDetail:a!==null,onBack:i.back,onResponsiveChange:i.responsiveChange,master:/* @__PURE__ */ K(tn,{title:`文件管理`,rawBody:!0,children:/* @__PURE__ */ K(on,{sections:r,active:a,onSelect:i.select})}),detail:/* @__PURE__ */ q(me.Body,{padding:a===`config`?0:16,scroll:a===`stats`?`auto`:`hidden`,style:{display:`flex`,flexDirection:`column`},children:[n&&/* @__PURE__ */ K(fa,{active:a===`list`}),t&&a===`config`&&/* @__PURE__ */ K(aa,{}),n&&a===`stats`&&/* @__PURE__ */ K(Da,{})]})})})}var Pa;function Fa(){return(Fa=e((()=>{Je(),Mr(),Vr(),l(),pe(),nn(),rn(),sn(),ca(),va(),ja(),Pa=[{key:`config`,title:`文件配置`,description:`本地存储与对象存储服务`,icon:Br},{key:`list`,title:`文件列表`,description:`上传、查看和管理文件`,icon:jr},{key:`stats`,title:`统计分析`,description:`存储用量与文件分布`,icon:ve}]})))()}export{Rn as a,ei as i,Fa as n,X as r,Ma as t};
65
+ //# sourceMappingURL=FilesPage-DrgWELKy.js.map