filecat 7.21.2 → 7.22.0

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 (50) hide show
  1. package/build/dist/122.4dcdda2738126091bb48.js +1 -0
  2. package/build/dist/1317.4d1617ed6eddfd2960b5.js +1 -0
  3. package/build/dist/2334.9568f51c698d1e261092.js +1 -0
  4. package/build/dist/{4924.32129da284e5464bf078.js → 2543.c1df37b86fd6b03c3976.js} +2 -2
  5. package/build/dist/259.5dbfcbe6ecd5e8ce07ca.js +1 -0
  6. package/build/dist/2674.983f76fc32b01e807e4d.js +1 -0
  7. package/build/dist/3355.221b11ae8755cb58412f.js +1 -0
  8. package/build/dist/{3402.30e70a3fe5d2c355bae5.js → 3402.913056b796b3aa4dfd5f.js} +1 -1
  9. package/build/dist/4091.4ec37d360601d3f388ee.js +1 -0
  10. package/build/dist/4564.d7a5595346660e89760b.js +2 -0
  11. package/build/dist/4564.d7a5595346660e89760b.js.LICENSE.txt +39 -0
  12. package/build/dist/4598.48aad39fc631a51c30d3.js +1 -0
  13. package/build/dist/47.423c0f43594850475f8d.js +1 -0
  14. package/build/dist/5272.16c3f9821799656a93a9.js +1 -0
  15. package/build/dist/6097.3b8a75477b58137301a6.js +1 -0
  16. package/build/dist/676.ad9fb1447bfc5b04b30a.js +1 -0
  17. package/build/dist/7181.031a335fc6a96a548882.js +1 -0
  18. package/build/dist/7678.b2889b36fac2b90a9061.js +1 -0
  19. package/build/dist/{8435.5cf0507f0dfbd7576fff.js → 8435.1f63fa3aa621962786b1.js} +1 -1
  20. package/build/dist/{8765.13b3b3db8cf2edb74526.js → 8765.800f703d3d31566267ab.js} +1 -1
  21. package/build/dist/9202.acca2abe478020a45f13.js +1 -0
  22. package/build/dist/9260.2f474cb25f7647cb995a.js +1 -0
  23. package/build/dist/{9546.cd3b1747ad87bbd7ccc4.js → 9546.2dc17877ae589e21d6d2.js} +1 -1
  24. package/build/dist/9765.15869054c7b8e56ccc76.js +1 -0
  25. package/build/dist/991.2ff5a3ada566cb075df6.js +1 -0
  26. package/build/dist/index.html +1 -1
  27. package/build/dist/main.19ecdddaf894b36f1a47.js +2 -0
  28. package/build/main.js +1 -1
  29. package/package.json +5 -1
  30. package/build/dist/2334.8944eba9ea6bea2c873b.js +0 -1
  31. package/build/dist/2543.a6ee7f78b6f447ccae9f.js +0 -1
  32. package/build/dist/259.ed90168189edc15b3ea6.js +0 -1
  33. package/build/dist/2674.26ef7b92f7a50dde4275.js +0 -1
  34. package/build/dist/3355.70ffd73778049aa73d5c.js +0 -1
  35. package/build/dist/3528.f4bf3684610c3ce28c08.js +0 -1
  36. package/build/dist/4091.bbca4ee92e5d078ee770.js +0 -1
  37. package/build/dist/4598.6528d76c619352e7e1f3.js +0 -1
  38. package/build/dist/47.0ad0f7d1c95e6691b317.js +0 -1
  39. package/build/dist/5272.124204f2cb80d69e8561.js +0 -1
  40. package/build/dist/5877.afb89fcd6cbae1ab8e39.js +0 -1
  41. package/build/dist/6097.98ee6ec678fafcc2c2ba.js +0 -1
  42. package/build/dist/676.4671c5b267b93fd2112d.js +0 -1
  43. package/build/dist/7181.2403d6d75f9d4ea6917d.js +0 -1
  44. package/build/dist/7678.5769d70f52981f9434d1.js +0 -1
  45. package/build/dist/8358.1d1c09cc6b9185e388a2.js +0 -1
  46. package/build/dist/9260.72cae497ae765cc00d54.js +0 -1
  47. package/build/dist/9765.2f0daa101ea2bc02379a.js +0 -1
  48. package/build/dist/main.f512bdab9a0595432be0.js +0 -2
  49. /package/build/dist/{4924.32129da284e5464bf078.js.LICENSE.txt → 2543.c1df37b86fd6b03c3976.js.LICENSE.txt} +0 -0
  50. /package/build/dist/{main.f512bdab9a0595432be0.js.LICENSE.txt → main.19ecdddaf894b36f1a47.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[6097],{56097(e){e.exports=JSON.parse('{"title":"FileCat","修改密码":"Passwort ändern","自定义auth":"Benutzerdefiniertes Auth","tk_exp":"Token-Ablaufzeit","目标":"Ziel","目标列表":"Ziele","被同步的源目录":"Zu synchronisierendes Quellverzeichnis","成功":"Erfolg","已开启":"Aktiviert","已关闭":"Deaktiviert","sy_tp1":"Nur kleine Dateien werden unterstützt, z. B. Konfigurations- und Codedateien","sy_tp2":"Dateien werden standardmäßig nicht sofort synchronisiert, nur nach Änderungen. Bei aktivierter Vollsync synchronisiert der Client bei jeder Verbindung alle Dateien rekursiv - belastend bei großen Bäumen.","sy_tp3":"Eine Aufgabe kann mehrere Ziele haben, jedes mit eigenem Verzeichnis und Vollsync-Option.","立即同步":"Jetzt synchronisieren","已触发同步":"Sync ausgelöst","操作失败":"Vorgang fehlgeschlagen","tsk_off":"Bitte Aufgabe zuerst aktivieren und speichern","mnt_type":"Mount-Typ","cred_sel":"Anmeldedaten","lcl_abs":"Absoluter lokaler Pfad","rem_dir":"Remote-Verzeichnis","disp_only":"Name in der Liste","tag_pub":"Tag-Änderungen sind für alle sichtbar","portrng":"Startport darf nicht größer als Endport sein","https_s":"HTTPS-Einstellungen","ssl_crt":"SSL-Zertifikatspfad","ssl_key":"SSL-Privatschlüsselpfad","crt_pth":"Pfad zum Zertifikat (cert.pem/fullchain.pem)","ky_pth":"Pfad zum privaten Schlüssel (privkey.pem)","语言":"Sprache","文件夹路径":"Ordnerpfad","编号":"Nummer","路径":"Pfad","sub_dir":"Unterverzeichnis","是否默认":"Ist Standard?","备注":"Bemerkung","编辑SQL":"SQL bearbeiten","SQL 预设":"SQL-Voreinstellung","耗时":"Dauer","确认":"Bestätigen","请输入备注":"Bitte Hinweis eingeben","查询全部表":"Alle Tabellen abfragen","SQL预设设置":"SQL-Voreinstellungen","SQL预设":"SQL-Voreinstellung","更新保存":"Aktualisieren & Speichern","创建新预选项":"Neue Voreinstellung","添加预设":"Voreinstellung hinzufügen","SQL代码":"SQL-Code","保存成功":"Erfolgreich gespeichert","大纲":"Gliederung","新建主题":"Neues Theme","编辑主题":"Theme bearbeiten","删除主题":"Theme löschen","主题名称":"Theme-Name","请输入主题名称":"Bitte Theme-Namen eingeben","主题实时预览":"Live-Vorschau","删除成功":"Gelöscht","删除失败":"Löschen fehlgeschlagen","cf_thm":"Dieses Theme löschen?","导出PDF":"PDF exportieren","no_head":"Noch keine Überschriften","未命名标题":"Unbenannte Überschrift","更新成功":"Erfolgreich aktualisiert","创建成功":"Erfolgreich erstellt","sql_in":"Bitte SQL-Anweisung eingeben","新密码":"Neues Passwort","新账号":"Neues Konto","关闭":"Schließen","开启":"Öffnen","展开":"Erweitern","指定时间":"Festgelegte Zeit","永不过期":"Niemals ablaufen","清空token":"Token leeren","保存":"Speichern","确定":"Bestätigen","确定修改":"Änderung bestätigen","删除":"Löschen","添加":"Hinzufügen","系统":"System","follow_sys":"Systemeinstellung folgen","no_theme":"Kein Theme","自定义页面路由":"Benutzerdefinierte Seitenroute ","api_rt":"Benutzerdefinierte API-Route","跳转路由":"Sprungroute","路由":"Route","文件":"Datei","自定义路由":"Benutzerdefinierte Routen","编辑":"Bearbeiten","查看":"Anzeigen","默认配置":"Standardkonfiguration","设置":"Einstellungen","退出登录":"Ausloggen","虚拟网络":"Virtuelles Netzwerk","系统信息":"Systeminformationen","工具箱":"Werkzeugkasten","索引":"Index","文件夹":"Ordner","客户端":"Client","服务器":"Server","服务端":"Server","基本信息":"Grundlegende Informationen","系统性能":"Systemleistung","总容量":"Gesamtkapazität","剩余":"Rest","使用率":"Nutzungsrate","内存":"Speicher","系统进程":"Systemprozesse","doc_ct":"Docker-Container","物理硬盘":"Physikalische Festplatte","文件硬盘":"Dateifestplatte","容器":"Container","名字":"Name","镜像":"Bild","命令":"Befehl","状态":"Status","选择":"Auswahl","过滤":"Filtern","账号":"Konto","密码":"Passwort","目录":"Verzeichnis","私钥路径":"Privat-Schlüssel-Pfad","连接地址":"Verbindungsadresse","端口":"Port","port":"Port","host":"Host","key":"Schlüssel","代理":"Proxy","浏览器":"Browser","网络唤醒":"Wake-on-LAN","时间工具":"Zeitwerkzeug","JSON 格式转换":"JSON-Formatkonvertierung","编解码":"Kodieren / Dekodieren","摘要算法":"Hash-Algorithmus","正则测试":"Regex-Tester","开发者工具":"Entwicklerwerkzeuge","切换样式":"Stil wechseln","更多":"Mehr","创建文件夹":"Ordner erstellen","创建文件":"Datei erstellen","连接":"Verbinden","地址":"Adresse","目标设备":"Zielgerät","发送":"Senden","腾讯":"Tencent","云":"Cloud","厂商":"Hersteller","名称":"Name","厂商名称":"Herstellername","类型":"Typ","容量":"Kapazität","挂载位置":"Mount-Punkt","剩余容量":"Restkapazität","登录":"Anmelden","是":"Ja","否":"Nein","流量转发":"Traffic-Forwarding","点对点":"Peer-to-Peer","模式":"Modus","虚拟":"Virtuell","在线状态":"Online-Status","物理":"Physikalisch","账号设置":"Kontoeinstellungen","说明":"Beschreibung","文件系统类型":"Dateisystemtyp","机械":"Mechanisch","固态":"Festplatte","复制":"Kopieren","剪切":"Ausschneiden","压缩":"Komprimieren","下载":"Herunterladen","重命名":"Umbenennen","创建文本文件":"Text-Datei erstellen","解压":"Entpacken","转换到":"Konvertieren in","自定义":"Benutzerdefiniert","粘贴到此处":"Hier einfügen","创建":"Erstellen","制造商":"Hersteller","总内存":"Gesamtspeicher","最大":"Maximal","品牌":"Marke","逻辑核心":"Logischer Kern","搜索当前目录":"Im aktuellen Verzeichnis suchen","压缩文件":"Datei komprimieren","取消":"Abbrechen","环境控制":"Umgebungskontrolle","control_env_tip":"Konfiguration über env-ähnliche Schlüssel-Wert-Zeilen; auskommentieren deaktiviert den Eintrag. allowed_hosts erlaubt nur passende Hosts, forbid_hosts lehnt passende Hosts ab. Werte sind Arrays von regulären Ausdrücken (vollständige Übereinstimmung, nur Hostname ohne Port). Abgelehnte Anfragen werden ohne Antwort sofort getrennt.","只支持以下配置项":"Nur diese Schlüssel werden unterstützt","值必须是 JSON 数组":"Wert muss ein JSON-Array sein","正则表达式不合法":"Ungültiger regulärer Ausdruck","运行":"Ausführen","格式":"Format","压缩到":"Komprimieren nach","进度":"Fortschritt","解压到":"Entpacken nach","当前目录":"Aktuelles Verzeichnis","解压文件":"Datei entpacken","视频格式转换":"Video-Format-Konvertierung","gen_dir":"Die Zieldatei der generierten Datei befindet sich im aktuellen Verzeichnis","ff_fmt":"Von ffmpeg unterstützte Zieleformate","del_f":"Sollen die ausgewählten Dateien gelöscht werden?","输入目录名":"Verzeichnisnamen eingeben","cut_ovr":"Ausschneiden (Überschreiben) bestätigen","cp_ovr":"Kopieren (Überschreiben) bestätigen","修改名字":"Namen ändern","输入新名字":"Neuen Namen eingeben","个文件正在上传":"Dateien werden hochgeladen","确定删除":"Löschen bestätigen","是否删除":"Löschen?","输入文本名":"Textnamen eingeben","添加索引":"Index hinzufügen","物理核心":"Physikalischer Kern","创建目录":"Verzeichnis erstellen","访问目录":"Verzeichnis zugreifen","mac_dst":"MAC-Adresse des Zielgeräts","要代理的url":"Zu proxynde URL","系统代理端口":"System-Proxy-Port","返回":"Zurück","不允许为空":"Darf nicht leer sein","ff_none":"ffmpeg nicht gefunden","disk":"Festplatte","part":"Partition","lvm":"Logisches Volume Management","网址":"Webadresse","环境":"Umgebung","外部软件":"Externe Software","保护路径":"Geschützter Pfad","软件":"Software","是否安装":"Ist installiert?","角色管理":"Rollenverwaltung","用户管理":"Benutzerverwaltung","角色id":"Rollen-ID","角色名":"Rollenname","用户id":"Benutzer-ID","用户名":"Benutzername","目录范围":"Verzeichnisbereich","可执行的命令":"Ausführbare Befehle","禁止目录范围":"Verbotener Verzeichnisbereich","可执行命令":"Ausführbare Befehle","系统进程关闭":"Systemprozesse beenden","dc_ctdl":"Docker-Container stoppen und löschen","dc_idl":"Docker-Image löschen","tk_time":"Token-Zeit ändern","自定义资源路由":"Benutzerdefinierte Ressourcenroute","磁盘挂载":"Festplatte einhängen","ssh_sv":"SSH-Schlüssel auf der Festplatte speichern","外部软件路径":"Pfad der externen Software","log_del":"Dateien löschen, ausschneiden, umbenennen","内容更新":"Inhalt aktualisieren","标签编辑权限":"Berechtigung zum Bearbeiten von Tags","ssh代理":"SSH-Proxy","http代理":"HTTP-Proxy","浏览器代理":"Browser-Proxy","rdp代理":"RDP-Proxy","rtsp播放器":"RTSP-Player","角色":"Rolle","文件回收站":"Papierkorb","个人保护路径":"Persönlicher geschützter Pfad","系统保护路径":"Systemgeschützter Pfad","小于一分钟":"Weniger als eine Minute","分钟前":"Minuten ago","小时前":"Stunden ago","天前":"Tage ago","月前":"Monate ago","年前":"Jahre ago","挂载位置磁盘":"Festplatte am Mount-Punkt","信息":"Information","磁盘剩余":"Festplattenrest","文件系统":"Dateisystem","文件夹数":"Anzahl der Ordner","文件数":"Anzahl der Dateien","当前位置":"Aktuelle Position","输入文件名":"Dateinamen eingeben","o_stdo":"Mit Studio öffnen","o_img":"Mit Bildeditor öffnen","预览图片":"Bildvorschau","运行并实时查看":"Ausführen und live ansehen","实时查看":"Live ansehen","输入参数运行":"Mit Parametern ausführen","以文本打开":"Als Text öffnen","以日志打开":"Als Log öffnen","上传":"Hochladen","文件选项":"Dateioptionen","添加类目":"Kategorie hinzufügen","全部编辑":"Alle bearbeiten","输入类目名":"Kategorienamen eingeben","折叠":"Zusammenklappen","全部折叠":"Alle einklappen","(无内容)":"(Kein Inhalt)","请求头":"Anforderungsheader","请求体":"Anforderungstext","值":"Wert","上传文件":"Datei hochladen","下载到本地目录":"In lokales Verzeichnis herunterladen","本地地址":"Lokale Adresse","完成":"Abgeschlossen","结束":"Beenden","响应头":"Antwortheader","正在下载":"Wird heruntergeladen","输入标签名":"Tag-Namen eingeben","frm_lm":"Das Formular enthält Dateien. Aufgrund von Browserbeschränkungen kann nicht hinzugefügt werden.","非对称密钥":"Asymmetrischer Schlüssel","将覆盖密钥文件":"Schlüsseldatei wird überschrieben","加密算法":"Verschlüsselungsalgorithmus","输出格式":"Ausgabeformat","普通PEM":"Normales PEM","生成":"Generieren","ssh_dir":"In .ssh-Verzeichnis speichern","私钥":"Privat-Schlüssel","时间转换器":"Zeitkonverter","格式化时间":"Formatiere Zeit","毫秒":"Millisekunde","分秒":"Minute und Sekunde","实时信息":"Echtzeitinformationen","运行用户":"Ausführender Benutzer","当前系统":"Aktuelles System","进程":"Prozess","ld_wait":"Wird geladen, bitte warten...","选中":"Ausgewählt","创建用户":"Benutzer erstellen","升序":"Aufsteigend","降序":"Absteigend","dc_nne":"Docker kann nicht erkannt werden. Möglicherweise ist Docker auf dem Host nicht installiert oder die Container sind leer.","过滤镜像":"Bilder filtern","列表更新":"Liste aktualisieren","执行命令":"Befehl ausführen","打印日志":"Log ausgeben","删除容器":"Container löschen","删除镜像":"Bild löschen","doc_img":"Docker-Bild","doc_icf":"Sind Sie sicher, dass Sie das ausgewählte Bild löschen möchten?","系统运行于":"Das System läuft auf","全局变量":"Globale Variablen","up_conc":"Maximale Anzahl paralleler Datei-Uploads","单用户并发数量":"Parallele Anzahl pro Benutzer","系统并发数量":"Parallele Anzahl des Systems","big_res":"Sollen Breakpoints für große Dateien aktiviert werden?","big_sz":"Größe für die Bestimmung großer Dateien in MB","大文件并发数量":"Parallele Anzahl für große Dateien","big_ck":"Blockgröße für große Dateien in MB","页面资源路由":"Seitenressourcenroute","wf_rt":"Workflow-Auslöseroute","过期时间(s)":"Ablaufzeit (s)","文件路径":"Dateipfad","path_up":"Aktualisierung des systemgeschützten Pfads","path_md":"Änderung des PATH-Pfads","执行用户":"Ausführender Benutzer","执行":"Ausführen","wf_api":"Änderung der Workflow-Auslöse-API","up_lim":"Änderung der Einschränkung der Anzahl der hochgeladenen Dateien im Verzeichnis","功能权限":"Funktionsberechtigungen","角色备注":"Rollenbemerkung","pxy_off":"HTTP-Proxy-Download deaktiviert","工具功能":"Werkzeugfunktionen","全局变量设置":"Globale Variablen-Einstellungen","文件回收站修改":"Papierkorb ändern","文件权限":"Dateiberechtigungen","log_wr":"Dateien erstellen, hochladen, Inhalt aktualisieren, entpacken","只读目录范围":"Schreibgeschützter Verzeichnisbereich","更新":"Aktualisieren","use_env":"Standardmäßig Umgebungsvariablen verwenden","sync_sv":"Informationen an den ausgewählten Server synchronisieren","add_rot":"HTTP-Ressourcen-Wurzelverzeichnis hinzufügen","dl_here":"HTTP-Ressourcen in diesem Verzeichnis herunterladen","文件排序":"Dateien sortieren","系统默认":"Systemstandard","修改时间":"Änderungszeit","时间逆序":"Zeit rückwärts","时间顺序":"Zeit vorwärts","大小逆序":"Größe rückwärts","大小顺序":"Größe vorwärts","文件大小":"Dateigröße","网站标题":"Webseitentitel","通用设置":"Allgemeine Einstellungen","主题":"Thema","时区":"Zeitzone","时间":"Zeit","服务器时间":"Serverzeit","在线时间":"Onlinezeit","离线时间":"Offlinezeit","在线":"Online","离线":"Offline","功能文档":"Funktionsdokumentation","官网地址":"https://filecat.xiaobaidadada.fun/","远程代理":"Remote-Proxy","系统管理":"Systemverwaltung","网址导航":"Webadressnavigation","目录快捷命令":"Verzeichnis-Schnellbefehl","文件快捷命令":"Datei-Schnellbefehl","系统网络":"Systemnetzwerk","复制名字":"Namen kopieren","分享":"Teilen","复制绝对路径":"Absoluten Pfad kopieren","复制相对路径":"Relativen Pfad kopieren","切换目录":"Verzeichnis wechseln","统计信息":"Statistiken","更新AI知识库":"KI-Wissensdatenbank aktualisieren","exp_hr":"Verbleibende Ablaufzeit (Stunden)","可以为空":"Darf leer sein","自动加载":"Automatisch laden","本地知识库":"Lokale Wissensdatenbank","知识库加载信息":"Informationen zum Laden der Wissensdatenbank","最近一次加载":"Letzter Ladevorgang","加载进度":"Ladefortschritt","总文件数量":"Gesamtdateianzahl","总文件字符数量":"Gesamtanzahl der Zeichen in Dateien","总文件大小":"Gesamte Dateigröße","总耗时":"Gesamtzeit","上一页":"Vorherige Seite","目标地址":"Zieladresse","目标端口":"Zielport","连接状态":"Verbindungsstatus","个人设置":"Persönliche Einstellungen","系统设置":"Systemeinstellungen","文件后缀":"Dateisuffix","禁止执行的命令":"Verbotene Befehle","Ai 配置":"KI-Konfiguration","文件分享":"Dateifreigabe","输入跳转的目录":"Zielverzeichnis eingeben","文件分享列表":"Liste der Dateifreigaben","过期小时":"Ablauf in Stunden","下载次数":"Anzahl der Downloads","剩余时间":"Verbleibende Zeit","文件加载方式":"Dateilademodus","全部加载文件":"Alle Dateien laden","scrll_l":"Dateien seitenweise beim Scrollen laden","剩余时间(h)":"Verbleibende Zeit (h)","网络代理":"Netzwerkproxy","个人":"Personal","安装方式":"Installationsmethode","是否开启":"Aktiviert","系统启动执行":"Beim Systemstart ausführen","表达式":"Ausdruck","用户":"Benutzer","详细信息":"Details","服务器配置":"Serverkonfiguration","客户端列表":"Client-Liste","更多服务器":"Weitere Server","端口映射":"Portzuordnung","序号":"Nr.","服务器端口":"Serverport","转发客户端名称":"Weiterleitungs-Clientname","服务端口":"Dienstport","转发ip":"Weiterleitungs-IP","转发端口":"Weiterleitungsport","客户端代理配置":"Client-Proxy-Konfiguration","客户端桥接配置":"Client-Bridge-Konfiguration","远程地址":"Remote-Adresse","在线时长":"Online-Dauer","fwd_nm":"Weiterleitungs-Clientname","sv_ntf":"Speichern und den ersten Schlüssel und Port an den Client benachrichtigen","br_port":"Bridge-Server-Portliste","输入消息":"Nachricht eingeben","用户权限":"Benutzerberechtigungen","系统管理权限":"Berechtigungen für die Systemverwaltung","网络功能权限":"Berechtigungen für Netzwerkfunktionen","Ai 设置权限":"Berechtigungen für KI-Einstellungen","系统设置权限":"Berechtigungen für Systemeinstellungen","系统环境设置":"Systemumgebungseinstellungen","sys_env":"Seite für Systemumgebungseinstellungen","sys_env_setting_tip":"Zum Konfigurieren verschiedener Systemumgebungen, einschließlich einiger nginx-ähnlicher Funktionen","自定义路由页面":"Seite für benutzerdefinierte Routen","代理功能":"Proxy-Funktionen","其他功能":"Andere Funktionen","ddns":"DDNS","ai_page":"KI-Chat-Seite","pty cmd":"PTY-Befehl","wf_run":"Workflow-Ausführung","wf_user":"Benutzer der Workflow-Ausführung","cmd_rst":"filecat-restart-Neustartbefehl","cmd_upg":"filecat-upgrade-Aktualisierungsbefehl","cmd_dwn":"filecat-down-Befehl zum Schließen des Hauptprozesses","cmd_ai":"KI-Befehl (KI-Chat)","个性化设置":"Personalisierte Einstellungen","lgn_usr":"Benutzerinformationen bei Anmeldung anzeigen","个人环境":"Persönliche Umgebung","系统环境":"Systemumgebung","持久化":"Persistieren","个人环境设置":"Persönliche Umgebungs Einstellungen","其他参数":"Andere Parameter","父编号":"Eltern-ID","代理配置":"Proxy-Konfiguration","桥接配置":"Bridge-Konfiguration","brg_tip":"Legen Sie einen Port am Client fest. Der Zugriff auf diesen Port leitet den Datenverkehr an die erste Adresse in der Netzwerkumgebung eines anderen Clients weiter.","内网穿透":"Intranet-Penetration","fc_pxy":"Filecat-Proxy-Zugriff","fc_pxyw":"Filecat-Proxy-Zugriff über Server-Frontend","fc_pxyr":"Benutzerdefinierte Filecat-Proxy-Adresse","fc_pxyc":"Filecat-Proxy-URL kopieren","fc_pxyo":"Filecat-Proxy-URL öffnen","对端账号":"Gegenkonto","对端密码":"Gegenkennwort","保存账号":"Konto speichern","验证登录":"Anmeldung prüfen","已设置":"Gesetzt","未设置":"Nicht gesetzt","便于辨认的名字":"Ein erkennbarer Name","对端 FileCat 登录名":"FileCat-Anmeldung","留空表示不修改":"Leer lassen = unverändert","请填写对端账号":"Bitte Gegenkonto eingeben","已保存":"Gespeichert","原客户端":"Quell-Client","原目录":"Quell-Verzeichnis","目标客户端":"Ziel-Client","目标目录":"Ziel-Verzeichnis","忽略目录":"Ignoriertes Verzeichnis","双向同步":"Bidirektionale Synchronisation","客户端文件同步":"Client-Dateisynchronisation","客户端设置":"Client-Einstellungen","pxy_nln":"Proxyserver für lokale (Intranet-) Adressen umgehen","忽略ip":"IP ignorieren","ai_ask":"Alles den Server abfragen","本地目录":"Lokales Verzeichnis","响应体":"Antworttext","客户端功能":"Client-Funktionen","全量同步":"Vollständige Synchronisierung","公钥":"Öffentlicher Schlüssel","跟随系统":"Systemeinstellung folgen","字符消耗统计":"Zeichenverbrauchsstatistik","加载中...":"Lädt...","对话轮次":"Gesprächsrunden","AI输入字符":"KI-Eingabezeichen","AI输出字符":"KI-Ausgabezeichen","暂无统计数据":"Keine Statistiken verfügbar","会话":"Sitzungen","新会话":"Neue Sitzung","提示词":"Prompt","llm_pmt":"LLM-bearbeitbarer Prompt","LLM编辑开关":"LLM-Bearbeitungsschalter","编辑规则":"Bearbeitungsregeln","选择系统提示词":"System-Prompt auswählen","清空全部会话":"Alle Sitzungen löschen","cf_all":"Wirklich alle Chat-Sitzungen löschen?","cf_msgs":"Ausgewählte Nachrichten wirklich löschen?","cf_ses":"Ausgewählte Sitzungen wirklich löschen?","cf_one":"Diese Nachricht wirklich löschen?","批量选择":"Stapelauswahl","查看所有用户会话":"Sitzungen aller Benutzer","查看全部会话时不可发送消息":"Während des Anzeigens aller Sitzungen können keine Nachrichten gesendet werden","仅看我的会话":"Nur meine Sitzungen","取消批量选择":"Stapelauswahl abbrechen","删除选中消息":"Ausgewählte Nachrichten löschen","删除选中会话":"Ausgewählte Sitzungen löschen","切换模型":"Modell wechseln","添加文件":"Datei hinzufügen","无描述":"Keine Beschreibung","暂无工具":"Keine Werkzeuge","查看工具":"Werkzeuge anzeigen","加载工具":"Werkzeuge laden","系统会话提示词":"System-Sitzungs-Prompts","删除记录":"Eintrag löschen","手动加载":"Manuell laden","从索引删除":"Aus Index löschen","知识库开关":"Wissensdatenbank-Schalter","文本对话":"Textdialog","图片生成":"Bildgenerierung","向量嵌入":"Vektoreinbettung","图片参数设置":"Bildparametereinstellungen","更多属性":"Weitere Attribute","model类型":"Modelltyp","成为tool":"Werkzeug werden","操作":"Aktionen","查看Git提交":"Git-Commits anzeigen","Git":"Git","变更":"Changes","提交记录":"Commits","全选":"Select All","没有变更":"No changes","暂无提交记录":"No commits yet","分支":"Branch","git_msg":"Enter commit message...","提交":"Commit","暂存全部":"Stage All","暂存选中":"Stage Selected","取消暂存":"Unstage","已暂存":"Staged","已暂存全部":"All staged","已取消暂存":"Unstaged","请输入提交信息":"Please enter commit message","提交成功":"Commit successful","推送成功":"Push successful","拉取成功":"Pull successful","切换分支成功":"Branch switched","远程操作":"Remote Operations","拉取":"Pull","推送":"Push","强制推送":"Force Push","暂存工作区":"Stash","暂存工作区成功":"Stash successful","恢复工作区":"Stash Pop","恢复工作区成功":"Stash pop successful","刷新":"Refresh","请先选择文件":"Please select files first","提示:":"Tips:","git_stg":"Check files on the left, then use \\"Stage Selected\\" to add them to staging area","git_cmt":"Enter commit message and click \\"Commit\\"","git_cf":"If conflicts occur, please resolve them in shell before committing","git_frc":"\\"Force Push\\" will overwrite the remote branch, use with caution","配置表":"Config Table","offcal":"Leer lassen, um die offiziellen GitHub Releases zu verwenden","def_180":"Standard 180s (3 Minuten)","用户配置":"Benutzerkonfiguration","邮箱":"E-Mail","代理设置":"Proxy-Einstellungen","全局代理":"Globaler Proxy","仓库代理":"Repository-Proxy","修改":"Bearbeiten","用户配置已保存":"Benutzerkonfiguration gespeichert","代理配置已保存":"Proxy-Einstellungen gespeichert","pxy_clr":"Leer lassen, um Proxy zu löschen","pxy_nte":"Benutzerkonfiguration und globaler Proxy gelten für alle Repositories","pxy_url":"HTTP-Proxy-Adresse","端口扫描":"Port-Scan","目标主机":"Ziel-Host","起始端口":"Start-Port","结束端口":"End-Port","并发数":"Parallelität","超时(ms)":"Zeitüberschreitung (ms)","扫描":"Scannen","扫描结果":"Scan-Ergebnisse","扫描完成":"Scan abgeschlossen","扫描失败":"Scan fehlgeschlagen","正在扫描...":"Scannen...","未发现开放端口":"Keine offenen Ports gefunden","scan_in":"Parameter eingeben und auf Scannen klicken","hostreq":"Host-Adresse darf nicht leer sein","端口范围无效":"Ungültiger Port-Bereich","开放":"Offen","总计扫描":"Insgesamt gescannt","已发现":"Gefunden","当前":"Aktuell","扫描已取消":"Scan abgebrochen","自动换行":"Automatischer Umbruch","不换行":"Kein Umbruch","替换":"Ersetzen","env编辑":"Env bearbeiten","命令确认":"Befehlsbestätigung","命令检测开启":"Befehlsprüfung aktivieren","命令检测关闭":"Befehlsprüfung deaktivieren","命令检测已开启":"Befehlsprüfung aktiviert","命令检测已关闭":"Befehlsprüfung deaktiviert","此会话不再询问":"Diese Sitzung nicht mehr fragen","doc_pxy":"Docker-Proxykonfiguration","HTTP 代理":"HTTP-Proxy","pxy_htt":"HTTPS-Proxy","pxy_nne":"No Proxy","保存失败":"Speichern fehlgeschlagen","MD编辑器":"MD-Editor","行":"Zeile","列":"Spalte","默认":"Standard","删除行":"Zeile löschen","删除列":"Spalte löschen","上方插入行":"Zeile oberhalb einfügen","切换表头行":"Kopfzeile umschalten","合并单元格":"Zellen zusammenführen","拆分单元格":"Zelle teilen","下方插入行":"Zeile unterhalb einfügen","左侧插入列":"Spalte links einfügen","右侧插入列":"Spalte rechts einfügen","插入表格":"Tabelle einfügen","加载中":"Laden","打开失败":"Öffnen fehlgeschlagen","重启失败":"Neustart fehlgeschlagen","doc_cfg":"Docker-Konfiguration","名单视图":"Listenansicht","文本视图":"Textansicht","目标(To)":"Ziel (To)","动作":"Aktion","fw_from":"Quelle (From)","删除规则":"Regel löschen","规则编号":"Regelnummer","点击复制":"Zum Kopieren klicken","镜像加速":"Registry-Mirrors","不安全仓库":"Unsichere Registries","开启调试":"Debug aktivieren","数据存储目录":"Datenverzeichnis","存储驱动":"Speichertreiber","日志驱动":"Log-Treiber","fw_iptb":"iptables aktivieren","lve_rst":"Live-Restore","添加规则":"Regel hinzufügen","请填写端口号":"Bitte Port angeben","方向":"Richtung","协议":"Protokoll","来源地址":"Quelladresse","获取失败":"Abrufen fehlgeschlagen","进程环境变量":"Prozess-Umgebungsvariablen","端口实例":"Port-Instanz","srchbln":"Verzeichnis im leeren Suchmodus öffnen","搜索会话":"Sitzungen durchsuchen","sw_mdl":"Wechsel des KI-Modells erlauben","选择模型":"Modell auswählen","mv_self":"Ein Ordner kann nicht in sich selbst verschoben werden","网站 Logo":"Website-Logo","lclorur":"Lokaler Dateipfad oder http(s)-Bild-URL","全部":"Alle","源码模式":"Quelltextmodus","实时编辑模式":"Live-Bearbeitungsmodus","编辑器设置":"Editor-Einstellungen","正文最大宽度":"Maximale Inhaltsbreite","正文左右边距":"Seitlicher Inhaltsabstand","正文字号":"Schriftgröße des Inhalts","行高":"Zeilenhöhe","恢复默认":"Standard wiederherstellen","保存中":"Wird gespeichert","预览":"Vorschau","nprmtp":"Sie sind nicht berechtigt, diese Einstellung zu ändern. Unten wird die aktuelle Konfiguration angezeigt.","md_set":"MD-Editor-Einstellungen","目录挂载":"Verzeichnis-Mount","总开关":"Hauptschalter","挂载":"Einbinden","挂载到网盘":"In Cloud-Speicher einbinden","编辑挂载配置":"Mount-Einstellungen bearbeiten","取消挂载":"Aushängen","确认取消挂载":"Aushängen bestätigen","已取消挂载":"Ausgehängt","该目录尚未挂载":"Dieses Verzeichnis ist nicht eingebunden","挂载目录":"Mount-Verzeichnis","只读":"Nur Lesen","挂载类型":"Mount-Typ","显示名称":"Anzeigename","标识色":"Markierungsfarbe","只读模式":"Nur-Lesen-Modus","测试连接":"Verbindung testen","测试中":"Wird getestet","连接成功":"Verbindung erfolgreich","连接失败":"Verbindung fehlgeschlagen","请选择挂载类型":"Bitte wählen Sie einen Mount-Typ","请填写":"Bitte ausfüllen: ","未授权":"Nicht autorisiert","服务地址":"Serveradresse","起始目录":"Startverzeichnis","留空表示根目录":"Leer lassen für das Stammverzeichnis","主机":"Host","默认 22":"Standard 22","私钥内容":"Inhalt des privaten Schlüssels","与私钥二选一":"Entweder dies oder den privaten Schlüssel","与密码二选一":"Entweder dies oder das Passwort","存储桶":"Bucket","区域":"Region","强制路径风格":"Pfadstil erzwingen","授权账号":"Autorisiertes Konto","百度网盘授权":"Baidu-Cloud-Autorisierung","去授权":"Autorisieren","完成授权":"Autorisierung abschließen","授权码":"Autorisierungscode","回调地址":"Weiterleitungs-URI","rqappky":"Bitte AppKey eingeben","rq_scrt":"Bitte SecretKey eingeben","请填写授权码":"Bitte Autorisierungscode eingeben","svappfr":"Bitte zuerst die App-Konfiguration speichern","授权成功":"Autorisierung erfolgreich","账号可用":"Konto ist verfügbar","账号不可用":"Konto ist nicht verfügbar","校验":"Prüfen","已授权账号":"Autorisierte Konten","已删除":"Gelöscht","处理中":"Wird verarbeitet","AppKey":"AppKey","网盘挂载":"Cloud-Speicher-Mount","凭据管理":"Anmeldedaten","凭据":"Anmeldedaten","新增凭据":"Anmeldedaten hinzufügen","凭据已丢失":"Anmeldedaten fehlen","挂载列表":"Mounts","新增挂载":"Mount hinzufügen","munt_rq":"Mount-Verzeichnis darf nicht leer sein","请选择凭据":"Bitte Anmeldedaten auswählen","请选择类型":"Bitte einen Typ auswählen","启用":"Aktiviert","已停用":"Deaktiviert","确认删除":"Löschen bestätigen:","nmuntpr":"Das aktuelle Konto hat keine Berechtigung für Verzeichnis-Mounts","百度网盘":"Baidu Cloud","应用配置":"App-Einstellungen","授权":"Autorisieren","授权失败":"Autorisierung fehlgeschlagen","strtdrt":"Startverzeichnis","ftr2rmt":"An Gegenstelle weiterleiten","ftr2rmt_tip":"Terminal-, Workflow- und Git-Anfragen in diesem Verzeichnis laufen auf dem entfernten FileCat","授权检测":"Autorisierung prüfen","scrtkep":"SecretKey leer lassen, um unverändert zu lassen","编辑应用":"App bearbeiten","新增授权账号":"Autorisiertes Konto hinzufügen","一键授权":"Ein-Klick-Autorisierung","outh_ob":"Manuell (oob)","pst_cd":"Autorisierungscode einfügen","确认授权":"Autorisierung bestätigen","授权检测/刷新":"Prüfen / aktualisieren","检测完成":"Prüfung abgeschlossen","导入":"importiert","账号名":"Kontoname","百度账号":"Baidu-Konto","网盘昵称":"Cloud-Speicher-Nickname","授权状态":"Autorisierungsstatus","过期时间":"Läuft ab am","授权时间":"Autorisiert am","已授权":"Autorisiert","已过期":"Abgelaufen","停用":"Deaktivieren","已配置":"Konfiguriert","未配置":"Nicht konfiguriert","网盘使用":"Cloud-Speicher aktiv","自动刷新":"Automatisch aktualisieren","编辑账号":"Konto bearbeiten","使用":"Verwenden","当前为挂载目录":"Eingebundenes Verzeichnis","启用挂载":"Mounts aktivieren","已启用":"Aktiviert","挂载已启用":"Mounts aktiviert","挂载已停用":"Mounts deaktiviert","muntont":"Mounts aktiviert, zum Deaktivieren klicken","muntoff":"Mounts deaktiviert, zum Aktivieren klicken","凭证管理":"Anmeldedaten","授权方式":"Autorisierungsmodus","去授权(一键)":"Autorisieren (Ein-Klick)","去授权(手动)":"Autorisieren (manuell)","保存应用配置":"App-Konfiguration speichern","atathtp":"Ein-Klick: Nach der Autorisierung kehren Sie automatisch hierher zurück und das Konto wird hinzugefügt","atathnt":"Ein-Klick erfordert, dass /mount/baidu/callback dieses Dienstes als Weiterleitungs-URI in der Baidu-Konsole registriert wird","pstatht":"Manuell: keine Weiterleitungs-URI nötig. Kopieren Sie nach der Autorisierung den Code von Baidus Seite, fügen Sie ihn unten ein und klicken Sie auf Abschließen","crd_tp":"Ein Zugangsdatum ist die Kontoinformation zum Verbinden mit einem Cloud-Speicher / Remote-Host. Es kann von mehreren Einhängepunkten gemeinsam genutzt werden; eine Änderung wirkt sofort überall.","bidacct":"Baidu-Netdisk-Konten werden hier nicht verwaltet. Autorisieren Sie sie im untenstehenden Bereich \\"Baidu Netdisk\\"; das zugehörige Konto wird nach der Autorisierung automatisch erstellt.","pwdkept":"Beim Bearbeiten bedeutet ein leeres Passwortfeld, dass der ursprüngliche Wert beibehalten wird.","tstbfrs":"Vor dem Speichern können Sie auf \\"Verbindung testen\\" klicken, um das Konto zu prüfen.","prtwbdv":"Ein universelles Dateiprotokoll, das von Jianguoyun, Synology NAS, Nextcloud, Alist und weiteren unterstützt wird. Eine Dienstadresse plus ein Konto genügen, um das entfernte Verzeichnis zu durchsuchen.","prtsftp":"Greift über SSH auf ein Verzeichnis eines entfernten Servers zu und überträgt Dateien über das SFTP-Subsystem. Ideal, um ein Verzeichnis einer anderen Linux-Maschine einzuhängen.","prt_s3":"Objektspeicher-Dienste, die über das S3-Protokoll erreichbar sind, z. B. MinIO, Alibaba Cloud OSS, Tencent COS, Qiniu und Cloudflare R2. Erfordert Endpunkt, Bucket und ein Schlüsselpaar.","深搜":"Tiefensuche","搜索":"Suchen","搜索中":"Suche läuft","范围":"Bereich","结果过多":"Zu viele Treffer, bitte Suchbegriff eingrenzen","已显示":"Angezeigt","搜文件名":"Dateiname rekursiv suchen","搜到该处":"Zum Ordner springen","打开所在目录":"Ordner öffnen","输入后搜":"Dateinamen eingeben und Enter drücken","无匹配":"Keine passenden Dateien gefunden","结果截断":"Zu viele Treffer, nur die ersten 500","缩放调整":"Zoom anpassen","缩放调整成功":"Zoom erfolgreich angepasst","缩放百分比":"Zoom-Prozentsatz","未加载":"Nicht geladen","加载成功":"Geladen","加载失败":"Laden fehlgeschlagen","个工具":"Tools","No share found":"Keine Freigabe gefunden","Enter host first":"Bitte zuerst Host eingeben","下一步":"Weiter","上一步":"Zurück","共享目录":"Freigabeordner","prt_smb":"Windows-Freigabe (SMB/CIFS). Host und Konto eingeben, dann Freigabenamen aus der Liste wählen.","prt_bd":"Baidu Netdisk. App auf der Baidu Open Platform anlegen, AppKey / SecretKey eintragen, dann Konto autorisieren.","没有找到共享":"Keine Freigaben gefunden","粘贴授权码 code":"Autorisierungscode einfügen","重新授权":"Erneut autorisieren","请选择账号":"Bitte ein Konto auswählen","请填写备注":"Bitte eine Notiz eingeben","账号已丢失":"Konto fehlt","已暂存的更改":"Bereitgestellte Änderungen","全部暂存":"Alle bereitstellen","全部取消暂存":"Alle zurücksetzen","暂存":"Bereitstellen","无差异":"Keine Unterschiede","二进制文件":"Binärdatei","单栏":"Einspaltig","并排":"Nebeneinander","点击左侧文件查看差异":"Datei links anklicken, um den Diff anzuzeigen","未跟踪文件无差异":"Nicht verfolgte Dateien haben keinen Diff","请先暂存要提交的文件":"Bitte zuerst die Dateien bereitstellen, die committet werden sollen","没有已更改的文件":"Keine geänderten Dateien","未暂存":"Nicht bereitgestellt","逐行归属":"Zeilenherkunft","无法读取该文件的归属信息":"Herkunftsinformationen können nicht gelesen werden","全部文件":"Alle Dateien","新建分支":"Neuer Branch","删除分支":"Branch löschen","确认删除分支":"Branch löschen?","合并到此分支":"In diesen Branch mergen","新分支名":"Neuer Branch-Name","当前分支":"Aktueller Branch","切换到":"Wechseln zu","分支创建成功":"Branch erstellt","分支删除成功":"Branch gelöscht","合并成功":"Zusammengeführt","标签":"Tags","新建标签":"Neuer Tag","标签名":"Tag-Name","暂无标签":"Keine Tags","标签创建成功":"Tag erstellt","标签删除成功":"Tag gelöscht","标签推送成功":"Tag übertragen","删除标签":"Tag löschen","确认删除标签":"Tag löschen?","请输入标签名":"Tag-Name eingeben","推送到远程":"Zum Remote pushen","基于提交":"Basierend auf Commit","基于当前提交":"Basierend auf aktuellem Commit","暂存工作区记录":"Stash-Einträge","暂无记录":"Keine Einträge","恢复并删除":"Pop","已恢复并删除记录":"Wiederhergestellt und entfernt","已应用":"Angewendet","远程分支":"Remote-Branches","拉取远程信息":"Abrufen","拉取并清理已删除分支":"Abrufen und bereinigen","未配置远程仓库":"Kein Remote konfiguriert","签出到本地":"Lokal auschecken","拉取完成":"Abruf abgeschlossen","冲突":"Konflikte","采用我方版本":"Unsere Version","采用对方版本":"Deren Version","标记已解决":"Als gelöst markieren","标记全部已解决":"Merge abschließen","放弃合并":"Merge abbrechen","确认放弃当前合并并恢复到操作前状态":"Abbrechen und vorherigen Zustand wiederherstellen?","已解决冲突":"Konflikt gelöst","已放弃合并":"Merge abgebrochen","合并已完成":"Merge abgeschlossen","撤销提交":"Commit zurücksetzen","将生成一个反向提交来撤销":"Erstellt einen Rückwärts-Commit zum Zurücksetzen","已撤销":"Zurückgesetzt","摘取提交":"Cherry-Pick","将该提交应用到当前分支":"Diesen Commit auf den aktuellen Branch anwenden","摘取成功":"Cherry-Pick ausgeführt","搜索提交":"Commits suchen","提交信息关键词":"Commit-Nachricht","作者":"Autor","请输入搜索条件":"Suchkriterien eingeben","操作历史":"Verlauf","回退到此处":"Hierher zurücksetzen","强制回退(丢弃改动)":"Hard-Reset (Änderungen verwerfen)","此操作将永久丢弃未提交的改动":"Dies verwirft nicht committete Änderungen dauerhaft","已回退":"Zurückgesetzt","已强制回退":"Hard-Reset ausgeführt","子模块":"Submodule","无子模块":"Keine Submodule","初始化并更新子模块":"Submodule initialisieren und aktualisieren","子模块更新完成":"Submodule aktualisiert","未初始化":"Nicht initialisiert","与记录不一致":"Abweichend vom Eintrag","正常":"Normal","当前提交":"Aktueller Commit","领先上游":"Vor dem Upstream","落后上游":"Hinter dem Upstream","钩子":"Hooks","停用钩子":"Hook deaktivieren","确认删除并停用":"Löschen und deaktivieren","保存并启用":"Speichern und aktivieren","已保存并启用":"Gespeichert und aktiviert","与工作区对比":"Mit Arbeitsverzeichnis vergleichen","仓库":"Repos","初始化仓库":"Repository initialisieren","克隆仓库":"Repository klonen","仓库初始化成功":"Repository initialisiert","克隆成功":"Geklont","目录名":"Verzeichnisname","请输入目录名":"Verzeichnisnamen eingeben","仓库地址":"Repository-URL","请输入仓库地址":"Repository-URL eingeben","当前目录下没有仓库":"Keine Repositories vorhanden","进入":"Öffnen","修改最后一次提交":"Letzten Commit ändern","已修改最后一次提交":"Letzter Commit geändert","分支比较":"Branches vergleichen","两个分支没有差异":"Keine Unterschiede zwischen Branches","确认删除远程分支":"Remote-Branch löschen","该分支会从远程仓库删除":"Dieser Branch wird aus dem Remote-Repository gelöscht","删除远程分支":"Remote-Branch löschen","将":"Merge","合并到":"in","未推送":"Nicht gepusht","已到底部":"Keine weiteren","没有可提交的更改":"Keine Änderungen","存在未暂存的改动,是否一并暂存并提交?":"Es gibt nicht bereitgestellte Änderungen. Zusammen bereitstellen und committen?","二进制文件无法比较":"Binärdatei kann nicht verglichen werden","请选择文件查看改动":"Datei auswählen, um Änderungen zu sehen","clk_edt":"Zum Bearbeiten klicken","rendering":"Wird gerendert…","思维导图":"Mindmap","新窗口打开":"In neuem Tab öffnen","已选":"Ausgewählt","复制所选":"Auswahl kopieren","删除所选":"Auswahl löschen","全部复制":"Alles kopieren","多选":"Auswählen","wbvpn_allow":"WebVPN-Ziel-Whitelist","wbvpn_allow_ph":"Ein Eintrag pro Zeile: 192.168.1.0/24 (CIDR) / 192.168.1.1 (IP) / router.local (Domain, exakt, keine Subdomains)","wbvpn_tip":"WebVPN-Ziel-Whitelist. Ein Eintrag pro Zeile, drei Formate:\\n · CIDR-Bereich: 192.168.1.0/24\\n · Exakte IP: 192.168.1.1 (auch 10.0.0.5, fd00::/8, ::1)\\n · Exakte Domain: router.local, nas.example.com (exakt, Subdomains NICHT enthalten)\\nÖffentliche Adressen sind standardmäßig erlaubt. Private, Loopback-, Link-Local-, Cloud-Metadaten- (169.254.169.254) und reservierte Adressen sind standardmäßig verboten. Fehlerhafte Zeilen werden ignoriert.","wbvpn_port_range":"Proxy-Portbereich","wbvpn_port_tip":"Jedes Ziel belegt einen eigenen Port. Öffnen Sie die Zugriffs-URL, um die Seite zu öffnen; der Pfad bleibt sauber, SPA-Routing funktioniert und die Seiten sind per Origin getrennt.","wbvpn_port_tip2":"Zugriff erfordert Anmeldung: das Öffnen von hier überträgt einmalig ein Token, danach hält ein Cookie die Sitzung. Ziele unterliegen weiterhin der Whitelist/Adressrichtlinie.","wbvpn_port_tip3":"Links auf der Seite, die auf ein aktives Ziel zeigen, werden automatisch auf den Port des Ziels umgeschrieben, sodass Klicks im Proxy bleiben; Domains, die nicht als Ziel konfiguriert sind, bleiben unverändert.","网页代理目标":"Proxy-Ziele","访问地址":"Zugriffs-URL","打开":"Öffnen","已复制":"Kopiert","复制失败":"Kopieren fehlgeschlagen","添加成功":"Hinzugefügt","目标地址不能为空":"Zieladresse darf nicht leer sein","目标地址例如":"Zieladresse, z. B. 192.168.1.1:8080","网页代理":"Web-Proxy","当前窗口打开":"Im aktuellen Tab öffnen","修改成功":"Geändert","浏览器代理编辑":"Browser-Proxy-Bearbeitung","已禁用":"Deaktiviert","prt_local":"Lokales Verzeichnis. Geben Sie einen vorhandenen absoluten Pfad auf diesem Rechner als Quelle an; nach dem Einbinden können Sie ihn in filecat als Verzeichnislink nutzen.","移动到最上":"Nach oben","移动到最下":"Nach unten","会话设置":"Sitzungseinstellungen","服务器工作目录":"Arbeitsverzeichnis auf dem Server","服务器工作目录提示":"z. B. D:\\\\projects\\\\myapp","AI 聊天":"KI-Chat","动态域名解析":"Dynamisches DNS","平台":"Anbieter","账号凭证":"Anmeldedaten","域名绑定":"Domain-Bindung","IP 来源":"IP-Quelle","域名":"Domain","多个域名用空格分隔":"Mehrere Domains durch Leerzeichen trennen","绑定":"Bindung","填写格式":"Format","请填写账号凭证":"Bitte Anmeldedaten eingeben","确定删除吗":"Löschen bestätigen?","ddns_help_1":"Konfigurieren Sie DDNS, um DNS-Einträge automatisch mit Ihrer aktuellen öffentlichen IP zu aktualisieren.","ddns_help_2":"IP-Quellen umfassen lokale Netzwerkschnittstellen und benutzerdefinierte HTTP-Endpunkte.","请输入地址":"Bitte URL eingeben","IP 来源管理":"IP-Quellen verwalten","暂无数据":"Keine Daten","http_source_tip":"Fügen Sie eine IP-Quelle hinzu: entweder einen HTTP-Endpunkt, der Ihre öffentliche IP zurückgibt (z. B. https://4.ipw.cn), oder eine feste IP-Adresse.","同步间隔":"Sync-Intervall","账号状态":"Konto","上次同步":"Letzte Sync","验证":"Prüfen","未验证":"Unbestätigt","失败":"Fehlgeschlagen","同步完成":"Synchronisierung abgeschlossen","间隔不能小于 10 秒":"Intervall muss mindestens 10 Sekunden betragen","文字":"Text","请填写完整的账号凭证":"Bitte alle Anmeldefelder ausfüllen","加载时间线失败":"Zeitachse konnte nicht geladen werden","展开编辑":"Bearbeiten einblenden","收起编辑":"Bearbeiten ausblenden","添加阶段":"Phase hinzufügen","上移":"Nach oben","下移":"Nach unten","起始时间":"Startzeit","结束时间":"Endzeit","阶段倒置":"Phasen umkehren","在阶段前插入":"Davor einfügen","在阶段后插入":"Danach einfügen","拖动排序":"Zum Sortieren ziehen","导出 SVG":"SVG exportieren","折叠全部阶段":"Alle Phasen einklappen","展开全部阶段":"Alle Phasen ausklappen","导出图片":"Als Bild exportieren","导出图片失败":"Bildexport fehlgeschlagen","撤销":"Rückgängig","重做":"Wiederholen","缩小":"Verkleinern","放大":"Vergrößern","重置缩放":"Zoom zurücksetzen","进入编辑模式":"Bearbeitungsmodus starten","退出编辑模式":"Bearbeitungsmodus beenden","事件":"Ereignis","标题":"Titel","描述":"Beschreibung","日期":"Datum","左侧":"Links","右侧":"Rechts","颜色":"Farbe","自定义颜色":"Eigene Farbe","跟随阶段":"Phase folgen","拖动事件气泡可改变位置与所属阶段":"Blase ziehen, um Position und Phase zu ändern","删除事件":"Ereignis löschen","在左侧添加事件":"Ereignis links hinzufügen","在右侧添加事件":"Ereignis rechts hinzufügen","删除阶段":"Phase löschen","阶段":"Phase","阶段头":"Phasenkopf","显示":"Anzeigen","隐藏":"Ausblenden","拖动阶段头可调整顺序":"Phasenkopf ziehen zum Umsortieren","用上移下移调整事件顺序,用左右切换事件所在侧":"Mit Hoch/Runter die Reihenfolge, mit Links/Rechts die Seite des Ereignisses ändern","拖动调整阶段高度":"Ziehen, um die Phasenhöhe anzupassen","未命名":"Unbenannt","有未保存的修改,确定要关闭吗?":"Es gibt ungespeicherte Änderungen. Trotzdem schließen?","纵向":"Vertikal","横向":"Horizontal","节点样式":"Knotenstil","圆点":"Punkt","圆形":"Kreis","方形":"Quadrat","图片":"Bild","卡片样式":"Kartenstil","卡片":"Karte","朴素":"Schlicht","气泡":"Blase","连线风格":"Linienstil","实线":"Durchgezogen","虚线":"Gestrichelt","点线":"Gepunktet","显示连线":"Verbindungen zeigen","上侧":"Oben","下侧":"Unten","添加事件":"Ereignis hinzufügen","图片地址":"Bild-URL","拖动调整卡片宽度":"Ziehen, um die Kartenbreite anzupassen","拖动调整连线长度":"Ziehen, um die Verbindungslänge anzupassen","隐藏阶段头":"Phasenkopf ausblenden","显示阶段头":"Phasenkopf einblenden","时间线":"Zeitachse","添加子节点":"Unterknoten hinzufügen","添加同级节点":"Gleichgeordneten Knoten hinzufügen","删除节点":"Knoten löschen","插入图片":"Bild einfügen","插入图标":"Symbol einfügen","插入超链接":"Hyperlink einfügen","节点备注":"Knotennotiz","结构":"Struktur","逻辑结构图":"Logische Struktur","组织结构图":"Organigramm","目录组织图":"Katalogdiagramm","时间轴(左)":"Zeitachse (links)","时间轴(下)":"Zeitachse (unten)","时间轴(上)":"Zeitachse (oben)","时间轴(竖)":"Zeitachse (vertikal)","鱼骨图":"Fischgräte","鱼骨图(右)":"Fischgräte (rechts)","曲线":"Kurve","直线":"Gerade","直连":"Direkt","默认主题":"Standard","经典":"Klassisch","暗色":"Dunkel","极简":"Minimal","缤纷":"Bunt","请先选中一个节点":"Zuerst einen Knoten auswählen","请输入链接地址":"Link-Adresse eingeben","加载思维导图失败":"Mindmap konnte nicht geladen werden","编辑器尚未就绪":"Editor nicht bereit","中心主题":"Zentrales Thema","适应窗口":"An Fenster anpassen","插入父节点":"Übergeordneten Knoten einfügen","粘贴":"Einfügen","节点标签":"Knoten-Tag","请输入节点备注":"Knotennotiz eingeben","请输入节点标签,多个用逗号分隔":"Tags eingeben, durch Kommas getrennt","添加概要":"Zusammenfassung hinzufügen","删除概要":"Zusammenfassung entfernen","请先选中要合并的节点(按住 Ctrl 拖框可多选)":"Zuerst die Knoten auswählen (Strg halten und ziehen für Mehrfachauswahl)","删除图标":"Symbol entfernen","删除备注":"Notiz entfernen","删除超链接":"Link entfernen","供应商设置":"Anbieter-Einstellungen","默认model":"Standardmodell","全局prompt":"Globaler Prompt","全局":"Global","model请求参数json编写":"Anfrageparameter JSON","额外参数设置":"Zusätzliche Parameter","编辑器自动保存":"Editor-Auto-Speichern","自动保存间隔(秒)":"Auto-Speicher-Intervall (Sek.)","请输入不小于 1 的整数(秒)":"Bitte eine ganze Zahl ab 1 eingeben (Sekunden)","文本编辑器(ace)":"Text-Editor (Ace)","md编辑器":"MD-Editor","思维导图编辑器":"Mindmap-Editor","draw编辑器":"Draw-Editor","时间线编辑器":"Zeitleisten-Editor","图片编辑器":"Bild-Editor","excel编辑器":"Excel-Editor","编辑器":"Editoren","cron表达式":"Cron-Ausdruck","系统提示词":"System-Prompt","不使用":"Keine","消息数":"Nachrichten","来源":"Quelle","更多操作":"Weitere Aktionen","环境变量":"Umgebungsvariablen","暂无环境变量":"Keine Umgebungsvariablen","环境变量的 KEY 不能为空":"Der KEY der Umgebungsvariable darf nicht leer sein","重启成功":"Erfolgreich neu gestartet","重启服务":"Dienst neu starten","配置已保存,是否立即重启该服务让新配置生效?":"Konfiguration gespeichert. Dienst jetzt neu starten, um sie anzuwenden?","暂停中":"Pausiert","discard":"Änderungen verwerfen","discarded":"Änderungen verworfen","discard_untracked_tip":"Diese Datei wird nicht versioniert. Verwerfen löscht sie endgültig. Fortfahren?","discard_modified_tip":"Lokale Änderungen werden verworfen und auf die Repository-Version zurückgesetzt. Fortfahren?","discard_selected_tip":"Lokale Änderungen an den ausgewählten {{n}} Datei(en) werden verworfen. Fortfahren?","加载资源失败":"Ressource konnte nicht geladen werden","网络错误":"Netzwerkfehler","没有安装smartmontools":"smartmontools ist nicht installiert","挂载文件已生效":"Mount-Datei übernommen","刷新成功":"Aktualisiert","未选择转发送 client":"Kein Weiterleitungs-Client ausgewählt","删除完成":"Gelöscht","保护路径不能删除":"Geschützter Pfad kann nicht gelöscht werden","MCP工具加载成功":"MCP-Tools geladen","没有选中":"Nichts ausgewählt","不能为空":"Darf nicht leer sein","和原文件格式后缀一样":"Gleiche Endung wie die Originaldatei","发生错误":"Ein Fehler ist aufgetreten","不支持的文件后缀":"Nicht unterstützte Dateiendung","更新到AI知识库成功":"Zur KI-Wissensbasis hinzugefügt","文件名不能为空":"Dateiname darf nicht leer sein","挂载目录不能为空":"Mount-Verzeichnis darf nicht leer sein","重复挂载":"Doppelte Bereitstellung","该设备块没有具体路径":"Dieses Gerät hat keinen konkreten Pfad","该设备块没有文件系统":"Dieses Gerät hat kein Dateisystem","路由不能为空":"Route darf nicht leer sein","创建完成":"Erstellt","保存完成":"Gespeichert","获取进程输出失败":"Prozessausgabe konnte nicht abgerufen werden","进程已终止":"Prozess beendet","终止进程失败":"Prozess konnte nicht beendet werden","账号密码不能为空":"Benutzer und Passwort dürfen nicht leer sein","两次密码不一样":"Passwörter stimmen nicht überein","目录不能为空":"Verzeichnis darf nicht leer sein","秒数不能为空":"Sekunden dürfen nicht leer sein","清理完成,重新登录":"Bereinigung abgeschlossen, bitte erneut anmelden","密钥不能为空":"Schlüssel darf nicht leer sein","保存到服务器":"Auf Server speichern","加载资源失败,请检查文件":"Ressource konnte nicht geladen werden, bitte Datei prüfen","操作成功":"Erledigt","未获取到路径":"Pfad konnte nicht ermittelt werden","复制成功":"Kopiert","暂无聊天记录":"Kein Chatverlauf","暂无内容":"Kein Inhalt","到达顶部":"Oben angekommen","范围在0-100":"Bereich ist 0-100","不存在的http method":"Nicht unterstützte HTTP-Methode","不存在":"Nicht vorhanden","不是数字":"Keine Zahl","已经存在的页面资源路由配置目录设置":"Dieses Verzeichnis für Seitenressourcen-Routen ist bereits konfiguriert","mac地址不能为空":"MAC-Adresse darf nicht leer sein","发送唤醒命令成功":"Wake-Befehl gesendet","不能都为空":"Felder dürfen nicht alle leer sein","转换成":"Konvertieren nach","转换":"Konvertieren","格式化":"Formatieren","结果转到输入":"Ergebnis in Eingabe","示例":"Beispiel","输入":"Eingabe","输出":"Ausgabe","内容为空":"Inhalt ist leer","输出为空":"Ausgabe ist leer","编码":"Kodieren","解码":"Dekodieren","大写":"Großbuchstaben","空格分隔":"Durch Leerzeichen getrennt","正则表达式":"Regulärer Ausdruck","分组索引":"Gruppenindizes","忽略大小写":"Groß/Klein ignorieren","多行":"mehrzeilig","含换行":"Punkt matcht Zeilenumbruch","Unicode 集合":"Unicode-Sets","粘性":"sticky","匹配到":"Gefunden","测试文本":"Testtext","高亮结果":"Hervorgehobenes Ergebnis","匹配详情":"Trefferdetails","空":"leer","位置":"Position","未匹配":"nicht zugeordnet","时间转换":"Zeitstempel-Konverter","时间戳":"Zeitstempel","秒或毫秒":"Sekunden oder Millisekunden","现在":"Jetzt","秒级":"Sekunden","毫秒级":"Millisekunden","本地时间":"Lokalzeit","UTC 时间":"UTC-Zeit","距现在":"Relativ","转时间戳":"Zu Zeitstempel","无效时间戳":"Ungültiger Zeitstempel","天":"T","小时":"Std","分钟":"Min","还有":"in","已过去":"vor","刚刚":"gerade eben","进制转换":"Basis-Konverter","输入数值":"Zahl eingeben","进制":"Basis","字节":"Bytes","位":"Bits","颜色转换":"Farb-Konverter","复制颜色":"Farbe kopieren","颜色格式无效":"Ungültiges Farbformat","UUID / 随机密码":"UUID / Zufallspasswort","生成 UUID":"UUID erzeugen","生成密码":"Passwort erzeugen","长度":"Länge","符号":"Symbole","二维码生成":"QR-Code-Generator","尺寸":"Größe","纠错级别":"Fehlerkorrektur","下载 PNG":"PNG herunterladen","处":"Treffer","秒":"Sek","文本对比":"Textvergleich","原文本":"Originaltext","新文本":"Neuer Text","粘贴原文本":"Originaltext einfügen","粘贴新文本":"Neuen Text einfügen","差异":"Unterschiede","输入文本后这里显示差异":"Die Unterschiede erscheinen hier nach der Eingabe","生成二维码":"QR-Code erzeugen","need_input":"Bitte zuerst Inhalt eingeben","num_invalid":"Keine gültige Zahl","date_invalid":"Unbekanntes Datumsformat, z. B. 2024-01-01 12:00:00","color_invalid":"Ungültige Farbe, nutze #abc oder #aabbcc","qr_empty":"Der QR-Code erscheint hier nach der Eingabe","qr_in_ph":"Text oder URL zum Kodieren eingeben","qr_none":"Kein QR-Code zum Herunterladen","codec_in_ph":"Text zum Kodieren oder Dekodieren eingeben","codec_out_ph":"Das Ergebnis erscheint hier und kann bearbeitet werden","hash_in_ph":"Text zum Hashen eingeben, Ergebnis live aktualisiert","regex_in_ph":"Testtext hier einfügen","regex_empty":"Hervorhebung erscheint hier","pw_need_set":"Mindestens einen Zeichentyp wählen"}')}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[676,4091,8319],{77481(e,t,n){n.d(t,{S:()=>l,X:()=>i});var s=n(96540),r=n(61443),a=n(74848);function i(e){const[t,n]=s.useState([]),i=(0,s.useRef)(-1),[l,c]=(0,s.useState)(-1),[o,u]=(0,s.useState)(-1);(0,s.useEffect)(()=>{e.children?n(Array.isArray(e.children)?e.children:[e.children]):n(e.rows)},[e.rows,e.children]);const d=()=>{i.current=-1,c(-1),u(-1)};return(0,a.jsxs)("table",{children:[(0,a.jsx)("thead",{children:(0,a.jsx)("tr",{children:e.headers?.map((t,n)=>{const s=!!e.filter&&(e.filter.column??0)===n;let i=t;if(s){const n=e.filter,s=n.options.find(e=>e.value===n.value);null!=n.value&&s&&(i=`${t} (${s.label})`)}return(0,a.jsx)("th",{className:s?"table-filter-col":"",children:s?(0,a.jsx)(r.l6,{value:e.filter.value,options:e.filter.options,onChange:e.filter.onChange,bare:!0,trigger_label:i}):t},n)})})}),(0,a.jsx)("tbody",{children:t.map((t,n)=>{const s=!!e.onRowDrag;return(0,a.jsx)("tr",{className:s?(l===n?"row-dragging":"")+(o===n?" row-drop-target":""):"",draggable:s,onContextMenu:()=>{e.handleContextMenu&&e.handleContextMenu(t)},onDragStart:e=>{s&&(i.current=n,c(n),e.dataTransfer.effectAllowed="move")},onDragOver:e=>{!s||i.current<0||(e.preventDefault(),e.dataTransfer.dropEffect="move",u(n))},onDrop:t=>{s&&(t.preventDefault(),(()=>{const t=i.current,n=o;d(),t<0||n<0||t===n||e.onRowDrag?.(t,n)})())},onDragEnd:d,children:t.map((n,s)=>{const r=s===t.length-1?"small":"";return(0,a.jsx)("td",{className:r,style:{width:e.width??"auto"},children:n},s)})},n)})})]})}function l(e){return(0,a.jsx)("div",{style:{display:e.isFlex?"flex":"block"},children:e.columns.map((e,t)=>(0,a.jsx)("div",{children:e},t))})}},48890(e,t,n){n.d(t,{Kw:()=>s,Tt:()=>r});var s=n(80952),r=(n(82327),n(1766),n(24854),n(90008),n(90846),n(40975),n(44286),n(30766),n(14973),n(69687),n(1234),n(47507),n(87268),n(55208),n(34678),n(24522));const a=`https://gcore.jsdelivr.net/npm/ace-builds@${s.version}/src-min-noconflict/`;s.config.set("basePath",a),s.config.set("modePath",a),s.config.set("themePath",a),s.config.set("workerPath",a)},84091(e,t,n){n.r(t),n.d(t,{default:()=>d});var s=n(96540),r=(n(80952),n(48890)),a=n(34843),i=n(82893),l=n(78247),c=n(93245),o=n(23430),u=n(74848);function d(e){const t=(0,s.useRef)(null),[n,d]=(0,a.fp)(i.AG.user_base_info),[f,p]=(0,s.useState)(!1),h=(0,s.useRef)(f);h.current=f;const _=(0,s.useRef)(e.save);_.current=e.save;const x=(0,s.useRef)(e.on_dirty);x.current=e.on_dirty,(0,s.useEffect)(()=>{x.current?.(f)},[f]);const m=async e=>{if(!_.current||!h.current)return;!1!==await _.current(e)&&p(!1)},v=(0,s.useRef)(m);v.current=m;const g=(0,s.useRef)(e.register);g.current=e.register,(0,s.useEffect)(()=>{g.current?.({save:e=>v.current(e)})},[]),(0,c.a)(o.nE.ace,()=>!!_.current&&h.current,m);const j=n.user_data.theme?.includes("dark")?"cloud_editor_dark":"cloud9_day";return(0,s.useEffect)(()=>{const n=r.Kw.edit(t.current,{value:l.xK.get_value_temp(e.editor_id),showPrintMargin:!1,theme:`ace/theme/${j}`,mode:e.model??r.Tt.getModeForPath(e.name??"").mode,wrap:!1,highlightActiveLine:!1,fontSize:14,...e.options});return n.setOptions({}),n.container.addEventListener("wheel",function(e){e.preventDefault()}),n.focus(),n.on("change",function(t){p(!0),e.on_change&&e.on_change()}),t.current=n,n.formatCode=()=>{const e=r.Kw.require("ace/ext/beautify"),n=t.current;n&&e.beautify(n.session)},l.xK.set_editor_temp(n,e.editor_id),()=>{l.xK.delete_editor_temp(e.editor_id),n.destroy()}},[]),(0,u.jsx)("div",{ref:t,style:{height:"100%",width:"100%"}})}},60676(e,t,n){n.r(t),n.d(t,{default:()=>C});var s=n(96540),r=n(57952),a=n(85997),i=n(14284),l=n(52671),c=n(77481),o=n(70447),u=n(34843),d=n(82893),f=n(84091),p=n(78247),h=n(61443),_=n(23496),x=n(62042),m=n(22022),v=n(53459),g=n(7523),j=n(74848);function b(e,t="auto"){return"s"===t||"auto"===t&&e>=1e3?`${(e/1e3).toFixed(2)} s`:`${Math.round(e)} ms`}function S(e){const{running:t=!1,resetKey:n=0,format:r="auto",prefix:a="",onTick:i,className:l}=e,[c,o]=(0,s.useState)(0),u=(0,s.useRef)(0),d=(0,s.useRef)(null),f=(0,s.useRef)(t);f.current=t;const p=(0,s.useCallback)(()=>{null!==d.current&&(cancelAnimationFrame(d.current),d.current=null)},[]),h=(0,s.useCallback)(()=>{p();const e=()=>{const t=performance.now()-u.current;o(t),i?.(t),f.current&&(d.current=requestAnimationFrame(e))};e()},[i,p]);return(0,s.useEffect)(()=>{u.current=performance.now(),o(0),i?.(0),f.current&&h()},[n]),(0,s.useEffect)(()=>{t?h():p()},[t,h,p]),(0,s.useEffect)(()=>()=>p(),[p]),(0,j.jsxs)("span",{className:l,children:[a,b(c,r)]})}var w=n(87361),q=n(28319);function y(e){const[t,n]=(0,s.useState)("");return(0,j.jsxs)("div",{className:"db-query-preset-input",children:[(0,j.jsx)(h.Sm,{placeholder:e.placeholder,value:t,handleInputChange:n}),(0,j.jsx)("div",{className:"db-query-preset-input__actions",children:(0,j.jsx)(a.C3,{text:e.confirmText,clickFun:()=>e.onConfirm(t.trim())})})]})}function C(){const e=(0,l.Zp)(),{t}=(0,m.Bd)(),{initUserInfo:n}=(0,s.useContext)(g.F),[b]=(0,u.fp)(d.AG.sqlite_query_context),[C]=(0,u.fp)(d.AG.user_base_info),[,E]=(0,u.fp)(d.AG.prompt_card),k=(0,s.useMemo)(()=>b?.path??"",[b?.path]),N=(0,s.useMemo)(()=>b?.path?`${b?.name||"数据库"} | ${b.path}`:"未选择数据库",[b?.name,b?.path]),A=97,[R,K]=(0,s.useState)(""),[F,L]=(0,s.useState)("table"),[$,M]=(0,s.useState)(!1),[T,O]=(0,s.useState)(""),[Q,D]=(0,s.useState)(null),[P,I]=(0,s.useState)(!1),[G,J]=(0,s.useState)(0),[Z,W]=(0,s.useState)(!1),[B,H]=(0,s.useState)([]),[V,X]=(0,s.useState)(-1);(0,s.useEffect)(()=>{const e=C?.user_data?.sql_preset_list;e&&e.length?H([...e]):H([{index:0,note:t("查询全部表"),sql:"SELECT name, type FROM sqlite_master WHERE type='table';"}])},[C?.user_data?.sql_preset_list]);const U=async e=>{const t=e.map((e,t)=>({...e,index:t})),s=await i.wm.post(_.s.user_save_private_attr,{is_sql_preset:!0,sql_preset_list:t});return s?.code===v.m.Success&&(await n(),H(t),!0)},z=async(e,n)=>{const s=[...B,{note:n||t("SQL 预设"),sql:e,env:q.sqlEnvDefault}];await U(s)&&(E({open:!1}),(0,x.SK)(t("创建成功")),X(s.length-1))},Y=(e,t)=>{if(!e)return"";for(const n of e.split("\n")){const e=n.indexOf("=");if(!(e<0)&&n.slice(0,e).trim()===t)return n.slice(e+1).trim()}return""},[ee,te]=(0,s.useState)(""),[ne,se]=(0,s.useState)("");(0,s.useEffect)(()=>{p.xK.set_value_temp(R,A)},[R]),(0,s.useEffect)(()=>{K(""),O(""),D(null),L("table"),I(!1),W(!1),J(0),te(""),se(""),p.xK.set_value_temp("",A),k||O("请先从文件右键打开一个数据库")},[k,b?.open]);const re=async()=>{const e=(p.xK.get_editor_value(A)??R).trim();if(!k)return O("请先从文件右键打开一个数据库"),void D(null);if(!e)return O("请输入 SQL 语句"),void D(null);M(!0),O(""),W(!0),J(e=>e+1),I(!0);try{const n=(t=e,ee?t.split(ee).join(ne):t),s=await i.$M.post("sqlite/query",{path:k,sql:n});D(s.data),L("table")}catch(e){O(e?.message??`${e}`),D(null)}finally{I(!1),M(!1)}var t},ae=Q?.columns?.length?Q.columns:Object.keys(Q?.rows?.[0]??{}),ie=(Q?.rows??[]).map(e=>ae.map(t=>{return null==(n=e[t])?"":"object"==typeof n?JSON.stringify(n):`${n}`;var n}));return(0,j.jsxs)("div",{className:"db-query-page",children:[(0,j.jsx)(r.A,{ignore_tags:!0,left_children:[(0,j.jsx)(a.rA,{icon:"arrow_back",title:"返回",onClick:()=>e(-1)},"back"),(0,j.jsx)(a.rA,{icon:"play_arrow",title:"执行",onClick:re},"run"),(0,j.jsx)(a.rA,{icon:"table_chart",title:"表格视图",onClick:()=>L("table")},"table"),(0,j.jsx)(a.rA,{icon:"data_object",title:"原 JSON",onClick:()=>L("json")},"json"),(0,j.jsx)(a.rA,{icon:"settings",title:t("SQL预设设置"),onClick:()=>{e(w.o.sql_preset_setting_page)}},"preset-setting")],children:(0,j.jsx)(o.xP,{context:N,tip_context:"点击复制数据库信息"})}),(0,j.jsxs)("div",{className:"db-query-page__content",children:[(0,j.jsxs)(o.Zp,{title:"SQL 查询",rightTopCom:(0,j.jsxs)("div",{className:"db-query-page__preset-bar",children:[ee&&(0,j.jsx)(h.Sm,{placeholder:`${t("替换")}: ${ee}`,value:ne,handleInputChange:se,width:"12rem"}),B.length>0&&(0,j.jsx)(h.l6,{width:"16rem",tip:t("SQL预设"),value:V,onChange:e=>{const t=B[e];t&&(X(e),(e=>{p.xK.set_value_temp(e,A);const t=p.xK.get_editor(A);t&&t.setValue(e,-1),K(e)})(t.sql),te(Y(t.env??"","find")),se(""),O(""))},options:B.map((e,t)=>({value:t,title:`${e.note||e.sql.slice(0,24)}`}))}),(0,j.jsx)(a.C3,{text:t(V>=0?"更新保存":"创建新预选项"),clickFun:async()=>{const e=(p.xK.get_editor_value(A)??R).trim();if(!e)return void O(t("sql_in"));const n=[...B];if(V>=0&&n[V]){n[V].sql=e,n[V].note||(n[V].note=t("SQL 预设"));await U(n)&&(0,x.SK)(t("更新成功"))}else E({open:!0,title:t("创建新预选项"),context_div:(0,j.jsx)(y,{placeholder:t("请输入备注"),confirmText:t("确认"),onConfirm:t=>z(e,t)}),cancel:()=>E({open:!1})})}})]}),rightBottomCom:(0,j.jsxs)("div",{className:"db-query-page__actions",children:[(0,j.jsx)(a.C3,{text:$?"查询中...":"执行查询",clickFun:re}),(0,j.jsx)(a.C3,{text:"清空",clickFun:()=>{p.xK.set_value_temp("",A);const e=p.xK.get_editor(A);e&&e.setValue("",-1),K("")}}),(0,j.jsx)(a.C3,{text:"table"===F?"表格视图":"切换到表格",clickFun:()=>L("table")}),(0,j.jsx)(a.C3,{text:"json"===F?"原 JSON":"切换到 JSON",clickFun:()=>L("json")})]}),children:[(0,j.jsx)("div",{className:"db-query-page__editor",children:(0,j.jsx)(f.default,{name:"sqlite.sql",editor_id:A,model:"ace/mode/sql",on_change:()=>{const e=p.xK.get_editor_value(A)??"";K(e)},options:{showPrintMargin:!1,highlightActiveLine:!0,wrap:!0}})}),T&&(0,j.jsx)("div",{className:"db-query-page__error",children:T})]}),(0,j.jsxs)(o.Zp,{title:"查询结果",rightTopCom:(0,j.jsxs)("span",{className:"db-query-page__result-meta",children:[Q?`${Q.row_count} 行`:"暂无结果",Z&&(0,j.jsx)("span",{className:"db-query-page__elapsed",children:(0,j.jsx)(S,{running:P,resetKey:G,prefix:`${t("耗时")}: `,format:"auto"})})]}),children:[Q&&"table"===F&&(0,j.jsx)(c.X,{headers:ae,rows:ie}),Q&&"json"===F&&(0,j.jsx)("pre",{className:"db-query-page__result-json",children:JSON.stringify(Q.rows,null,2)}),!Q&&!T&&(0,j.jsx)("div",{className:"db-query-page__hint",children:"先输入查询语句,再执行。支持 `select`、`with`、`pragma`、`explain`。"}),!Q&&T&&(0,j.jsx)("div",{className:"db-query-page__hint",children:T})]})]})]})}},28319(e,t,n){n.r(t),n.d(t,{default:()=>S,defaultSqlPreset:()=>j,sqlEnvDefault:()=>b});var s=n(96540),r=n(22022),a=n(4412),i=n(85997),l=n(75725),c=n(77481),o=n(70447),u=n(61443),d=n(34843),f=n(82893),p=n(14284),h=n(23496),_=n(53459),x=(n(62042),n(7523)),m=n(78247),v=n(52671),g=n(74848);function j(e){return{index:0,note:e("查询全部表"),sql:"SELECT name, type FROM sqlite_master WHERE type='table';"}}const b='# 可选:设置 SQL 中的"替换词"(在查询页选中该预设后,会显示输入框)\n# 例子:SQL 为 SELECT * FROM t WHERE id = 123456 ,请填写下面的 find=123456\n# 这样查询页输入新值即可把 SQL 中的 123456 替换掉后再查询\nfind=';function S(){const{t:e}=(0,r.Bd)(),{initUserInfo:t}=(0,s.useContext)(x.F),[,n]=(0,d.fp)(f.AG.editorSetting),[S]=(0,d.fp)(f.AG.user_base_info),w=(0,v.Zp)(),q=s.useRef(-1),[y,C]=(0,s.useState)([]);(0,s.useEffect)(()=>{const t=S?.user_data?.sql_preset_list;C(t?.length?[...t]:[j(e)])},[e,S?.user_data?.sql_preset_list]);const E=async()=>{const e=y.map((e,t)=>({...e,index:t})),n=await p.wm.post(h.s.user_save_private_attr,{is_sql_preset:!0,sql_preset_list:e});n?.code===_.m.Success&&await t()},k=(e,t)=>{q.current=e;const s=y[e][t]??"";m.xK.set_value_temp(s),n({model:"sql"===t?"ace/mode/sql":"ace/mode/ini",open:!0,fileName:"",save:async e=>{y[q.current][t]=e,C([...y]),m.xK.set_value_temp(""),E()}})},N=[e("编号"),e("备注"),e("SQL代码"),e("env编辑"),e("操作")];return(0,g.jsxs)("div",{children:[(0,g.jsx)(a.aZ,{position:"right",children:(0,g.jsx)(i.rA,{icon:"arrow_back",title:e("返回"),onClick:()=>w(-1)})}),(0,g.jsx)(l.jW,{isFull:!0,more:!0,children:(0,g.jsx)(l.NN,{children:(0,g.jsx)(l.xh,{children:(0,g.jsx)(l.fI,{children:(0,g.jsx)(l.VP,{widthPer:60,children:(0,g.jsx)(o.uF,{self_title:(0,g.jsx)("span",{className:"div-row",children:(0,g.jsx)("h2",{children:e("SQL 预设")})}),rightTopCom:(0,g.jsxs)("div",{className:"db-query-setting__toolbar",children:[(0,g.jsx)(i.rA,{icon:"add",title:e("添加"),onClick:()=>C([...y,{note:"",sql:"",env:b}])}),(0,g.jsx)(i.rA,{icon:"save",title:e("保存"),onClick:()=>E()})]}),children:(0,g.jsx)(c.X,{headers:N,rows:y.map((t,n)=>[(0,g.jsx)("div",{children:n+1}),(0,g.jsx)(u.Sm,{value:t.note,no_border:!0,placeholder:e("备注"),handleInputChange:e=>{t.note=e,C([...y])}}),(0,g.jsx)("div",{children:(0,g.jsx)(i.rA,{icon:"short_text",title:e("编辑SQL"),onClick:()=>k(n,"sql")})}),(0,g.jsx)("div",{children:(0,g.jsx)(i.rA,{icon:"settings",title:e("env编辑"),onClick:()=>k(n,"env")})}),(0,g.jsx)("div",{children:(0,g.jsx)(i.rA,{icon:"delete",title:e("删除"),onClick:()=>{y.splice(n,1),C([...y])}})})]),width:"8rem"})})})})})})})]})}},93245(e,t,n){n.d(t,{a:()=>c,d:()=>l});var s=n(96540),r=n(34843),a=n(82893),i=n(23430);const l=[{id:i.nE.ace,label:"文本编辑器(ace)"},{id:i.nE.md,label:"md编辑器"},{id:i.nE.mind,label:"思维导图编辑器"},{id:i.nE.draw,label:"draw编辑器"},{id:i.nE.timeline,label:"时间线编辑器"},{id:i.nE.image,label:"图片编辑器"},{id:i.nE.excel,label:"excel编辑器"}];function c(e,t,n,i=!1){const[l]=(0,r.fp)(a.AG.user_base_info),c=l?.user_data?.editor_auto_save,o=(0,s.useRef)(c);o.current=c;const u=(0,s.useRef)(t);u.current=t;const d=(0,s.useRef)(n);d.current=n,(0,s.useEffect)(()=>{if(i)return;const t=o.current;if(!t?.enable||t.interval<=0||!t.editors?.includes(e))return;const n=setInterval(()=>{u.current()&&d.current(!0)},1e3*t.interval);return()=>clearInterval(n)},[c,e,i])}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[4091,7181],{48890(e,t,n){n.d(t,{Kw:()=>r,Tt:()=>i});var r=n(80952),i=(n(82327),n(1766),n(24854),n(90008),n(90846),n(40975),n(44286),n(30766),n(14973),n(69687),n(1234),n(47507),n(87268),n(55208),n(34678),n(24522));const c=`https://gcore.jsdelivr.net/npm/ace-builds@${r.version}/src-min-noconflict/`;r.config.set("basePath",c),r.config.set("modePath",c),r.config.set("themePath",c),r.config.set("workerPath",c)},84091(e,t,n){n.r(t),n.d(t,{default:()=>d});var r=n(96540),i=(n(80952),n(48890)),c=n(34843),s=n(82893),a=n(78247),o=n(93245),l=n(23430),u=n(74848);function d(e){const t=(0,r.useRef)(null),[n,d]=(0,c.fp)(s.AG.user_base_info),[f,_]=(0,r.useState)(!1),m=(0,r.useRef)(f);m.current=f;const h=(0,r.useRef)(e.save);h.current=e.save;const v=(0,r.useRef)(e.on_dirty);v.current=e.on_dirty,(0,r.useEffect)(()=>{v.current?.(f)},[f]);const p=async e=>{if(!h.current||!m.current)return;!1!==await h.current(e)&&_(!1)},g=(0,r.useRef)(p);g.current=p;const x=(0,r.useRef)(e.register);x.current=e.register,(0,r.useEffect)(()=>{x.current?.({save:e=>g.current(e)})},[]),(0,o.a)(l.nE.ace,()=>!!h.current&&m.current,p);const w=n.user_data.theme?.includes("dark")?"cloud_editor_dark":"cloud9_day";return(0,r.useEffect)(()=>{const n=i.Kw.edit(t.current,{value:a.xK.get_value_temp(e.editor_id),showPrintMargin:!1,theme:`ace/theme/${w}`,mode:e.model??i.Tt.getModeForPath(e.name??"").mode,wrap:!1,highlightActiveLine:!1,fontSize:14,...e.options});return n.setOptions({}),n.container.addEventListener("wheel",function(e){e.preventDefault()}),n.focus(),n.on("change",function(t){_(!0),e.on_change&&e.on_change()}),t.current=n,n.formatCode=()=>{const e=i.Kw.require("ace/ext/beautify"),n=t.current;n&&e.beautify(n.session)},a.xK.set_editor_temp(n,e.editor_id),()=>{a.xK.delete_editor_temp(e.editor_id),n.destroy()}},[]),(0,u.jsx)("div",{ref:t,style:{height:"100%",width:"100%"}})}},57181(e,t,n){n.r(t),n.d(t,{default:()=>v});var r=n(96540),i=n(85997),c=n(57952),s=n(34843),a=n(82893),o=n(78247),l=(n(62042),n(84091)),u=n(34289),d=n(34251),f=n(99214),_=n(93245),m=n(23430),h=n(74848);function v(){const[e,t]=(0,s.fp)(a.AG.editorSetting),[n,v]=(0,r.useState)(!1),p=(0,r.useRef)(n);p.current=n;const[g,x]=(0,s.fp)(a.AG.fileShellShow),[w,E]=(0,s.fp)(a.AG.file_shell_hidden),b=(0,f.Cf)();async function k(){e.save&&n&&(await e.save(o.xK.get_editor_value()),o.xK.set_value_temp(""),v(!1))}const y=t=>{(t.ctrlKey||t.metaKey)&&"s"===t.key&&(t.preventDefault(),e.save&&n&&k())};return(0,r.useEffect)(()=>()=>{v(!1)},[e]),(0,r.useEffect)(()=>(document.addEventListener("keydown",y),()=>{document.removeEventListener("keydown",y)}),[n,e]),(0,_.a)(m.nE.ace,()=>!!e.save&&p.current,()=>k(),e.not_auto_save),e.open&&(0,h.jsxs)("div",{id:"editor-container",children:[(0,h.jsxs)(c.A,{ignore_tags:!0,left_children:[(0,h.jsx)(i.rA,{title:"取消",icon:"close",onClick:function(){o.xK.set_value_temp(""),t({open:!1,model:"",fileName:"",save:null}),e?.close?.()}},1),(0,h.jsx)("div",{children:e.fileName},2)],children:[e.menu_list&&e.menu_list,(e.can_format||(0,d.zr)(e.fileName))&&(0,h.jsx)(i.rA,{title:"格式化",icon:"data_object",onClick:function(){o.xK.get_editor()?.formatCode()}}),e.opt_shell&&b.can_terminal&&(0,h.jsx)(i.rA,{icon:"terminal",title:"shell",onClick:function(){g.show?E(!w):x({show:!0,path:(0,u.GG)("file",(0,u.vX)())})}}),n&&(0,h.jsx)(i.rA,{title:"保存",icon:"save",onClick:k}),(0,h.jsx)("title",{children:e.fileName})]}),(0,h.jsx)(l.default,{name:e.fileName,model:e.model,on_change:function(){n||v(!0)}})]})}},93245(e,t,n){n.d(t,{a:()=>o,d:()=>a});var r=n(96540),i=n(34843),c=n(82893),s=n(23430);const a=[{id:s.nE.ace,label:"文本编辑器(ace)"},{id:s.nE.md,label:"md编辑器"},{id:s.nE.mind,label:"思维导图编辑器"},{id:s.nE.draw,label:"draw编辑器"},{id:s.nE.timeline,label:"时间线编辑器"},{id:s.nE.image,label:"图片编辑器"},{id:s.nE.excel,label:"excel编辑器"}];function o(e,t,n,s=!1){const[a]=(0,i.fp)(c.AG.user_base_info),o=a?.user_data?.editor_auto_save,l=(0,r.useRef)(o);l.current=o;const u=(0,r.useRef)(t);u.current=t;const d=(0,r.useRef)(n);d.current=n,(0,r.useEffect)(()=>{if(s)return;const t=l.current;if(!t?.enable||t.interval<=0||!t.editors?.includes(e))return;const n=setInterval(()=>{u.current()&&d.current(!0)},1e3*t.interval);return()=>clearInterval(n)},[o,e,s])}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[7678],{67678(e){e.exports=JSON.parse('{"title":"FileCat","修改密码":"Cambiar contraseña","自定义auth":"Autenticación personalizada","tk_exp":"Tiempo de expiración del token","目标":"Destino","目标列表":"Destinos","被同步的源目录":"Dir origen a sincronizar","成功":"Éxito","已开启":"Activado","已关闭":"Desactivado","sy_tp1":"Solo se admiten archivos pequeños, como configs y código","sy_tp2":"Los archivos no se sincronizan de inmediato por defecto, solo tras modificarse. Con sincronización completa activada, ese cliente sincroniza todos los archivos de forma recursiva en cada conexión.","sy_tp3":"Una tarea puede tener varios destinos, cada uno con su directorio y opción de sincronización completa.","立即同步":"Sincronizar ahora","已触发同步":"Sincronización iniciada","操作失败":"Operación fallida","tsk_off":"Activa y guarda la tarea primero","mnt_type":"Tipo de montaje","cred_sel":"Credencial","lcl_abs":"Ruta local absoluta","rem_dir":"Dir remoto","disp_only":"Nombre en la lista","tag_pub":"Las ediciones de etiquetas son visibles para todos","https_s":"Ajustes HTTPS","ssl_crt":"Ruta del certificado SSL","ssl_key":"Ruta de la clave privada SSL","crt_pth":"Ruta del certificado (cert.pem/fullchain.pem)","ky_pth":"Ruta de la clave privada (privkey.pem)","语言":"Idioma","文件夹路径":"Ruta de la carpeta","编号":"Número","路径":"Ruta","sub_dir":"Subdirectorio","是否默认":"¿Es el predeterminado?","备注":"Nota","编辑SQL":"Editar SQL","SQL 预设":"Preajuste SQL","耗时":"Duración","确认":"Confirmar","请输入备注":"Ingrese una nota","查询全部表":"Consultar todas las tablas","SQL预设设置":"Configuración de preajustes SQL","SQL预设":"Preajuste SQL","更新保存":"Actualizar y guardar","创建新预选项":"Crear nuevo preajuste","添加预设":"Agregar preajuste","SQL代码":"Código SQL","保存成功":"Guardado correctamente","大纲":"Esquema","新建主题":"Nuevo tema","编辑主题":"Editar tema","删除主题":"Eliminar tema","主题名称":"Nombre del tema","请输入主题名称":"Introduce el nombre del tema","主题实时预览":"Vista previa en vivo","删除成功":"Eliminado","删除失败":"Error al eliminar","cf_thm":"¿Eliminar este tema?","导出PDF":"Exportar PDF","no_head":"Aún no hay títulos","未命名标题":"Título sin nombre","更新成功":"Actualizado correctamente","创建成功":"Creado correctamente","sql_in":"Ingrese la sentencia SQL","新密码":"Nueva contraseña","新账号":"Nueva cuenta","关闭":"Cerrar","开启":"Abrir","展开":"Expandir","指定时间":"Hora especificada","永不过期":"Nunca expira","清空token":"Vaciar el token","保存":"Guardar","确定":"Confirmar","确定修改":"Confirmar la modificación","删除":"Eliminar","添加":"Agregar","系统":"Sistema","follow_sys":"Seguir ajuste del sistema","no_theme":"Sin tema","自定义页面路由":"Ruta de página personalizada","api_rt":"Ruta de API personalizada","跳转路由":"Ruta de redirección","路由":"Ruta","文件":"Archivo","自定义路由":"Rutas personalizadas","编辑":"Editar","查看":"Ver","默认配置":"Configuración predeterminada","设置":"Configuración","退出登录":"Cerrar sesión","虚拟网络":"Red virtual","系统信息":"Información del sistema","工具箱":"Caja de herramientas","索引":"Índice","文件夹":"Carpeta","客户端":"Cliente","服务器":"Servidor","服务端":"Servidor","基本信息":"Información básica","系统性能":"Rendimiento del sistema","总容量":"Capacidad total","剩余":"Restante","使用率":"Tasa de uso","内存":"Memoria","系统进程":"Proceso del sistema","doc_ct":"Contenedor Docker","物理硬盘":"Disco duro físico","文件硬盘":"Disco duro de archivos","容器":"Contenedor","名字":"Nombre","镜像":"Imagen","命令":"Comando","状态":"Estado","选择":"Seleccionar","过滤":"Filtrar","账号":"Cuenta","密码":"Contraseña","目录":"Directorio","私钥路径":"Ruta de la clave privada","连接地址":"Dirección de conexión","端口":"Puerto","port":"puerto","host":"host","key":"clave","代理":"Proxy","浏览器":"Navegador","网络唤醒":"Despertar por red","时间工具":"Herramienta de tiempo","JSON 格式转换":"Conversión de formato JSON","编解码":"Codificar / Decodificar","摘要算法":"Algoritmo hash","正则测试":"Probador de regex","开发者工具":"Herramientas de desarrollo","切换样式":"Cambiar estilo","更多":"Más","创建文件夹":"Crear carpeta","创建文件":"Crear archivo","连接":"Conectar","地址":"Dirección","目标设备":"Dispositivo objetivo","发送":"Enviar","腾讯":"Tencent","云":"Nube","厂商":"Fabricante","名称":"Nombre","厂商名称":"Nombre del fabricante","类型":"Tipo","容量":"Capacidad","挂载位置":"Punto de montaje","剩余容量":"Capacidad restante","登录":"Iniciar sesión","是":"Sí","否":"No","流量转发":"Reenvío de tráfico","点对点":"Punto a punto","模式":"Modo","虚拟":"Virtual","在线状态":"Estado en línea","物理":"Físico","账号设置":"Configuración de la cuenta","说明":"Descripción","文件系统类型":"Tipo de sistema de archivos","机械":"Mecánico","固态":"Sólido","复制":"Copiar","剪切":"Cortar","压缩":"Comprimir","下载":"Descargar","重命名":"Renombrar","创建文本文件":"Crear archivo de texto","解压":"Descomprimir","转换到":"Convertir a","自定义":"Personalizado","粘贴到此处":"Pegar aquí","创建":"Crear","制造商":"Fabricante","总内存":"Memoria total","最大":"Máximo","品牌":"Marca","逻辑核心":"Núcleo lógico","搜索当前目录":"Buscar en el directorio actual","压缩文件":"Archivo comprimido","取消":"Cancelar","环境控制":"Control de entorno","control_env_tip":"Se configura con texto clave-valor estilo env; comentar una línea la desactiva. allowed_hosts solo permite los hosts coincidentes, forbid_hosts rechaza los coincidentes. Los valores son arrays de expresiones regulares (coincidencia completa, solo el nombre del host sin puerto). Las peticiones rechazadas se desconectan sin respuesta.","只支持以下配置项":"Solo se admiten estas claves","值必须是 JSON 数组":"El valor debe ser un array JSON","正则表达式不合法":"Expresión regular no válida","运行":"Ejecutar","格式":"Formato","压缩到":"Comprimir a","进度":"Progreso","解压到":"Descomprimir a","当前目录":"Directorio actual","解压文件":"Descomprimir archivo","视频格式转换":"Conversión de formato de video","gen_dir":"El archivo objetivo generado está en este directorio","ff_fmt":"Formatos objetivo admitidos por ffmpeg","del_f":"¿Desea eliminar el archivo seleccionado?","输入目录名":"Ingrese el nombre del directorio","cut_ovr":"Confirmar corte (sobrescribir)","cp_ovr":"Confirmar copia (sobrescribir)","修改名字":"Cambiar nombre","输入新名字":"Ingrese el nuevo nombre","个文件正在上传":"archivos se están cargando","确定删除":"Confirmar eliminación","是否删除":"¿Desea eliminar?","输入文本名":"Ingrese el nombre del texto","添加索引":"Agregar índice","物理核心":"Núcleo físico","创建目录":"Crear directorio","访问目录":"Acceder al directorio","mac_dst":"Dirección MAC del dispositivo objetivo","要代理的url":"URL a proxy","系统代理端口":"Puerto de proxy del sistema","返回":"Volver","不允许为空":"No puede estar vacío","ff_none":"No se encontró ffmpeg","disk":"Disco","part":"Partición","lvm":"Volumen lógico","网址":"URL","环境":"Entorno","外部软件":"Software externo","保护路径":"Ruta protegida","软件":"Software","是否安装":"¿Está instalado?","角色管理":"Gestión de roles","用户管理":"Gestión de usuarios","角色id":"ID de rol","角色名":"Nombre de rol","用户id":"ID de usuario","用户名":"Nombre de usuario","目录范围":"Alcance del directorio","可执行的命令":"Comandos ejecutables","禁止目录范围":"Alcance del directorio prohibido","可执行命令":"Comandos ejecutables","系统进程关闭":"Cierre de procesos del sistema","dc_ctdl":"Detener y eliminar contenedores Docker","dc_idl":"Eliminar imágenes Docker","tk_time":"Modificar tiempo del token","自定义资源路由":"Ruta de recursos personalizada","磁盘挂载":"Montaje de disco","ssh_sv":"Guardar clave SSH en disco","外部软件路径":"Ruta del software externo","log_del":"Eliminar, cortar y renombrar archivos","内容更新":"Actualizar contenido","标签编辑权限":"Permisos de edición de etiquetas","ssh代理":"Proxy SSH","http代理":"Proxy HTTP","浏览器代理":"Proxy de navegador","rdp代理":"Proxy RDP","rtsp播放器":"Reproductor RTSP","角色":"Rol","文件回收站":"Papelera de reciclaje de archivos","个人保护路径":"Ruta protegida personal","系统保护路径":"Ruta protegida del sistema","小于一分钟":"Menos de un minuto","分钟前":"hace minutos","小时前":"hace horas","天前":"hace días","月前":"hace meses","年前":"hace años","挂载位置磁盘":"Disco del punto de montaje","信息":"Información","磁盘剩余":"Espacio restante en el disco","文件系统":"Sistema de archivos","文件夹数":"Cantidad de carpetas","文件数":"Cantidad de archivos","当前位置":"Ubicación actual","输入文件名":"Ingrese el nombre del archivo","o_stdo":"Abrir con studio","o_img":"Abrir con el editor de imágenes","预览图片":"Vista previa de la imagen","运行并实时查看":"Ejecutar y ver en tiempo real","实时查看":"Ver en tiempo real","输入参数运行":"Ejecutar con parámetros","以文本打开":"Abrir como texto","以日志打开":"Abrir como registro","上传":"Cargar","文件选项":"Opciones de archivo","添加类目":"Agregar categoría","全部编辑":"Editar todo","输入类目名":"Ingrese el nombre de la categoría","折叠":"Plegar","全部折叠":"Plegar todo","(无内容)":"(Sin contenido)","请求头":"Encabezado de solicitud","请求体":"Cuerpo de la solicitud","值":"Valor","上传文件":"Cargar archivo","下载到本地目录":"Descargar al directorio local","本地地址":"Dirección local","完成":"Completado","结束":"Fin","响应头":"Encabezado de respuesta","正在下载":"Descargando","输入标签名":"Ingrese el nombre de la etiqueta","frm_lm":"El formulario contiene archivos, el navegador no permite agregar","非对称密钥":"Clave asimétrica","将覆盖密钥文件":"Sobrescribirá el archivo de clave","加密算法":"Algoritmo de cifrado","输出格式":"Formato de salida","普通PEM":"PEM normal","生成":"Generar","ssh_dir":"Guardar en el directorio .ssh","私钥":"Clave privada","时间转换器":"Convertidor de tiempo","格式化时间":"Formatear tiempo","毫秒":"Milisegundo","分秒":"Minuto y segundo","实时信息":"Información en tiempo real","运行用户":"Usuario en ejecución","当前系统":"Sistema actual","进程":"Proceso","ld_wait":"Cargando, por favor espere...","选中":"Seleccionado","创建用户":"Crear usuario","升序":"Ascendente","降序":"Descendente","dc_nne":"No se detectó Docker, es posible que el host no tenga Docker instalado o los contenedores estén vacíos","过滤镜像":"Filtrar imágenes","列表更新":"Actualizar lista","执行命令":"Ejecutar comando","打印日志":"Imprimir registro","删除容器":"Eliminar contenedor","删除镜像":"Eliminar imagen","doc_img":"Imagen Docker","doc_icf":"¿Está seguro de que desea eliminar la imagen seleccionada?","系统运行于":"El sistema se ejecuta en","全局变量":"Variable global","up_conc":"Límite máximo de carga de archivos concurrentes","单用户并发数量":"Cantidad de conexiones concurrentes por usuario","系统并发数量":"Cantidad de conexiones concurrentes del sistema","big_res":"¿Habilitar reanudación de carga de archivos grandes?","big_sz":"Tamaño de juicio para archivos grandes (MB)","大文件并发数量":"Cantidad de cargas concurrentes de archivos grandes","big_ck":"Tamaño de bloque de archivos grandes (MB)","页面资源路由":"Ruta de recursos de página","wf_rt":"Ruta de activación de flujo de trabajo","过期时间(s)":"Tiempo de expiración (s)","文件路径":"Ruta del archivo","path_up":"Actualizar ruta protegida del sistema","path_md":"Modificar ruta PATH","执行用户":"Usuario de ejecución","执行":"Ejecutar","wf_api":"Modificar API de activación de flujo de trabajo","up_lim":"Modificar límite de cantidad de archivos cargados en el directorio","功能权限":"Permisos de funcionalidad","角色备注":"Nota del rol","pxy_off":"Descarga a través de proxy HTTP desactivada","工具功能":"Funciones de la herramienta","全局变量设置":"Configuración de variables globales","文件回收站修改":"Modificar papelera de reciclaje de archivos","文件权限":"Permisos de archivo","log_wr":"Crear, cargar, actualizar contenido y descomprimir archivos","只读目录范围":"Alcance del directorio de solo lectura","更新":"Actualizar","use_env":"Usar variables de entorno por defecto","sync_sv":"Sincronizar información con el servidor seleccionado","add_rot":"Agregar directorio raíz de recursos HTTP","dl_here":"Descargar recursos HTTP en este directorio","文件排序":"Ordenar archivos","系统默认":"Predeterminado del sistema","修改时间":"Hora de modificación","时间逆序":"Orden inverso de tiempo","时间顺序":"Orden cronológico","大小逆序":"Orden inverso de tamaño","大小顺序":"Orden de tamaño","文件大小":"Tamaño del archivo","网站标题":"Título del sitio web","通用设置":"Configuración general","主题":"Tema","时区":"Zona horaria","时间":"Hora","服务器时间":"Hora del servidor","在线时间":"Tiempo en línea","离线时间":"Tiempo sin conexión","在线":"En línea","离线":"Fuera de línea","功能文档":"Documentación de funciones","官网地址":"https://filecat.xiaobaidadada.fun/","远程代理":"Proxy remoto","系统管理":"Administración del sistema","网址导航":"Navegación de direcciones web","目录快捷命令":"Comando de acceso directo de directorio","文件快捷命令":"Comando de acceso directo de archivo","系统网络":"Red del sistema","复制名字":"Copiar nombre","分享":"Compartir","复制绝对路径":"Copiar ruta absoluta","复制相对路径":"Copiar ruta relativa","切换目录":"Cambiar directorio","统计信息":"Estadísticas","更新AI知识库":"Actualizar base de conocimientos de IA","exp_hr":"Tiempo restante hasta la expiración (horas)","可以为空":"Puede estar vacío","自动加载":"Carga automática","本地知识库":"Base de conocimientos local","知识库加载信息":"Información de carga de la base de conocimientos","最近一次加载":"Última carga","加载进度":"Progreso de carga","总文件数量":"Número total de archivos","总文件字符数量":"Número total de caracteres de archivos","总文件大小":"Tamaño total de archivos","总耗时":"Tiempo total consumido","上一页":"Página anterior","目标地址":"Dirección de destino","目标端口":"Puerto de destino","连接状态":"Estado de la conexión","个人设置":"Configuración personal","系统设置":"Configuración del sistema","文件后缀":"Sufijo de archivo","禁止执行的命令":"Comandos prohibidos","Ai 配置":"Configuración de IA","文件分享":"Compartir archivos","输入跳转的目录":"Ingrese el directorio al que desea saltar","文件分享列表":"Lista de archivos compartidos","过期小时":"Horas hasta la expiración","下载次数":"Número de descargas","剩余时间":"Tiempo restante","文件加载方式":"Modo de carga de archivos","全部加载文件":"Cargar todos los archivos","scrll_l":"Cargar archivos con desplazamiento paginado","剩余时间(h)":"Tiempo restante (h)","网络代理":"Proxy de red","个人":"Personal","安装方式":"Método de instalación","是否开启":"Activado","系统启动执行":"Ejecutar al iniciar el sistema","表达式":"Expresión","用户":"Usuario","详细信息":"Detalles","服务器配置":"Configuración del servidor","客户端列表":"Lista de clientes","更多服务器":"Más servidores","端口映射":"Asignación de puertos","序号":"N.º","服务器端口":"Puerto del servidor","转发客户端名称":"Nombre del cliente de reenvío","服务端口":"Puerto del servicio","转发ip":"IP de reenvío","转发端口":"Puerto de reenvío","客户端代理配置":"Configuración del proxy del cliente","客户端桥接配置":"Configuración del puente del cliente","远程地址":"Dirección remota","在线时长":"Duración en línea","fwd_nm":"Nombre del cliente de reenvío","sv_ntf":"Guardar y notificar al cliente la primera clave y el puerto","br_port":"Lista de puertos del servidor puente","输入消息":"Introducir mensaje","用户权限":"Permisos de usuario","系统管理权限":"Permisos de administración del sistema","网络功能权限":"Permisos de funciones de red","Ai 设置权限":"Permisos de configuración de IA","系统设置权限":"Permisos de configuración del sistema","系统环境设置":"Configuración del entorno del sistema","sys_env":"Página de configuración del entorno del sistema","sys_env_setting_tip":"Se usa para configurar varios entornos del sistema, incluidas algunas funciones similares a nginx","自定义路由页面":"Página de ruta personalizada","代理功能":"Funciones de proxy","其他功能":"Otras funciones","ddns":"DDNS","ai_page":"Página de chat de IA","pty cmd":"Comando PTY","wf_run":"Ejecución de flujo de trabajo","wf_user":"Usuario de ejecución del flujo de trabajo","cmd_rst":"Comando de reinicio filecat-restart","cmd_upg":"Comando de actualización filecat-upgrade","cmd_dwn":"Comando para cerrar el proceso principal filecat-down","cmd_ai":"Comando de IA (chat de IA)","个性化设置":"Configuración personalizada","lgn_usr":"Mostrar información del usuario al iniciar sesión","个人环境":"Entorno Personal","系统环境":"Entorno del Sistema","持久化":"Persistir","个人环境设置":"Configuración del entorno personal","其他参数":"Otros parámetros","父编号":"ID padre","代理配置":"Configuración de proxy","桥接配置":"Configuración del puente","brg_tip":"Establezca un puerto en el cliente. Al acceder a este puerto, el tráfico se reenvía a la primera dirección dentro del entorno de red de otro cliente.","内网穿透":"Penetración de intranet","fc_pxy":"Acceso proxy Filecat","fc_pxyw":"Acceso proxy Filecat mediante frontend de servidor","fc_pxyr":"Dirección de proxy Filecat personalizada","fc_pxyc":"Copiar URL de proxy de filecat","fc_pxyo":"Abrir URL de proxy de filecat","对端账号":"Cuenta remota","对端密码":"Contraseña remota","保存账号":"Guardar cuenta","验证登录":"Verificar inicio","已设置":"Establecido","未设置":"Sin establecer","便于辨认的名字":"Un nombre reconocible","对端 FileCat 登录名":"Usuario de FileCat remoto","留空表示不修改":"Vacío = sin cambios","请填写对端账号":"Introduce la cuenta remota","已保存":"Guardado","原客户端":"Cliente de origen","原目录":"Directorio de origen","目标客户端":"Cliente de destino","目标目录":"Directorio de destino","忽略目录":"Directorio ignorado","双向同步":"Sincronización bidireccional","客户端文件同步":"Sincronización de archivos del cliente","客户端设置":"Configuración del cliente","pxy_nln":"No usar servidor proxy para direcciones locales (Intranet)","忽略ip":"Ignorar IP","ai_ask":"Preguntar todo al servidor","本地目录":"Directorio local","响应体":"Cuerpo de la respuesta","客户端功能":"Funciones del cliente","全量同步":"Sincronización completa","公钥":"Clave pública","跟随系统":"Seguir el sistema","字符消耗统计":"Estadísticas de consumo de caracteres","加载中...":"Cargando...","对话轮次":"Turnos de conversación","AI输入字符":"Caracteres de entrada IA","AI输出字符":"Caracteres de salida IA","暂无统计数据":"No hay estadísticas disponibles","会话":"Sesiones","新会话":"Nueva sesión","提示词":"Prompt","llm_pmt":"Prompt editable por LLM","LLM编辑开关":"Interruptor de edición LLM","编辑规则":"Reglas de edición","选择系统提示词":"Seleccionar Prompt del Sistema","清空全部会话":"Borrar todas las sesiones","cf_all":"¿Confirmar eliminar todas las sesiones de chat?","cf_msgs":"¿Confirmar eliminar mensajes seleccionados?","cf_ses":"¿Confirmar eliminar sesiones seleccionadas?","cf_one":"¿Confirmar eliminar este mensaje?","批量选择":"Selección por lotes","查看所有用户会话":"Sesiones de todos los usuarios","查看全部会话时不可发送消息":"No se pueden enviar mensajes mientras se ven todas las sesiones","仅看我的会话":"Solo mis sesiones","取消批量选择":"Cancelar selección","删除选中消息":"Eliminar mensajes seleccionados","删除选中会话":"Eliminar sesiones seleccionadas","切换模型":"Cambiar modelo","添加文件":"Agregar archivo","无描述":"Sin descripción","暂无工具":"Sin herramientas","查看工具":"Ver herramientas","加载工具":"Cargar herramientas","系统会话提示词":"Prompts de sesión del sistema","删除记录":"Eliminar registro","手动加载":"Carga manual","从索引删除":"Eliminar del índice","知识库开关":"Interruptor de base de conocimientos","文本对话":"Diálogo de texto","图片生成":"Generación de imágenes","向量嵌入":"Incrustación vectorial","图片参数设置":"Configuración de parámetros de imagen","更多属性":"Más atributos","model类型":"Tipo de modelo","成为tool":"Convertirse en herramienta","操作":"Operaciones","查看Git提交":"Ver commits Git","Git":"Git","变更":"Changes","提交记录":"Commits","全选":"Select All","没有变更":"No changes","暂无提交记录":"No commits yet","分支":"Branch","git_msg":"Enter commit message...","提交":"Commit","暂存全部":"Stage All","暂存选中":"Stage Selected","取消暂存":"Unstage","已暂存":"Staged","已暂存全部":"All staged","已取消暂存":"Unstaged","请输入提交信息":"Please enter commit message","提交成功":"Commit successful","推送成功":"Push successful","拉取成功":"Pull successful","切换分支成功":"Branch switched","远程操作":"Remote Operations","拉取":"Pull","推送":"Push","强制推送":"Force Push","暂存工作区":"Stash","暂存工作区成功":"Stash successful","恢复工作区":"Stash Pop","恢复工作区成功":"Stash pop successful","刷新":"Refresh","请先选择文件":"Please select files first","提示:":"Tips:","git_stg":"Check files on the left, then use \\"Stage Selected\\" to add them to staging area","git_cmt":"Enter commit message and click \\"Commit\\"","git_cf":"If conflicts occur, please resolve them in shell before committing","git_frc":"\\"Force Push\\" will overwrite the remote branch, use with caution","配置表":"Config Table","offcal":"Dejar vacío para usar GitHub Releases oficial","def_180":"Predeterminado 180s (3 minutos)","用户配置":"Configuración de usuario","邮箱":"Correo","代理设置":"Configuración de proxy","全局代理":"Proxy global","仓库代理":"Proxy del repositorio","修改":"Editar","用户配置已保存":"Configuración de usuario guardada","代理配置已保存":"Configuración de proxy guardada","pxy_clr":"Dejar vacío para borrar el proxy","pxy_nte":"La configuración de usuario y el proxy global se aplican a todos los repositorios","pxy_url":"Dirección del proxy HTTP","端口扫描":"Escaneo de Puertos","目标主机":"Host Destino","起始端口":"Puerto Inicial","结束端口":"Puerto Final","并发数":"Concurrencia","超时(ms)":"Tiempo de Espera (ms)","扫描":"Escanear","扫描结果":"Resultados del Escaneo","扫描完成":"Escaneo completado","扫描失败":"Escaneo fallido","正在扫描...":"Escaneando...","未发现开放端口":"No se encontraron puertos abiertos","scan_in":"Ingrese los parámetros y haga clic en Escanear","hostreq":"La dirección del host no puede estar vacía","端口范围无效":"Rango de puertos no válido","portrng":"El puerto inicial no puede ser mayor que el puerto final","开放":"Abierto","总计扫描":"Total Escaneado","已发现":"Encontrado","当前":"Actual","扫描已取消":"Escaneo cancelado","自动换行":"Ajuste automático","不换行":"Sin ajuste","替换":"Reemplazar","env编辑":"Editar env","命令确认":"Confirmación de comando","命令检测开启":"Habilitar detección de comandos","命令检测关闭":"Deshabilitar detección de comandos","命令检测已开启":"Detección de comandos habilitada","命令检测已关闭":"Detección de comandos deshabilitada","此会话不再询问":"No preguntar más en esta sesión","doc_pxy":"Configuración de proxy de Docker","HTTP 代理":"Proxy HTTP","pxy_htt":"Proxy HTTPS","pxy_nne":"No Proxy","保存失败":"Error al guardar","MD编辑器":"Editor MD","行":"Fila","列":"Columna","默认":"Predeterminado","删除行":"Eliminar fila","删除列":"Eliminar columna","上方插入行":"Insertar fila arriba","切换表头行":"Alternar fila de encabezado","合并单元格":"Combinar celdas","拆分单元格":"Dividir celda","下方插入行":"Insertar fila abajo","左侧插入列":"Insertar columna a la izquierda","右侧插入列":"Insertar columna a la derecha","插入表格":"Insertar tabla","加载中":"Cargando","打开失败":"Error al abrir","重启失败":"Error al reiniciar","doc_cfg":"Configuración de Docker","名单视图":"Vista de lista","文本视图":"Vista de texto","目标(To)":"Destino (To)","动作":"Acción","fw_from":"Origen (From)","删除规则":"Eliminar regla","规则编号":"Número de regla","点击复制":"Clic para copiar","镜像加速":"Espejos de registro","不安全仓库":"Registros inseguros","开启调试":"Activar depuración","数据存储目录":"Directorio de datos","存储驱动":"Controlador de almacenamiento","日志驱动":"Controlador de registros","fw_iptb":"Habilitar iptables","lve_rst":"Restauración en vivo","添加规则":"Agregar regla","请填写端口号":"Introduzca un puerto","方向":"Dirección","协议":"Protocolo","来源地址":"Dirección de origen","获取失败":"Error al obtener","进程环境变量":"Variables de entorno del proceso","端口实例":"Instancia de puerto","srchbln":"Abrir directorio en modo de búsqueda en blanco","搜索会话":"Buscar sesiones","sw_mdl":"Permitir cambiar de modelo de IA","选择模型":"Seleccionar modelo","mv_self":"No se puede mover una carpeta dentro de sí misma","网站 Logo":"Logotipo del sitio","lclorur":"Ruta de archivo local o URL de imagen http(s)","全部":"Todo","源码模式":"Modo código fuente","实时编辑模式":"Modo de edición en vivo","编辑器设置":"Configuración del editor","正文最大宽度":"Ancho máximo del contenido","正文左右边距":"Margen lateral del contenido","正文字号":"Tamaño de fuente del contenido","行高":"Altura de línea","恢复默认":"Restaurar valores predeterminados","保存中":"Guardando","预览":"Vista previa","nprmtp":"No tiene permiso para cambiar esta configuración. A continuación se muestra la configuración actual.","md_set":"Configuración del editor MD","目录挂载":"Montaje de directorio","总开关":"Interruptor general","挂载":"Montar","挂载到网盘":"Montar en la nube","编辑挂载配置":"Editar montaje","取消挂载":"Desmontar","确认取消挂载":"Confirmar desmontaje","已取消挂载":"Desmontado","该目录尚未挂载":"Este directorio no está montado","挂载目录":"Directorio de montaje","只读":"Solo lectura","挂载类型":"Tipo de montaje","显示名称":"Nombre visible","标识色":"Color del marcador","只读模式":"Modo de solo lectura","测试连接":"Probar conexión","测试中":"Probando","连接成功":"Conexión correcta","连接失败":"Error de conexión","请选择挂载类型":"Seleccione un tipo de montaje","请填写":"Rellene: ","未授权":"No autorizado","服务地址":"Dirección del servidor","起始目录":"Directorio inicial","留空表示根目录":"Dejar vacío para el directorio raíz","主机":"Host","默认 22":"Por defecto 22","私钥内容":"Contenido de la clave privada","与私钥二选一":"Elija esto o la clave privada","与密码二选一":"Elija esto o la contraseña","存储桶":"Bucket","区域":"Región","强制路径风格":"Forzar estilo de ruta","授权账号":"Cuenta autorizada","百度网盘授权":"Autorización de Baidu Netdisk","去授权":"Autorizar","完成授权":"Completar autorización","授权码":"Código de autorización","回调地址":"URI de redirección","rqappky":"Introduzca el AppKey","rq_scrt":"Introduzca el SecretKey","请填写授权码":"Introduzca el código de autorización","svappfr":"Guarde primero la configuración de la app","授权成功":"Autorización correcta","账号可用":"La cuenta está disponible","账号不可用":"La cuenta no está disponible","校验":"Verificar","已授权账号":"Cuentas autorizadas","已删除":"Eliminado","处理中":"Procesando","AppKey":"AppKey","网盘挂载":"Montaje en la nube","凭据管理":"Credenciales","凭据":"Credencial","新增凭据":"Añadir credencial","凭据已丢失":"Credencial perdida","挂载列表":"Montajes","新增挂载":"Añadir montaje","munt_rq":"El directorio de montaje no puede estar vacío","请选择凭据":"Seleccione una credencial","请选择类型":"Seleccione un tipo","启用":"Activado","已停用":"Desactivado","确认删除":"Confirmar eliminación de","nmuntpr":"La cuenta actual no tiene permiso para montar directorios","百度网盘":"Baidu Netdisk","应用配置":"Ajustes de la app","授权":"Autorizar","授权失败":"Autorización fallida","strtdrt":"Dir inicial","ftr2rmt":"Reenviar al remoto","ftr2rmt_tip":"Las solicitudes de terminal, workflow y git en este directorio se ejecutan en el FileCat remoto","授权检测":"Comprobar autorización","scrtkep":"Deja SecretKey vacío para no modificarlo","编辑应用":"Editar app","新增授权账号":"Añadir cuenta autorizada","一键授权":"Autorizar con un clic","outh_ob":"Manual (oob)","pst_cd":"Pegue el código de autorización","确认授权":"Confirmar autorización","授权检测/刷新":"Verificar / actualizar","检测完成":"Comprobación completada","导入":"importados","账号名":"Nombre de la cuenta","百度账号":"Cuenta de Baidu","网盘昵称":"Apodo de Netdisk","授权状态":"Estado de autorización","过期时间":"Caduca el","授权时间":"Autorizado el","已授权":"Autorizado","已过期":"Caducado","停用":"Desactivar","已配置":"Configurado","未配置":"Sin configurar","网盘使用":"Uso de Netdisk","自动刷新":"Actualización automática","编辑账号":"Editar cuenta","使用":"Uso","当前为挂载目录":"Directorio montado","启用挂载":"Habilitar montajes","已启用":"Habilitado","挂载已启用":"Montajes habilitados","挂载已停用":"Montajes deshabilitados","muntont":"Montajes habilitados, clic para deshabilitar","muntoff":"Montajes deshabilitados, clic para habilitar","凭证管理":"Credenciales","授权方式":"Modo de autorización","去授权(一键)":"Autorizar (un clic)","去授权(手动)":"Autorizar (manual)","保存应用配置":"Guardar configuración","atathtp":"Un clic: volverá aquí tras la autorización y la cuenta se añadirá automáticamente","atathnt":"El modo de un clic requiere registrar /mount/baidu/callback de este servicio como URI de redirección en la consola de Baidu","pstatht":"Manual: no requiere URI de redirección. Tras autorizar, copie el código de la página de Baidu, péguelo abajo y pulse Completar","crd_tp":"Una credencial es la información de la cuenta para conectarse a un disco en la nube o a un host remoto. Puede ser compartida por varios puntos de montaje; al editarla se aplica en todos a la vez.","bidacct":"Las cuentas de Baidu Netdisk no se gestionan aquí. Autorícelas en el panel \\"Baidu Netdisk\\" de abajo; la cuenta correspondiente se crea automáticamente tras la autorización.","pwdkept":"Al editar, dejar vacío un campo de tipo contraseña mantiene el valor original.","tstbfrs":"Antes de guardar, puede pulsar \\"Probar conexión\\" para verificar que la cuenta funciona.","prtwbdv":"Un protocolo de archivos genérico compatible con Jianguoyun, Synology NAS, Nextcloud, Alist, etc. Basta una URL de servicio y una cuenta para acceder al directorio remoto.","prtsftp":"Accede a un directorio de un servidor remoto por SSH, transfiriendo archivos mediante el subsistema SFTP. Ideal para montar un directorio de otra máquina Linux.","prt_s3":"Servicios de almacenamiento de objetos accesibles por el protocolo S3, como MinIO, Alibaba Cloud OSS, Tencent COS, Qiniu y Cloudflare R2. Requiere URL de servicio, bucket y un par de claves.","深搜":"Búsqueda prof.","搜索":"Buscar","搜索中":"Buscando","范围":"Ámbito","结果过多":"Demasiados resultados, refine la palabra clave","已显示":"Mostrado","搜文件名":"Buscar nombre de archivo recursivamente","搜到该处":"Ir a su carpeta","打开所在目录":"Abrir carpeta contenedora","输入后搜":"Escribe un nombre y pulsa Enter","无匹配":"No se encontraron archivos","结果截断":"Demasiados resultados, mostrando 500","缩放调整":"Ajustar zoom","缩放调整成功":"Zoom ajustado correctamente","缩放百分比":"Porcentaje de zoom","未加载":"Sin cargar","加载成功":"Cargado","加载失败":"Error al cargar","个工具":"herramientas","No share found":"No se encontró ningún recurso compartido","Enter host first":"Introduce el host primero","下一步":"Siguiente","上一步":"Atrás","共享目录":"Carpeta compartida","prt_smb":"Carpeta compartida de Windows (SMB/CIFS). Rellena el host y la cuenta y elige el nombre del recurso.","prt_bd":"Baidu Netdisk. Crea una app en la plataforma abierta de Baidu, rellena AppKey / SecretKey y autoriza una cuenta.","没有找到共享":"No se encontraron recursos compartidos","粘贴授权码 code":"Pega el código de autorización","重新授权":"Autorizar de nuevo","请选择账号":"Seleccione una cuenta","请填写备注":"Introduzca una nota","账号已丢失":"Cuenta no encontrada","已暂存的更改":"Cambios preparados","全部暂存":"Preparar todo","全部取消暂存":"Quitar todo","暂存":"Preparar","无差异":"Sin diferencias","二进制文件":"Archivo binario","单栏":"Unificada","并排":"Lado a lado","点击左侧文件查看差异":"Haga clic en un archivo de la izquierda para ver los cambios","未跟踪文件无差异":"Los archivos sin seguimiento no tienen diferencias","请先暂存要提交的文件":"Prepare primero los archivos que desea confirmar","没有已更改的文件":"No hay archivos modificados","未暂存":"Sin preparar","逐行归属":"Autoría por línea","无法读取该文件的归属信息":"No se puede leer la autoría de este archivo","全部文件":"Todos los archivos","新建分支":"Nueva rama","删除分支":"Eliminar rama","确认删除分支":"¿Eliminar la rama?","合并到此分支":"Fusionar en esta rama","新分支名":"Nombre de la nueva rama","当前分支":"Rama actual","切换到":"Cambiar a","分支创建成功":"Rama creada","分支删除成功":"Rama eliminada","合并成功":"Fusionado","标签":"Etiquetas","新建标签":"Nueva etiqueta","标签名":"Nombre de etiqueta","暂无标签":"Sin etiquetas","标签创建成功":"Etiqueta creada","标签删除成功":"Etiqueta eliminada","标签推送成功":"Etiqueta enviada","删除标签":"Eliminar etiqueta","确认删除标签":"¿Eliminar etiqueta?","请输入标签名":"Introduce el nombre de la etiqueta","推送到远程":"Enviar al remoto","基于提交":"Basado en el commit","基于当前提交":"Basado en el commit actual","暂存工作区记录":"Registros de stash","暂无记录":"Sin registros","恢复并删除":"Aplicar y eliminar","已恢复并删除记录":"Restaurado y eliminado","已应用":"Aplicado","远程分支":"Ramas remotas","拉取远程信息":"Obtener","拉取并清理已删除分支":"Obtener y limpiar","未配置远程仓库":"Sin remoto configurado","签出到本地":"Extraer en local","拉取完成":"Obtención completada","冲突":"Conflictos","采用我方版本":"Usar la nuestra","采用对方版本":"Usar la suya","标记已解决":"Marcar como resuelto","标记全部已解决":"Finalizar fusión","放弃合并":"Abortar fusión","确认放弃当前合并并恢复到操作前状态":"¿Abortar y restaurar el estado anterior?","已解决冲突":"Conflicto resuelto","已放弃合并":"Fusión abortada","合并已完成":"Fusión finalizada","撤销提交":"Revertir commit","将生成一个反向提交来撤销":"Se creará un commit inverso para revertir","已撤销":"Revertido","摘取提交":"Cherry-pick","将该提交应用到当前分支":"Aplicar este commit a la rama actual","摘取成功":"Cherry-pick aplicado","搜索提交":"Buscar commits","提交信息关键词":"Mensaje del commit","作者":"Autor","请输入搜索条件":"Introduce criterios de búsqueda","操作历史":"Historial","回退到此处":"Restablecer aquí","强制回退(丢弃改动)":"Reset duro (descartar cambios)","此操作将永久丢弃未提交的改动":"Esto descarta permanentemente los cambios sin confirmar","已回退":"Restablecido","已强制回退":"Reset duro aplicado","子模块":"Submódulos","无子模块":"Sin submódulos","初始化并更新子模块":"Inicializar y actualizar submódulos","子模块更新完成":"Submódulos actualizados","未初始化":"No inicializado","与记录不一致":"Difiere del registro","正常":"Normal","当前提交":"Commit actual","领先上游":"Por delante del remoto","落后上游":"Por detrás del remoto","钩子":"Ganchos","停用钩子":"Desactivar gancho","确认删除并停用":"Eliminar y desactivar","保存并启用":"Guardar y activar","已保存并启用":"Guardado y activado","与工作区对比":"Comparar con el área de trabajo","仓库":"Repositorios","初始化仓库":"Inicializar repositorio","克隆仓库":"Clonar repositorio","仓库初始化成功":"Repositorio inicializado","克隆成功":"Clonado","目录名":"Nombre del directorio","请输入目录名":"Introduce el nombre del directorio","仓库地址":"URL del repositorio","请输入仓库地址":"Introduce la URL del repositorio","当前目录下没有仓库":"No hay repositorios aquí","进入":"Abrir","修改最后一次提交":"Modificar el último commit","已修改最后一次提交":"Último commit modificado","分支比较":"Comparar ramas","两个分支没有差异":"No hay diferencias entre ramas","确认删除远程分支":"Eliminar rama remota","该分支会从远程仓库删除":"Esta rama se eliminará del repositorio remoto","删除远程分支":"Eliminar rama remota","将":"Fusionar","合并到":"en","未推送":"Sin enviar","已到底部":"No hay más","没有可提交的更改":"Nada que confirmar","存在未暂存的改动,是否一并暂存并提交?":"Hay cambios sin preparar. ¿Prepararlos y confirmarlos juntos?","二进制文件无法比较":"No se puede comparar un archivo binario","请选择文件查看改动":"Selecciona un archivo para ver los cambios","clk_edt":"Clic para editar","rendering":"Renderizando…","思维导图":"Mapa mental","新窗口打开":"Abrir en nueva pestaña","已选":"Seleccionados","复制所选":"Copiar selección","删除所选":"Eliminar selección","全部复制":"Copiar todo","多选":"Seleccionar","wbvpn_allow":"Lista blanca de destinos WebVPN","wbvpn_allow_ph":"Una entrada por línea: 192.168.1.0/24 (CIDR) / 192.168.1.1 (IP) / router.local (dominio, coincidencia exacta, sin subdominios)","wbvpn_tip":"Lista blanca de destinos WebVPN. Una entrada por línea, tres formatos:\\n · Rango CIDR: 192.168.1.0/24\\n · IP exacta: 192.168.1.1 (también 10.0.0.5, fd00::/8, ::1)\\n · Dominio exacto: router.local, nas.example.com (coincidencia exacta, NO incluye subdominios)\\nLas direcciones públicas se permiten por defecto. Las privadas, loopback, link-local, metadatos en la nube (169.254.169.254) y reservadas se deniegan. Las líneas mal formadas se ignoran.","wbvpn_port_range":"Rango de puertos proxy","wbvpn_port_tip":"Cada destino ocupa un puerto independiente. Abra la URL de acceso para navegar; la ruta se mantiene limpia, el enrutado SPA funciona y los sitios quedan aislados por origen.","wbvpn_port_tip2":"El acceso requiere iniciar sesión: abrir desde aquí envía un token una vez y luego una cookie mantiene la sesión. Los destinos siguen sujetos a la lista blanca / política de direcciones.","wbvpn_port_tip3":"Los enlaces de la página que apuntan a un destino activo se reescriben automáticamente al puerto de ese destino, de modo que el clic permanece dentro del proxy; los dominios no configurados como destino no se modifican.","网页代理目标":"Destinos proxy","访问地址":"URL de acceso","打开":"Abrir","已复制":"Copiado","复制失败":"Error al copiar","添加成功":"Añadido","目标地址不能为空":"La dirección de destino no puede estar vacía","目标地址例如":"Dirección de destino, ej. 192.168.1.1:8080","网页代理":"Proxy web","当前窗口打开":"Abrir en pestaña actual","修改成功":"Modificado","浏览器代理编辑":"Edición del proxy de navegador","已禁用":"Deshabilitado","prt_local":"Directorio local. Indica una ruta absoluta existente en esta máquina como origen; tras montarlo podrás acceder a él como un enlace de directorio dentro de filecat.","移动到最上":"Mover arriba","移动到最下":"Mover abajo","会话设置":"Configuración de sesión","服务器工作目录":"Directorio de trabajo del servidor","服务器工作目录提示":"p. ej.: D:\\\\projects\\\\myapp","AI 聊天":"Chat IA","动态域名解析":"DNS dinámico","平台":"Proveedor","账号凭证":"Credenciales","域名绑定":"Vinculación de dominio","IP 来源":"Origen de IP","域名":"Dominio","多个域名用空格分隔":"Separe varios dominios con espacios","绑定":"Vinculación","填写格式":"Formato","请填写账号凭证":"Introduzca las credenciales","确定删除吗":"¿Confirmar eliminación?","ddns_help_1":"Configure DDNS para actualizar automáticamente los registros DNS con su IP pública actual.","ddns_help_2":"Los orígenes de IP incluyen interfaces locales y URL HTTP personalizadas.","请输入地址":"Introduzca la URL","IP 来源管理":"Gestionar orígenes de IP","暂无数据":"Sin datos","http_source_tip":"Añada una fuente de IP: una URL HTTP que devuelva su IP pública (p. ej. https://4.ipw.cn) o una IP fija.","同步间隔":"Intervalo de sincronización","账号状态":"Cuenta","上次同步":"Última sincronización","验证":"Verificar","未验证":"Sin verificar","失败":"Fallo","同步完成":"Sincronización completada","间隔不能小于 10 秒":"El intervalo debe ser de al menos 10 segundos","文字":"Texto","请填写完整的账号凭证":"Complete todos los campos de credenciales","加载时间线失败":"Error al cargar la línea de tiempo","展开编辑":"Mostrar edición","收起编辑":"Ocultar edición","添加阶段":"Añadir fase","上移":"Subir","下移":"Bajar","起始时间":"Hora inicio","结束时间":"Hora fin","阶段倒置":"Invertir fases","在阶段前插入":"Insertar antes","在阶段后插入":"Insertar después","拖动排序":"Arrastra para reordenar","导出 SVG":"Exportar SVG","折叠全部阶段":"Contraer todas las fases","展开全部阶段":"Expandir todas las fases","导出图片":"Exportar como imagen","导出图片失败":"Error al exportar la imagen","撤销":"Deshacer","重做":"Rehacer","缩小":"Alejar","放大":"Acercar","重置缩放":"Restablecer zoom","进入编辑模式":"Entrar en modo edición","退出编辑模式":"Salir del modo edición","事件":"Evento","标题":"Título","描述":"Descripción","日期":"Fecha","左侧":"Izquierda","右侧":"Derecha","颜色":"Color","自定义颜色":"Color personalizado","跟随阶段":"Seguir fase","拖动事件气泡可改变位置与所属阶段":"Arrastra la burbuja para cambiar su posición y fase","删除事件":"Eliminar evento","在左侧添加事件":"Añadir evento a la izquierda","在右侧添加事件":"Añadir evento a la derecha","删除阶段":"Eliminar fase","阶段":"Fase","阶段头":"Cabecera de fase","显示":"Mostrar","隐藏":"Ocultar","拖动阶段头可调整顺序":"Arrastra la cabecera para reordenar","用上移下移调整事件顺序,用左右切换事件所在侧":"Usa arriba/abajo para reordenar eventos y izquierda/derecha para cambiar de lado","拖动调整阶段高度":"Arrastra para ajustar la altura de la fase","未命名":"Sin título","有未保存的修改,确定要关闭吗?":"Hay cambios sin guardar. ¿Cerrar de todos modos?","纵向":"Vertical","横向":"Horizontal","节点样式":"Estilo de nodo","圆点":"Punto","圆形":"Círculo","方形":"Cuadrado","图片":"Imagen","卡片样式":"Estilo de tarjeta","卡片":"Tarjeta","朴素":"Simple","气泡":"Burbuja","连线风格":"Estilo de línea","实线":"Sólida","虚线":"Discontinua","点线":"Punteada","显示连线":"Mostrar conectores","上侧":"Arriba","下侧":"Abajo","添加事件":"Añadir evento","图片地址":"URL de imagen","拖动调整卡片宽度":"Arrastra para ajustar el ancho de la tarjeta","拖动调整连线长度":"Arrastra para ajustar la longitud del conector","隐藏阶段头":"Ocultar encabezado de fase","显示阶段头":"Mostrar encabezado de fase","时间线":"Línea de tiempo","添加子节点":"Añadir nodo hijo","添加同级节点":"Añadir nodo hermano","删除节点":"Eliminar nodo","插入图片":"Insertar imagen","插入图标":"Insertar icono","插入超链接":"Insertar hipervínculo","节点备注":"Nota del nodo","结构":"Estructura","逻辑结构图":"Estructura lógica","组织结构图":"Organigrama","目录组织图":"Diagrama de catálogo","时间轴(左)":"Línea de tiempo (izq.)","时间轴(下)":"Línea de tiempo (abajo)","时间轴(上)":"Línea de tiempo (arriba)","时间轴(竖)":"Línea de tiempo (vert.)","鱼骨图":"Espina de pescado","鱼骨图(右)":"Espina de pescado (der.)","曲线":"Curva","直线":"Recta","直连":"Directa","默认主题":"Predeterminado","经典":"Clásico","暗色":"Oscuro","极简":"Mínimo","缤纷":"Colorido","请先选中一个节点":"Selecciona un nodo primero","请输入链接地址":"Introduce la URL","加载思维导图失败":"Error al cargar el mapa mental","编辑器尚未就绪":"Editor no listo","中心主题":"Tema central","适应窗口":"Ajustar a ventana","插入父节点":"Insertar nodo padre","粘贴":"Pegar","节点标签":"Etiqueta del nodo","请输入节点备注":"Introduce la nota","请输入节点标签,多个用逗号分隔":"Introduce etiquetas separadas por comas","添加概要":"Añadir resumen","删除概要":"Eliminar resumen","请先选中要合并的节点(按住 Ctrl 拖框可多选)":"Selecciona los nodos a fusionar (mantén Ctrl y arrastra para multiselección)","删除图标":"Eliminar icono","删除备注":"Eliminar nota","删除超链接":"Eliminar enlace","供应商设置":"Configuración de proveedores","默认model":"Modelo por defecto","全局prompt":"Prompt global","全局":"Global","model请求参数json编写":"JSON de parámetros","额外参数设置":"Parámetros extra","编辑器自动保存":"Autoguardado del editor","自动保存间隔(秒)":"Intervalo de autoguardado (s)","请输入不小于 1 的整数(秒)":"Introduzca un entero >= 1 (segundos)","文本编辑器(ace)":"Editor de texto (Ace)","md编辑器":"Editor MD","思维导图编辑器":"Editor de mapas mentales","draw编辑器":"Editor de dibujo","时间线编辑器":"Editor de líneas de tiempo","图片编辑器":"Editor de imágenes","excel编辑器":"Editor de Excel","编辑器":"Editores","cron表达式":"Expresión Cron","系统提示词":"Prompt del sistema","不使用":"Ninguno","消息数":"Mensajes","来源":"Origen","更多操作":"Más acciones","环境变量":"Variables de entorno","暂无环境变量":"Sin variables de entorno","环境变量的 KEY 不能为空":"La KEY de la variable de entorno no puede estar vacía","重启成功":"Reiniciado correctamente","重启服务":"Reiniciar servicio","配置已保存,是否立即重启该服务让新配置生效?":"Configuración guardada. ¿Reiniciar el servicio ahora para aplicarla?","暂停中":"Pausando","discard":"Descartar cambios","discarded":"Cambios descartados","discard_untracked_tip":"Este archivo no está bajo control de versiones. Descartar lo eliminará permanentemente. ¿Continuar?","discard_modified_tip":"Los cambios locales se descartarán y se restaurará la versión del repositorio. ¿Continuar?","discard_selected_tip":"Se descartarán los cambios locales de los {{n}} archivo(s) seleccionado(s). ¿Continuar?","加载资源失败":"No se pudo cargar el recurso","网络错误":"Error de red","没有安装smartmontools":"smartmontools no está instalado","挂载文件已生效":"Archivo de montaje aplicado","刷新成功":"Actualizado","未选择转发送 client":"No se seleccionó cliente de reenvío","删除完成":"Eliminado","保护路径不能删除":"No se puede eliminar una ruta protegida","MCP工具加载成功":"Herramientas MCP cargadas","没有选中":"Nada seleccionado","不能为空":"No puede estar vacío","和原文件格式后缀一样":"Misma extensión que el archivo original","发生错误":"Se produjo un error","不支持的文件后缀":"Extensión de archivo no compatible","更新到AI知识库成功":"Añadido a la base de conocimiento de IA","文件名不能为空":"El nombre del archivo no puede estar vacío","挂载目录不能为空":"El directorio de montaje no puede estar vacío","重复挂载":"Montaje duplicado","该设备块没有具体路径":"Este dispositivo no tiene una ruta concreta","该设备块没有文件系统":"Este dispositivo no tiene sistema de archivos","路由不能为空":"La ruta no puede estar vacía","创建完成":"Creado","保存完成":"Guardado","获取进程输出失败":"No se pudo obtener la salida del proceso","进程已终止":"Proceso terminado","终止进程失败":"No se pudo terminar el proceso","账号密码不能为空":"La cuenta y la contraseña no pueden estar vacías","两次密码不一样":"Las contraseñas no coinciden","目录不能为空":"El directorio no puede estar vacío","秒数不能为空":"Los segundos no pueden estar vacíos","清理完成,重新登录":"Limpieza completada, vuelve a iniciar sesión","密钥不能为空":"La clave no puede estar vacía","保存到服务器":"Guardar en el servidor","加载资源失败,请检查文件":"No se pudo cargar el recurso, revisa el archivo","操作成功":"Hecho","未获取到路径":"No se pudo obtener la ruta","复制成功":"Copiado","暂无聊天记录":"Sin historial de chat","暂无内容":"Sin contenido","到达顶部":"Se alcanzó el inicio","范围在0-100":"El rango es 0-100","不存在的http method":"Método HTTP no admitido","不存在":"No existe","不是数字":"No es un número","已经存在的页面资源路由配置目录设置":"Este directorio de rutas de recursos de página ya está configurado","mac地址不能为空":"La dirección MAC no puede estar vacía","发送唤醒命令成功":"Comando de activación enviado","不能都为空":"Los campos no pueden estar todos vacíos","转换成":"Convertir a","转换":"Convertir","格式化":"Formatear","结果转到输入":"Mover resultado a entrada","示例":"Ejemplo","输入":"Entrada","输出":"Salida","内容为空":"El contenido está vacío","输出为空":"La salida está vacía","编码":"Codificar","解码":"Decodificar","大写":"Mayúsculas","空格分隔":"Separado por espacios","正则表达式":"Expresión regular","分组索引":"índices","忽略大小写":"ignorar mayúsculas","多行":"multilínea","含换行":"punto incluye salto","Unicode 集合":"conjuntos unicode","粘性":"sticky","匹配到":"Coincidencias","测试文本":"Texto de prueba","高亮结果":"Resultado resaltado","匹配详情":"Detalles de coincidencias","空":"vacío","位置":"posición","未匹配":"sin coincidencia","时间转换":"Conversor de marca de tiempo","时间戳":"Marca de tiempo","秒或毫秒":"segundos o milisegundos","现在":"Ahora","秒级":"Segundos","毫秒级":"Milisegundos","本地时间":"Hora local","UTC 时间":"Hora UTC","距现在":"Relativo","转时间戳":"A marca de tiempo","无效时间戳":"Marca de tiempo inválida","天":"d","小时":"h","分钟":"m","还有":"en","已过去":"hace","刚刚":"justo ahora","进制转换":"Conversor de base","输入数值":"Introduce un número","进制":"base","字节":"Bytes","位":"bits","颜色转换":"Conversor de color","复制颜色":"Copiar color","颜色格式无效":"Formato de color inválido","UUID / 随机密码":"UUID / Contraseña aleatoria","生成 UUID":"Generar UUID","生成密码":"Generar contraseña","长度":"Longitud","符号":"Símbolos","二维码生成":"Generador de código QR","尺寸":"Tamaño","纠错级别":"Corrección de errores","下载 PNG":"Descargar PNG","处":"coincidencia(s)","秒":"s","文本对比":"Comparar texto","原文本":"Texto original","新文本":"Texto nuevo","粘贴原文本":"Pega el texto original","粘贴新文本":"Pega el texto nuevo","差异":"Diferencias","输入文本后这里显示差异":"Las diferencias aparecerán aquí tras escribir","生成二维码":"Generar código QR","need_input":"Introduce contenido primero","num_invalid":"No es un número válido","date_invalid":"Formato de fecha no reconocido, ej. 2024-01-01 12:00:00","color_invalid":"Color inválido, usa #abc o #aabbcc","qr_empty":"El código QR aparecerá aquí tras escribir","qr_in_ph":"Introduce texto o URL a codificar","qr_none":"No hay código QR para descargar","codec_in_ph":"Introduce texto para codificar o decodificar","codec_out_ph":"El resultado aparece aquí y se puede editar","hash_in_ph":"Introduce texto para hashear, actualización en vivo","regex_in_ph":"Pega aquí el texto a probar","regex_empty":"El resultado resaltado aparecerá aquí","pw_need_set":"Selecciona al menos un tipo de carácter"}')}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[8435],{78435(e,n,t){t.r(n),t.d(n,{default:()=>c});var a=t(96540),l=(t(82893),t(74848));const s=a.lazy(()=>Promise.all([t.e(4924),t.e(2674)]).then(t.bind(t,92674)));function c(){return(0,l.jsx)(a.Fragment,{children:(0,l.jsx)(s,{})})}}}]);
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[8435],{78435(e,n,t){t.r(n),t.d(n,{default:()=>c});var a=t(96540),l=(t(82893),t(74848));const s=a.lazy(()=>Promise.all([t.e(2543),t.e(2674)]).then(t.bind(t,92674)));function c(){return(0,l.jsx)(a.Fragment,{children:(0,l.jsx)(s,{})})}}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[8765],{60096(e,i,t){t.d(i,{QW:()=>z,Ic:()=>b,t$:()=>F,$J:()=>$});var n=t(96540),l=t(47022),s=t(34843),o=t(82893),a=t(52671),r=t(64694),d=t(14284),c=t(34289),m=t(23430),f=t(62042),h=t(99214),p=t(85997),u=t(22022),_=t(74848);function x(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,a]=(0,s.fp)(o.AG.nowFileList),[c,x]=(0,s.fp)(o.AG.confirm),[g,y]=(0,s.fp)(o.AG.user_base_info),{t:w}=(0,u.Bd)();return(0,_.jsxs)("div",{...e.extraAttr,onClick:()=>{!async function(i){e.click&&e.click(i,e.name)}(e.index)},className:e.mount?"item mount-item":"item",role:"button","data-type":e.isLink?"invalid_link":e.type,"data-dir":!e.type||e.type===l.Iw.folder,"data-mount":e.mount?"true":void 0,"aria-selected":null!==(0,r.kW)(i,e.index),"aria-label":e.name,style:{"--filewidth":e.itemWidth??"33%"},onDragStart:n=>{return l=e.index,void(i.find(e=>e===l)||t([...i,l]));var l},onDrop:t=>((t,s)=>{const o=t.dataTransfer;let a,r=!1;for(let e=0;e<o.items.length;e++)if("file"===o.items[e].kind){r=!0;break}if(r)return;if(g?.user_data?.file_list_pagination_mode===m.yM.pagination){if(a=n.files[s],n.files[s]?.type!==l.Iw.folder)return}else if(a=n.folders[s],n.folders.length<=s)return;(0,h.ib)(n,i).some(e=>e?.name===a?.name)?(0,f.zN)(w("mv_self")):x({open:!0,title:`确定将文件移动并覆盖到${a?.name}吗?`,handle:async()=>{await e.draggable_handle(a?.name)}})})(t,e.index),draggable:void 0!==e.draggable_handle,children:[void 0===e.icon&&(0,_.jsx)("div",{children:e.type!==l.Iw.image||null==e.path||g?.user_data?.not_pre_show_image?(0,_.jsx)(p.In,{icon:""}):(0,_.jsx)("img",{loading:"lazy",src:d.$M.getDownloadUrl(e.path,{mtime:e.mtime,cache:1}),alt:e.name})}),void 0!==e.icon&&(0,_.jsx)("div",{className:"rotating-div",children:(0,_.jsx)("span",{className:"material-icons",children:e.icon})}),(0,_.jsxs)("div",{children:[(0,_.jsxs)("p",{className:"name",children:[(0,_.jsx)("span",{children:e.name}),e.mount_readonly&&(0,_.jsx)("span",{className:"mount-readonly-tag",children:w("只读")})]}),e.size?(0,_.jsx)("p",{children:e.size}):(0,_.jsx)("p",{children:"—"}),(0,_.jsx)("p",{children:e.show_mtime})]}),e.children]})}var g=t(89824),y=t(34251);function w(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,m]=(0,s.fp)(o.AG.nowFileList),[f,p]=(0,s.fp)(o.AG.confirm),[w,k]=(0,s.fp)(o.AG.file_page),[v,j]=(0,s.fp)(o.AG.enterKey),{click_file:A}=(0,h.kZ)(),G=(0,h._A)(),{t:z}=(0,u.Bd)(),b=(0,a.Zp)();(0,a.zy)();const F=(0,h.A9)(),{clickDouble:$}=(0,h.xI)(),[I,C]=(0,s.fp)(o.AG.showPrompt);return(0,_.jsx)(x,{extraAttr:{onContextMenu:t=>{((t,n,s,o)=>{t.preventDefault(),t.stopPropagation();const a=new y.ik;a.path=(0,r.IO)((0,c.vX)(),n),a.filename=n,a.x=t.clientX,a.y=t.clientY,a.type=s?l.Iw.folder:(0,y.uL)(n),a.size=o,a.useSelectedList=i.includes(e.index),C({show:!0,type:g.PromptEnum.FileMenu,overlay:!1,data:a})})(t,e.name,e.type===l.Iw.folder,e.origin_size)}},draggable_handle:async e=>{const l=(0,h.ib)(n,i).map(e=>(0,h.Ok)(e.name));await d.$M.post("cut",{files:l,to:`${(0,c.GG)("file",(0,c.vX)())}/${e}`});t([]),p({open:!1,handle:null}),b((0,c.vX)())},name:e.name,index:e.index,mtime:e.mtime,size:e.size,type:e.type,isLink:e.isLink,path:e.path,icon:e.icon,show_mtime:e.show_mtime,mount:e.mount,mount_driver:e.mount_driver,mount_color:e.mount_color,mount_readonly:e.mount_readonly,click:(n,s)=>{if($(n,async()=>{if(e.type===l.Iw.folder)F(s);else{if(await A({name:s,size:e.origin_size,opt_shell:!0,mtime:e.mtime,close:()=>G(null)})){if(e.type===l.Iw.url)return;G({name:s,mode:(0,h.Pc)(e.type)})}}}))return;if(null!==(0,r.kW)(i,n))t((0,r.P1)(i,n));else if("ctrl"===v)t([...i,n]);else if("shift"===v){const{max:e,min:l}=(0,r.a7)(i),s=[];if(n>=e)for(let i=e;i<=n;i++)s.push(i);else for(let e=l;e>=n;e--)s.push(e);t(s)}else t([n])},itemWidth:e.itemWidth})}var k=t(78247),v=(t(38240),t(64405)),j=t(88815);function A(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,m]=(0,s.fp)(o.AG.editorSetting),[f,p]=(0,s.fp)(o.AG.shellNowDir),[g,y]=(0,s.fp)(o.AG.sshInfo),[w,A]=(0,s.fp)(o.AG.nowFileList),[G,z]=(0,s.fp)(o.AG.enterKey),[b,F]=(0,s.fp)(o.AG.confirm),$=(0,a.Zp)(),{t:I}=(0,u.Bd)(),{clickDouble:C}=(0,h.xI)();return(0,_.jsx)(x,{draggable_handle:async n=>{const l=new v.x;Object.assign(l,g),l.target=(0,r.HS)(...f,n);const s=(0,h.ib)(w,i).map(e=>(0,r.HS)(...f,e.name));for(const e of s)if(l.source=e,!await d.Fg.post("move",l))return!1;t([]),F({open:!1,handle:null}),await e.fileHandler()},name:e.name,index:e.index,mtime:e.mtime,size:e.size,type:e.type,itemWidth:e.itemWidth,show_mtime:e.show_mtime,click:(n,s)=>{if(C(n,()=>{if(e.type===l.Iw.folder){const e=new v.x;return e.key=g.key,e.dir=`/${(0,c.GG)("remoteShell",(0,c.vX)())}${s}`,$((0,r.IO)((0,c.vX)(),s)),t([]),void A({files:[],folders:[]})}const i=async()=>{const i=new v.x;i.key=g.key,i.file=`/${(0,c.GG)("remoteShell",(0,c.vX)())}${s}`;const t=await d.Fg.post("get/file/text",i);let n;s.endsWith(l.Iw.workflow_act)?n="ace/mode/yaml":(s.endsWith(l.Iw.draw)||s.endsWith(l.Iw.excalidraw))&&(n="ace/mode/json"),m({model:n,open:!0,fileName:e.name,save:async e=>{i.context=e;0===(await d.Fg.post("update/file/text",i)).code&&k.xK.set_value_temp("")}}),k.xK.set_value_temp(t.data)};"number"==typeof e.origin_size&&e.origin_size>j.o5?F({open:!0,title:I("提示"),sub_title:"文件超过20MB了确定要打开吗?",handle:async()=>{F({open:!1,handle:null}),await i()}}):i()}))return;if(null!==(0,r.kW)(i,n))t((0,r.P1)(i,n));else if("ctrl"===G)t([...i,n]);else if("shift"===G){const{max:e,min:l}=(0,r.a7)(i),s=[];if(n>=e)for(let i=e;i<=n;i++)s.push(i);else for(let e=l;e>=n;e--)s.push(e);t(s)}else t([n])}})}function G(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,a]=(0,s.fp)(o.AG.enterKey),{click_file:c}=(0,h.kZ)(),[m,f]=(0,s.fp)(o.AG.nowFileList),{t:p}=(0,u.Bd)(),[w,k]=(0,s.fp)(o.AG.showPrompt),v=((0,h.oT)(),(0,h.xp)()),{clickDouble:j}=(0,h.xI)();return(0,_.jsx)(x,{extraAttr:{onContextMenu:i=>{((i,t,n,s)=>{i.preventDefault(),i.stopPropagation();const o=new y.ik,a=e.item_list;for(const e of a)if(e.name===t){o.path=e.path;break}o.is_share=!0,o.filename=t,o.x=i.clientX,o.y=i.clientY,o.type=n?l.Iw.folder:(0,y.uL)(t),o.size=s,o.share_token=e.share.share_token,o.share_id=e.share.share_id,k({show:!0,type:g.PromptEnum.FileMenu,overlay:!1,data:o})})(i,e.name,e.type===l.Iw.folder,e.origin_size)}},name:e.name,index:e.index,mtime:e.mtime,size:e.size,type:e.type,itemWidth:e.itemWidth,show_mtime:e.show_mtime,click:(s,o)=>{if(j(s,()=>{e.type!==l.Iw.folder&&(v(o)||c({file_path:e.item_list[s].path,file_url:d.$M.getDownloadUrlV2(e.item_list[s].path,"share_download",{share_id:e.share.share_id,share_token:e.share.share_token}),name:o,size:e.origin_size,opt_shell:!0,mtime:e.mtime,not_type_tip:p("未知类型,请下载查看")}))}))return;if(null!==(0,r.kW)(i,s))t((0,r.P1)(i,s));else if("ctrl"===n)t([...i,s]);else if("shift"===n){const{max:e,min:n}=(0,r.a7)(i),l=[];if(s>=e)for(let i=e;i<=s;i++)l.push(i);else for(let e=n;e>=s;e--)l.push(e);t(l)}else t([s])}})}function z({handleContextMenu:e,file_list:i,clickBlank:t,share:l}){const[a,r]=(0,s.fp)(o.AG.user_base_info),d=(0,n.useRef)(null),{t:c}=(0,u.Bd)(),m=(0,h.OJ)(),{file_is_running:f}=(0,k.hg)();return(0,h.UK)(i,[],d),(0,_.jsx)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem"},className:`mosaic file-icons ${a?.user_data?.file_list_show_type??""}`,ref:d,children:(0,_.jsx)("div",{onClick:t,children:i.map((e,t)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(G,{share:l,item_list:i,icon:f(e.name)?"refresh":void 0,itemWidth:m,index:t+0,...e})},t+0))})})}function b({handleContextMenu:e,file_list:i,folder_list:t,clickBlank:l,fileHandler:a}){const[r,d]=(0,s.fp)(o.AG.user_base_info),c=(0,n.useRef)(null),{t:m}=(0,u.Bd)(),f=(0,h.OJ)(),{file_is_running:p}=(0,k.hg)(),[x,y]=(0,s.fp)(o.AG.fileShellShow),w=(0,n.useMemo)(()=>t?.length??0,[t]);return(0,h.ei)(c,g.PromptEnum.SshUpload),(0,h.UK)(i,t,c),(0,n.useEffect)(()=>()=>{x.show&&y({show:!1,path:""})},[]),(0,_.jsxs)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem"},className:`mosaic file-icons ${r?.user_data?.file_list_show_type??""}`,ref:c,children:[t&&t.length>0&&(0,_.jsx)("h2",{children:m("文件夹")}),t&&(0,_.jsx)("div",{onClick:l,children:t.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(A,{fileHandler:a,itemWidth:f,index:i,...e})},i))}),i&&i.length>0&&(0,_.jsx)("h2",{onClick:l,children:m("文件")}),i&&(0,_.jsx)("div",{onClick:l,children:i.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(A,{fileHandler:a,icon:p(e.name)?"refresh":void 0,itemWidth:f,index:i+w,...e})},i+w))})]})}function F({handleContextMenu:e,file_list:i,folder_list:t,clickBlank:l}){const[a,r]=(0,s.fp)(o.AG.user_base_info),d=(0,n.useRef)(null),{t:c}=(0,u.Bd)(),[m]=(0,s.fp)(o.AG.zoom_style_by_percent),f=(0,h.OJ)(),{file_is_running:p}=(0,k.hg)(),[x,y]=(0,s.fp)(o.AG.fileShellShow),v=(0,n.useMemo)(()=>t?.length??0,[t]),j=(0,h.pi)(m);return(0,h.ei)(d,g.PromptEnum.FilesUpload),(0,h.UK)(i,t,d),(0,n.useEffect)(()=>()=>{x.show&&y({show:!1,path:""})},[]),(0,_.jsxs)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem",fontSize:j.fontSize},className:`mosaic file-icons ${a?.user_data?.file_list_show_type??""}`,ref:d,children:[t&&t.length>0&&(0,_.jsx)("h2",{children:c("文件夹")}),t&&(0,_.jsx)("div",{onClick:l,children:t.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(w,{itemWidth:f,index:i,...e})},i))}),i&&i.length>0&&(0,_.jsx)("h2",{onClick:l,children:c("文件")}),i&&(0,_.jsx)("div",{onClick:l,children:i.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(w,{icon:p(e.name)?"refresh":void 0,itemWidth:f,index:i+v,...e})},i+v))})]})}function $({handleContextMenu:e,list:i,clickBlank:t}){const[l,a]=(0,s.fp)(o.AG.user_base_info),r=(0,n.useRef)(null),{t:d}=(0,u.Bd)(),[c]=(0,s.fp)(o.AG.zoom_style_by_percent),m=(0,h.OJ)(),{file_is_running:f}=(0,k.hg)(),[p,x]=(0,s.fp)(o.AG.fileShellShow),[y,v]=(0,s.fp)(o.AG.enterKey),[j,A]=(0,s.fp)(o.AG.selectedFileList),[G,z]=(0,s.fp)(o.AG.file_page),b=(0,h.pi)(c);return(0,h.UK)(i,[],r),(0,h.ei)(r,g.PromptEnum.FilesUpload),(0,h.SQ)(r,()=>{z(e=>e.page_num<0?e:{page_size:e.page_size,page_num:e.page_num+1})},()=>{}),(0,n.useEffect)(()=>()=>{p.show&&x({show:!1,path:""})},[]),(0,_.jsx)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem",fontSize:b.fontSize},className:`mosaic file-icons ${l?.user_data?.file_list_show_type??""}`,ref:r,children:i&&(0,_.jsx)("div",{onClick:t,children:i.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(w,{icon:f(e.name)?"refresh":void 0,itemWidth:m,index:i,...e})},i))})})}},6960(e,i,t){t.d(i,{s:()=>o});var n=t(72635);const l=1440,s=525600;function o(e){e=e>1e12?e:1e3*e;const i=Date.now(),t=Math.abs(i-e)/6e4;return t<1?n.Ay.t("小于一分钟"):t<60?`${t.toFixed(0)} ${n.Ay.t("分钟前")}`:t<l?`${(t/60).toFixed(0)} ${n.Ay.t("小时前")}`:t<43200?`${(t/l).toFixed(0)} ${n.Ay.t("天前")}`:t<s?`${(t/43200).toFixed(0)} ${n.Ay.t("月前")}`:`${(t/s).toFixed(0)} ${n.Ay.t("年前")}`}}}]);
1
+ "use strict";(self.webpackChunkfilecat=self.webpackChunkfilecat||[]).push([[8765],{60096(e,i,t){t.d(i,{QW:()=>z,Ic:()=>b,t$:()=>F,$J:()=>$});var n=t(96540),l=t(47022),s=t(34843),o=t(82893),a=t(52671),r=t(64694),d=t(14284),c=t(34289),m=t(23430),f=t(62042),h=t(99214),p=t(85997),u=t(22022),_=t(74848);function x(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,a]=(0,s.fp)(o.AG.nowFileList),[c,x]=(0,s.fp)(o.AG.confirm),[g,y]=(0,s.fp)(o.AG.user_base_info),{t:w}=(0,u.Bd)();return(0,_.jsxs)("div",{...e.extraAttr,onClick:()=>{!async function(i){e.click&&e.click(i,e.name)}(e.index)},className:e.mount?"item mount-item":"item",role:"button","data-type":e.isLink?"invalid_link":e.type,"data-dir":!e.type||e.type===l.Iw.folder,"data-mount":e.mount?"true":void 0,"aria-selected":null!==(0,r.kW)(i,e.index),"aria-label":e.name,style:{"--filewidth":e.itemWidth??"33%"},onDragStart:n=>{return l=e.index,void(i.find(e=>e===l)||t([...i,l]));var l},onDrop:t=>((t,s)=>{const o=t.dataTransfer;let a,r=!1;for(let e=0;e<o.items.length;e++)if("file"===o.items[e].kind){r=!0;break}if(r)return;if(g?.user_data?.file_list_pagination_mode===m.yM.pagination){if(a=n.files[s],n.files[s]?.type!==l.Iw.folder)return}else if(a=n.folders[s],n.folders.length<=s)return;(0,h.ib)(n,i).some(e=>e?.name===a?.name)?(0,f.zN)(w("mv_self")):x({open:!0,title:`确定将文件移动并覆盖到${a?.name}吗?`,handle:async()=>{await e.draggable_handle(a?.name)}})})(t,e.index),draggable:void 0!==e.draggable_handle,children:[void 0===e.icon&&(0,_.jsx)("div",{children:e.type!==l.Iw.image||null==e.path||g?.user_data?.not_pre_show_image?(0,_.jsx)(p.In,{icon:""}):(0,_.jsx)("img",{loading:"lazy",src:d.$M.getDownloadUrl(e.path,{mtime:e.mtime,cache:1}),alt:e.name})}),void 0!==e.icon&&(0,_.jsx)("div",{className:"rotating-div",children:(0,_.jsx)("span",{className:"material-icons",children:e.icon})}),(0,_.jsxs)("div",{children:[(0,_.jsxs)("p",{className:"name",children:[(0,_.jsx)("span",{children:e.name}),e.mount_readonly&&(0,_.jsx)("span",{className:"mount-readonly-tag",children:w("只读")})]}),e.size?(0,_.jsx)("p",{children:e.size}):(0,_.jsx)("p",{children:"—"}),(0,_.jsx)("p",{children:e.show_mtime})]}),e.children]})}var g=t(78150),y=t(34251);function w(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,m]=(0,s.fp)(o.AG.nowFileList),[f,p]=(0,s.fp)(o.AG.confirm),[w,k]=(0,s.fp)(o.AG.file_page),[v,j]=(0,s.fp)(o.AG.enterKey),{click_file:A}=(0,h.kZ)(),G=(0,h._A)(),{t:z}=(0,u.Bd)(),b=(0,a.Zp)();(0,a.zy)();const F=(0,h.A9)(),{clickDouble:$}=(0,h.xI)(),[I,C]=(0,s.fp)(o.AG.showPrompt);return(0,_.jsx)(x,{extraAttr:{onContextMenu:t=>{((t,n,s,o)=>{t.preventDefault(),t.stopPropagation();const a=new y.ik;a.path=(0,r.IO)((0,c.vX)(),n),a.filename=n,a.x=t.clientX,a.y=t.clientY,a.type=s?l.Iw.folder:(0,y.uL)(n),a.size=o,a.useSelectedList=i.includes(e.index),C({show:!0,type:g.PromptEnum.FileMenu,overlay:!1,data:a})})(t,e.name,e.type===l.Iw.folder,e.origin_size)}},draggable_handle:async e=>{const l=(0,h.ib)(n,i).map(e=>(0,h.Ok)(e.name));await d.$M.post("cut",{files:l,to:`${(0,c.GG)("file",(0,c.vX)())}/${e}`});t([]),p({open:!1,handle:null}),b((0,c.vX)())},name:e.name,index:e.index,mtime:e.mtime,size:e.size,type:e.type,isLink:e.isLink,path:e.path,icon:e.icon,show_mtime:e.show_mtime,mount:e.mount,mount_driver:e.mount_driver,mount_color:e.mount_color,mount_readonly:e.mount_readonly,click:(n,s)=>{if($(n,async()=>{if(e.type===l.Iw.folder)F(s);else{if(await A({name:s,size:e.origin_size,opt_shell:!0,mtime:e.mtime,close:()=>G(null)})){if(e.type===l.Iw.url)return;G({name:s,mode:(0,h.Pc)(e.type)})}}}))return;if(null!==(0,r.kW)(i,n))t((0,r.P1)(i,n));else if("ctrl"===v)t([...i,n]);else if("shift"===v){const{max:e,min:l}=(0,r.a7)(i),s=[];if(n>=e)for(let i=e;i<=n;i++)s.push(i);else for(let e=l;e>=n;e--)s.push(e);t(s)}else t([n])},itemWidth:e.itemWidth})}var k=t(78247),v=(t(38240),t(64405)),j=t(88815);function A(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,m]=(0,s.fp)(o.AG.editorSetting),[f,p]=(0,s.fp)(o.AG.shellNowDir),[g,y]=(0,s.fp)(o.AG.sshInfo),[w,A]=(0,s.fp)(o.AG.nowFileList),[G,z]=(0,s.fp)(o.AG.enterKey),[b,F]=(0,s.fp)(o.AG.confirm),$=(0,a.Zp)(),{t:I}=(0,u.Bd)(),{clickDouble:C}=(0,h.xI)();return(0,_.jsx)(x,{draggable_handle:async n=>{const l=new v.x;Object.assign(l,g),l.target=(0,r.HS)(...f,n);const s=(0,h.ib)(w,i).map(e=>(0,r.HS)(...f,e.name));for(const e of s)if(l.source=e,!await d.Fg.post("move",l))return!1;t([]),F({open:!1,handle:null}),await e.fileHandler()},name:e.name,index:e.index,mtime:e.mtime,size:e.size,type:e.type,itemWidth:e.itemWidth,show_mtime:e.show_mtime,click:(n,s)=>{if(C(n,()=>{if(e.type===l.Iw.folder){const e=new v.x;return e.key=g.key,e.dir=`/${(0,c.GG)("remoteShell",(0,c.vX)())}${s}`,$((0,r.IO)((0,c.vX)(),s)),t([]),void A({files:[],folders:[]})}const i=async()=>{const i=new v.x;i.key=g.key,i.file=`/${(0,c.GG)("remoteShell",(0,c.vX)())}${s}`;const t=await d.Fg.post("get/file/text",i);let n;s.endsWith(l.Iw.workflow_act)?n="ace/mode/yaml":(s.endsWith(l.Iw.draw)||s.endsWith(l.Iw.excalidraw))&&(n="ace/mode/json"),m({model:n,open:!0,fileName:e.name,save:async e=>{i.context=e;0===(await d.Fg.post("update/file/text",i)).code&&k.xK.set_value_temp("")}}),k.xK.set_value_temp(t.data)};"number"==typeof e.origin_size&&e.origin_size>j.o5?F({open:!0,title:I("提示"),sub_title:"文件超过20MB了确定要打开吗?",handle:async()=>{F({open:!1,handle:null}),await i()}}):i()}))return;if(null!==(0,r.kW)(i,n))t((0,r.P1)(i,n));else if("ctrl"===G)t([...i,n]);else if("shift"===G){const{max:e,min:l}=(0,r.a7)(i),s=[];if(n>=e)for(let i=e;i<=n;i++)s.push(i);else for(let e=l;e>=n;e--)s.push(e);t(s)}else t([n])}})}function G(e){const[i,t]=(0,s.fp)(o.AG.selectedFileList),[n,a]=(0,s.fp)(o.AG.enterKey),{click_file:c}=(0,h.kZ)(),[m,f]=(0,s.fp)(o.AG.nowFileList),{t:p}=(0,u.Bd)(),[w,k]=(0,s.fp)(o.AG.showPrompt),v=((0,h.oT)(),(0,h.xp)()),{clickDouble:j}=(0,h.xI)();return(0,_.jsx)(x,{extraAttr:{onContextMenu:i=>{((i,t,n,s)=>{i.preventDefault(),i.stopPropagation();const o=new y.ik,a=e.item_list;for(const e of a)if(e.name===t){o.path=e.path;break}o.is_share=!0,o.filename=t,o.x=i.clientX,o.y=i.clientY,o.type=n?l.Iw.folder:(0,y.uL)(t),o.size=s,o.share_token=e.share.share_token,o.share_id=e.share.share_id,k({show:!0,type:g.PromptEnum.FileMenu,overlay:!1,data:o})})(i,e.name,e.type===l.Iw.folder,e.origin_size)}},name:e.name,index:e.index,mtime:e.mtime,size:e.size,type:e.type,itemWidth:e.itemWidth,show_mtime:e.show_mtime,click:(s,o)=>{if(j(s,()=>{e.type!==l.Iw.folder&&(v(o)||c({file_path:e.item_list[s].path,file_url:d.$M.getDownloadUrlV2(e.item_list[s].path,"share_download",{share_id:e.share.share_id,share_token:e.share.share_token}),name:o,size:e.origin_size,opt_shell:!0,mtime:e.mtime,not_type_tip:p("未知类型,请下载查看")}))}))return;if(null!==(0,r.kW)(i,s))t((0,r.P1)(i,s));else if("ctrl"===n)t([...i,s]);else if("shift"===n){const{max:e,min:n}=(0,r.a7)(i),l=[];if(s>=e)for(let i=e;i<=s;i++)l.push(i);else for(let e=n;e>=s;e--)l.push(e);t(l)}else t([s])}})}function z({handleContextMenu:e,file_list:i,clickBlank:t,share:l}){const[a,r]=(0,s.fp)(o.AG.user_base_info),d=(0,n.useRef)(null),{t:c}=(0,u.Bd)(),m=(0,h.OJ)(),{file_is_running:f}=(0,k.hg)();return(0,h.UK)(i,[],d),(0,_.jsx)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem"},className:`mosaic file-icons ${a?.user_data?.file_list_show_type??""}`,ref:d,children:(0,_.jsx)("div",{onClick:t,children:i.map((e,t)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(G,{share:l,item_list:i,icon:f(e.name)?"refresh":void 0,itemWidth:m,index:t+0,...e})},t+0))})})}function b({handleContextMenu:e,file_list:i,folder_list:t,clickBlank:l,fileHandler:a}){const[r,d]=(0,s.fp)(o.AG.user_base_info),c=(0,n.useRef)(null),{t:m}=(0,u.Bd)(),f=(0,h.OJ)(),{file_is_running:p}=(0,k.hg)(),[x,y]=(0,s.fp)(o.AG.fileShellShow),w=(0,n.useMemo)(()=>t?.length??0,[t]);return(0,h.ei)(c,g.PromptEnum.SshUpload),(0,h.UK)(i,t,c),(0,n.useEffect)(()=>()=>{x.show&&y({show:!1,path:""})},[]),(0,_.jsxs)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem"},className:`mosaic file-icons ${r?.user_data?.file_list_show_type??""}`,ref:c,children:[t&&t.length>0&&(0,_.jsx)("h2",{children:m("文件夹")}),t&&(0,_.jsx)("div",{onClick:l,children:t.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(A,{fileHandler:a,itemWidth:f,index:i,...e})},i))}),i&&i.length>0&&(0,_.jsx)("h2",{onClick:l,children:m("文件")}),i&&(0,_.jsx)("div",{onClick:l,children:i.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(A,{fileHandler:a,icon:p(e.name)?"refresh":void 0,itemWidth:f,index:i+w,...e})},i+w))})]})}function F({handleContextMenu:e,file_list:i,folder_list:t,clickBlank:l}){const[a,r]=(0,s.fp)(o.AG.user_base_info),d=(0,n.useRef)(null),{t:c}=(0,u.Bd)(),[m]=(0,s.fp)(o.AG.zoom_style_by_percent),f=(0,h.OJ)(),{file_is_running:p}=(0,k.hg)(),[x,y]=(0,s.fp)(o.AG.fileShellShow),v=(0,n.useMemo)(()=>t?.length??0,[t]),j=(0,h.pi)(m);return(0,h.ei)(d,g.PromptEnum.FilesUpload),(0,h.UK)(i,t,d),(0,n.useEffect)(()=>()=>{x.show&&y({show:!1,path:""})},[]),(0,_.jsxs)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem",fontSize:j.fontSize},className:`mosaic file-icons ${a?.user_data?.file_list_show_type??""}`,ref:d,children:[t&&t.length>0&&(0,_.jsx)("h2",{children:c("文件夹")}),t&&(0,_.jsx)("div",{onClick:l,children:t.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(w,{itemWidth:f,index:i,...e})},i))}),i&&i.length>0&&(0,_.jsx)("h2",{onClick:l,children:c("文件")}),i&&(0,_.jsx)("div",{onClick:l,children:i.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(w,{icon:p(e.name)?"refresh":void 0,itemWidth:f,index:i+v,...e})},i+v))})]})}function $({handleContextMenu:e,list:i,clickBlank:t}){const[l,a]=(0,s.fp)(o.AG.user_base_info),r=(0,n.useRef)(null),{t:d}=(0,u.Bd)(),[c]=(0,s.fp)(o.AG.zoom_style_by_percent),m=(0,h.OJ)(),{file_is_running:f}=(0,k.hg)(),[p,x]=(0,s.fp)(o.AG.fileShellShow),[y,v]=(0,s.fp)(o.AG.enterKey),[j,A]=(0,s.fp)(o.AG.selectedFileList),[G,z]=(0,s.fp)(o.AG.file_page),b=(0,h.pi)(c);return(0,h.UK)(i,[],r),(0,h.ei)(r,g.PromptEnum.FilesUpload),(0,h.SQ)(r,()=>{z(e=>e.page_num<0?e:{page_size:e.page_size,page_num:e.page_num+1})},()=>{}),(0,n.useEffect)(()=>()=>{p.show&&x({show:!1,path:""})},[]),(0,_.jsx)("div",{onContextMenu:e,id:"listing",style:{paddingBottom:"10rem",fontSize:b.fontSize},className:`mosaic file-icons ${l?.user_data?.file_list_show_type??""}`,ref:r,children:i&&(0,_.jsx)("div",{onClick:t,children:i.map((e,i)=>(0,_.jsx)(n.Fragment,{children:(0,_.jsx)(w,{icon:f(e.name)?"refresh":void 0,itemWidth:m,index:i,...e})},i))})})}},6960(e,i,t){t.d(i,{s:()=>o});var n=t(72635);const l=1440,s=525600;function o(e){e=e>1e12?e:1e3*e;const i=Date.now(),t=Math.abs(i-e)/6e4;return t<1?n.Ay.t("小于一分钟"):t<60?`${t.toFixed(0)} ${n.Ay.t("分钟前")}`:t<l?`${(t/60).toFixed(0)} ${n.Ay.t("小时前")}`:t<43200?`${(t/l).toFixed(0)} ${n.Ay.t("天前")}`:t<s?`${(t/43200).toFixed(0)} ${n.Ay.t("月前")}`:`${(t/s).toFixed(0)} ${n.Ay.t("年前")}`}}}]);