@fde-desktop/fde-core 0.4.13 → 0.4.20
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.
- package/dist/{AppEmptyState-Boej96TB.js → AppEmptyState-BVfKZU-h.js} +1 -1
- package/dist/AppEmptyState-Z8_Cviti.cjs +1 -0
- package/dist/AppIcon-Czrtau6A.cjs +1 -0
- package/dist/{AppIcon-mtEoyzOb.js → AppIcon-aFNw89J2.js} +1 -1
- package/dist/AppMenuBar-38QtFTPk.cjs +1 -0
- package/dist/AppTempMemory-DAC62jiS.cjs +1 -0
- package/dist/AppTempMemory-DgUW6GaF.js +23 -0
- package/dist/CalendarApp-BYTyu089.js +9 -0
- package/dist/CalendarApp-DPOK4mqg.cjs +1 -0
- package/dist/{ColorPicker-WCeD3Wjf.js → ColorPicker-B76rCS2H.js} +1 -1
- package/dist/ColorPicker-BZqsPh3X.cjs +1 -0
- package/dist/CreateItemApp-B0IHL16b.cjs +1 -0
- package/dist/CreateItemApp-UUP2HAu2.js +149 -0
- package/dist/DeviceInfoApp-BPQyeVSd.js +162 -0
- package/dist/DeviceInfoApp-D2mS2OT-.cjs +1 -0
- package/dist/DownloadProgress-CpJguS8g.cjs +1 -0
- package/dist/FilePickerApp-ClmPw6lk.cjs +1 -0
- package/dist/{FilePickerApp-ClHuhm6Z.js → FilePickerApp-D7fERKbp.js} +1 -1
- package/dist/FilesApp-DhJbO8wg.js +191 -0
- package/dist/FilesApp-LbwRRR1i.cjs +1 -0
- package/dist/IconColorPicker-7rWNAiNQ.cjs +1 -0
- package/dist/IconColorPicker-DUIXSb5E.js +58 -0
- package/dist/ImageViewerApp-9T-V8uP5.cjs +1 -0
- package/dist/ImageViewerApp-ihqIwJ-L.js +68 -0
- package/dist/ImageViewerMenuBar-DmvZoZ03.cjs +1 -0
- package/dist/{ImageViewerMenuBar-BIsUokxV.js → ImageViewerMenuBar-ZeIKHdA-.js} +18 -19
- package/dist/MenuEditApp-DRKfmSIZ.js +361 -0
- package/dist/MenuEditApp-U7EqB5Rl.cjs +1 -0
- package/dist/MenuEditMenuBar-BE_cXaoG.cjs +1 -0
- package/dist/MenuEditMenuBar-Df1je7F6.js +59 -0
- package/dist/NotesApp-DZfNQ8mN.cjs +1 -0
- package/dist/NotesApp-rwAeXyJy.js +344 -0
- package/dist/{NotesMenuBar-DILZTjnT.js → NotesMenuBar-C503t5pu.js} +12 -13
- package/dist/NotesMenuBar-CwgZ9dHy.cjs +1 -0
- package/dist/PdfApp-DNZaSXbF.cjs +1 -0
- package/dist/PdfApp-K1Z612o3.js +38 -0
- package/dist/PdfMenuBar-BPzP_JUO.cjs +1 -0
- package/dist/PdfMenuBar-DEUKgKTE.js +38 -0
- package/dist/SettingsApp-DdWqiYFE.cjs +1 -0
- package/dist/SettingsApp-ghc3RaMv.js +875 -0
- package/dist/SettingsMenuBar-C4KAPoBs.js +41 -0
- package/dist/SettingsMenuBar-CgmaF9_B.cjs +1 -0
- package/dist/{UploaderApp-Bboc4KZ1.js → UploaderApp-D9vfOR0S.js} +28 -40
- package/dist/UploaderApp-omSY-NSn.cjs +1 -0
- package/dist/VscIcon-CeELixwP.cjs +1 -0
- package/dist/buildBreadcrumbs-C2c2a4R3.cjs +1 -0
- package/dist/desktopStore-LSQweOqZ.cjs +1 -0
- package/dist/{desktopStore-8cSZlj7s.js → desktopStore-xnNbYaYm.js} +263 -263
- package/dist/formatBytes-Bv1bQPKQ.cjs +1 -0
- package/dist/formatBytes-CaP80WnM.js +14 -0
- package/dist/i18nConstants-DgbKSBIK.cjs +1 -0
- package/dist/i18nConstants-Nzpf2IFp.js +611 -0
- package/dist/imageViewerStore-CYt4R4e4.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +50 -29
- package/dist/index.js +698 -650
- package/dist/menuEditStore-sU6qaF2j.cjs +1 -0
- package/dist/notesStore-BnMXBRaV.cjs +1 -0
- package/dist/settingsAppStore-CQ4JHd7Q.cjs +1 -0
- package/dist/useAdaptiveDimensions-BDZxP4E3.cjs +1 -0
- package/dist/{useAdaptiveDimensions-DxNLJ7R5.js → useAdaptiveDimensions-sv9lwqF_.js} +1 -1
- package/dist/useCloseInterceptor-AzfjUZgz.cjs +1 -0
- package/dist/{useCloseInterceptor-CIxhOZx1.js → useCloseInterceptor-Bwm4I0O8.js} +1 -1
- package/dist/useDeviceDetection-B9jjlate.js +37 -0
- package/dist/useDeviceDetection-CnxnQWIq.cjs +1 -0
- package/dist/useDragDrop-Bdwzk6VO.cjs +1 -0
- package/dist/useDragDrop-D2LtOEYC.js +139 -0
- package/dist/useDynamicIcon-Cg3B_Aeq.cjs +1 -0
- package/dist/useNotifications-CR9JLjtC.js +26 -0
- package/dist/useNotifications-rwLmJ7fI.cjs +1 -0
- package/dist/useOpenApp-BBZ_B7Pr.cjs +1 -0
- package/dist/{useOpenApp-uguTLkyl.js → useOpenApp-DdEbOVby.js} +3 -3
- package/dist/useResolvedUrl-CgqjNxzw.js +389 -0
- package/dist/useResolvedUrl-Dz2AhrDV.cjs +1 -0
- package/package.json +1 -1
- package/dist/AppEmptyState-CLc00OOG.cjs +0 -1
- package/dist/AppIcon-C8vHUVcb.cjs +0 -1
- package/dist/AppMenuBar-CAlkNHjj.cjs +0 -1
- package/dist/CalendarApp-DOmjWbpl.js +0 -10
- package/dist/CalendarApp-Z0bCCYsK.cjs +0 -1
- package/dist/ColorPicker-CQRRwY-y.cjs +0 -1
- package/dist/CreateItemApp-BkFFFdX1.cjs +0 -1
- package/dist/CreateItemApp-DR8Y4bwo.js +0 -202
- package/dist/DeviceInfoApp-BXQ9uOwF.cjs +0 -1
- package/dist/DeviceInfoApp-I63mJRWy.js +0 -195
- package/dist/DownloadProgress-CkTGTf0z.cjs +0 -1
- package/dist/FilePickerApp-By6-vbag.cjs +0 -1
- package/dist/FilesApp-BRK2OqkQ.cjs +0 -1
- package/dist/FilesApp-BuoFP_KA.js +0 -212
- package/dist/ImageViewerApp-B1niWF75.cjs +0 -1
- package/dist/ImageViewerApp-iojtyFEf.js +0 -69
- package/dist/ImageViewerMenuBar-BgzgSF3v.cjs +0 -1
- package/dist/MenuEditApp-BHptoJbz.cjs +0 -1
- package/dist/MenuEditApp-CJUbJaqh.js +0 -492
- package/dist/MenuEditMenuBar-CCOSPAUe.cjs +0 -1
- package/dist/MenuEditMenuBar-DnCL-kaZ.js +0 -60
- package/dist/NotesApp-BmQIBtJ2.cjs +0 -1
- package/dist/NotesApp-DJ2dGt4-.js +0 -364
- package/dist/NotesMenuBar-BzojwMtH.cjs +0 -1
- package/dist/PdfApp-IjY_GtnW.js +0 -39
- package/dist/PdfApp-krW8UI97.cjs +0 -1
- package/dist/PdfMenuBar-Bd5MTZcZ.js +0 -39
- package/dist/PdfMenuBar-DWD0Qa3F.cjs +0 -1
- package/dist/SettingsApp-BE22l5UP.cjs +0 -1
- package/dist/SettingsApp-BTFtTFY_.js +0 -1228
- package/dist/SettingsMenuBar-CZE2evG2.cjs +0 -1
- package/dist/SettingsMenuBar-ktC0viTd.js +0 -42
- package/dist/UploaderApp-Dr1mF7oj.cjs +0 -1
- package/dist/VscIcon-BYb_Soyy.cjs +0 -1
- package/dist/buildBreadcrumbs-Ccd8i11b.cjs +0 -1
- package/dist/desktopStore-C1jR6Fdb.cjs +0 -1
- package/dist/imageViewerStore-Dfylg59V.cjs +0 -1
- package/dist/menuEditStore-CYwtfD6H.cjs +0 -1
- package/dist/notesStore-CrWTO6oB.cjs +0 -1
- package/dist/rolldown-runtime-CAFD8bLK.js +0 -11
- package/dist/settingsAppStore-DuYZNeFf.cjs +0 -1
- package/dist/useAdaptiveDimensions-3Lz4X0Tc.cjs +0 -1
- package/dist/useCloseInterceptor-CdX-09Ib.cjs +0 -1
- package/dist/useDynamicIcon-CK6SjEv5.cjs +0 -1
- package/dist/useOpenApp-ChDhsL9h.cjs +0 -1
- package/dist/useResolvedUrl-B6x4xy0x.js +0 -29
- package/dist/useResolvedUrl-Bb39DpVy.cjs +0 -1
- /package/dist/{Colors-CuABn2W4.js → Colors-BIj4g0eH.js} +0 -0
- /package/dist/{Colors-CNJbU7oq.cjs → Colors-PNt4eyR6.cjs} +0 -0
- /package/dist/{DownloadProgress-DnVASsv5.js → DownloadProgress-DBFA58C5.js} +0 -0
- /package/dist/{imageViewerStore-COrD02Zu.js → imageViewerStore-C6UgceP-.js} +0 -0
- /package/dist/{menuEditStore-CxsgLiQu.js → menuEditStore-DPqViGva.js} +0 -0
- /package/dist/{notesStore-Dgah46U5.js → notesStore-KZDXN6zx.js} +0 -0
- /package/dist/{settingsAppStore-DHZhi6Rl.js → settingsAppStore-Y7x3r6pV.js} +0 -0
- /package/dist/{useMenuBarUtils-DAap0ukp.cjs → useMenuBarUtils-BOnQYtKU.cjs} +0 -0
- /package/dist/{useMenuBarUtils-ChAfI7OA.js → useMenuBarUtils-DTPFK0IN.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,54 +1,46 @@
|
|
|
1
|
-
import { _ as e, a as t,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { _ as e, a as t, d as n, f as r, i, l as a, m as o, n as s, o as c, p as l, r as u, s as d, t as f, u as p, v as m } from "./i18nConstants-Nzpf2IFp.js";
|
|
2
|
+
import { a as h, c as g, d as _, f as v, i as y, l as b, n as x, p as S, r as C, s as w, t as T, u as E } from "./useResolvedUrl-CgqjNxzw.js";
|
|
3
|
+
import { A as D, B as ee, C as O, D as k, E as te, F as A, H as j, I as ne, L as re, M as ie, N as M, O as ae, P as oe, R as se, S as ce, T as le, U as ue, V as de, _ as fe, a as pe, b as me, c as he, d as ge, f as _e, g as ve, h as ye, i as be, j as xe, k as Se, l as Ce, m as we, n as Te, o as Ee, p as De, r as Oe, s as ke, t as Ae, u as je, v as Me, w as Ne, x as Pe, y as Fe, z as Ie } from "./useOpenApp-DdEbOVby.js";
|
|
4
|
+
import { $ as Le, A as Re, B as ze, C as Be, D as Ve, E as He, F as Ue, G as We, H as Ge, I as Ke, J as qe, K as Je, L as Ye, M as Xe, N as Ze, O as Qe, P as $e, Q as et, R as tt, S as nt, T as rt, U as it, V as at, W as ot, X as st, Y as ct, Z as lt, _ as ut, a as dt, at as ft, b as pt, c as mt, ct as ht, d as gt, dt as _t, et as vt, f as yt, ft as bt, g as xt, h as St, ht as Ct, i as wt, it as Tt, j as Et, k as Dt, l as Ot, lt as kt, m as At, mt as jt, n as N, nt as Mt, o as P, ot as Nt, p as Pt, pt as Ft, q as It, r as Lt, rt as Rt, s as zt, st as Bt, t as Vt, tt as Ht, u as Ut, ut as Wt, v as F, w as Gt, x as Kt, y as qt, z as Jt } from "./desktopStore-xnNbYaYm.js";
|
|
5
|
+
import { a as Yt, c as Xt, i as I, n as Zt, o as Qt, r as $t, s as en, t as tn } from "./useDynamicIcon-_wGeWu-b.js";
|
|
6
|
+
import { t as nn } from "./useAdaptiveDimensions-sv9lwqF_.js";
|
|
7
|
+
import { a as rn, i as an, o as on, r as sn, s as cn } from "./useDragDrop-D2LtOEYC.js";
|
|
8
|
+
import { t as L } from "./AppIcon-aFNw89J2.js";
|
|
9
|
+
import { a as ln, i as un, n as dn, r as fn, t as pn } from "./useCloseInterceptor-Bwm4I0O8.js";
|
|
9
10
|
import { t as R } from "./VscIcon-AEENjKOE.js";
|
|
10
|
-
import { n as
|
|
11
|
-
import {
|
|
12
|
-
import { n as
|
|
13
|
-
import {
|
|
14
|
-
import { t as
|
|
15
|
-
import { t as
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { n as
|
|
19
|
-
import { t as
|
|
20
|
-
import { t as
|
|
21
|
-
import { t as
|
|
22
|
-
import { t as
|
|
23
|
-
import { r as Tn, t as En } from "./UploaderApp-Bboc4KZ1.js";
|
|
24
|
-
import { t as Dn } from "./ColorPicker-WCeD3Wjf.js";
|
|
25
|
-
import { t as On } from "./useMenuBarUtils-ChAfI7OA.js";
|
|
26
|
-
import { t as kn } from "./NotesMenuBar-DILZTjnT.js";
|
|
27
|
-
import { t as An } from "./MenuEditMenuBar-DnCL-kaZ.js";
|
|
28
|
-
import { t as jn } from "./SettingsMenuBar-ktC0viTd.js";
|
|
29
|
-
import { t as Mn } from "./PdfMenuBar-Bd5MTZcZ.js";
|
|
30
|
-
import { t as Nn } from "./ImageViewerMenuBar-BIsUokxV.js";
|
|
31
|
-
import { i as Pn, r as Fn, t as In } from "./CreateItemApp-DR8Y4bwo.js";
|
|
11
|
+
import { n as mn, t as hn } from "./AppMenuBar-DmSfQRXU.js";
|
|
12
|
+
import { t as gn } from "./useNotifications-CR9JLjtC.js";
|
|
13
|
+
import { n as _n, r as vn, t as yn } from "./buildBreadcrumbs-noWhu8os.js";
|
|
14
|
+
import { t as bn } from "./useDeviceDetection-B9jjlate.js";
|
|
15
|
+
import { n as xn, t as Sn } from "./AppEmptyState-BVfKZU-h.js";
|
|
16
|
+
import { t as Cn } from "./Colors-BIj4g0eH.js";
|
|
17
|
+
import { t as wn } from "./ColorPicker-B76rCS2H.js";
|
|
18
|
+
import { t as Tn } from "./DownloadProgress-DBFA58C5.js";
|
|
19
|
+
import { a as En, n as Dn, t as On } from "./FilePickerApp-D7fERKbp.js";
|
|
20
|
+
import { n as kn, t as An } from "./IconColorPicker-DUIXSb5E.js";
|
|
21
|
+
import { t as jn } from "./AppTempMemory-DgUW6GaF.js";
|
|
22
|
+
import { t as Mn } from "./useMenuBarUtils-DTPFK0IN.js";
|
|
23
|
+
import { t as Nn } from "./formatBytes-CaP80WnM.js";
|
|
32
24
|
import "@mantine/core/styles.css";
|
|
33
25
|
import "@mantine/dates/styles.css";
|
|
34
|
-
import { Suspense as
|
|
26
|
+
import { Suspense as Pn, createContext as Fn, createElement as In, memo as Ln, useCallback as z, useContext as Rn, useEffect as B, useLayoutEffect as zn, useMemo as V, useRef as H, useState as U } from "react";
|
|
35
27
|
import { Fragment as W, jsx as G, jsxs as K } from "react/jsx-runtime";
|
|
36
|
-
import { ActionIcon as
|
|
37
|
-
import { QueryClient as
|
|
38
|
-
import { create as
|
|
39
|
-
import { AnimatePresence as
|
|
40
|
-
import { initReactI18next as
|
|
41
|
-
import
|
|
42
|
-
import
|
|
43
|
-
import { Rnd as
|
|
44
|
-
import { useShallow as
|
|
45
|
-
import { FcDoNotInsert as
|
|
46
|
-
import { Terminal as
|
|
47
|
-
import { FitAddon as
|
|
48
|
-
import { ClipboardAddon as
|
|
28
|
+
import { ActionIcon as Bn, Anchor as Vn, Button as q, Center as Hn, Group as Un, Loader as Wn, MantineProvider as Gn, Menu as J, Modal as Kn, Notification as qn, Popover as Y, Progress as Jn, Stack as Yn, Text as X, TextInput as Xn, UnstyledButton as Zn, createTheme as Qn, useMantineTheme as $n } from "@mantine/core";
|
|
29
|
+
import { QueryClient as er, QueryClient as tr, QueryClientProvider as nr } from "@tanstack/react-query";
|
|
30
|
+
import { create as rr } from "zustand";
|
|
31
|
+
import { AnimatePresence as ir, motion as ar, useAnimationControls as or } from "framer-motion";
|
|
32
|
+
import { initReactI18next as sr, useTranslation as Z } from "react-i18next";
|
|
33
|
+
import cr from "i18next";
|
|
34
|
+
import lr from "i18next-browser-languagedetector";
|
|
35
|
+
import { Rnd as ur } from "react-rnd";
|
|
36
|
+
import { useShallow as dr } from "zustand/react/shallow";
|
|
37
|
+
import { FcDoNotInsert as fr, FcInfo as pr } from "react-icons/fc";
|
|
38
|
+
import { Terminal as mr } from "@xterm/xterm";
|
|
39
|
+
import { FitAddon as hr } from "@xterm/addon-fit";
|
|
40
|
+
import { ClipboardAddon as gr } from "@xterm/addon-clipboard";
|
|
49
41
|
import "@xterm/xterm/css/xterm.css";
|
|
50
42
|
//#region src/components/Theme/ThemeContext.ts
|
|
51
|
-
var
|
|
43
|
+
var _r = Fn(void 0), vr = {
|
|
52
44
|
borderRadius: "8px",
|
|
53
45
|
headerHeight: 40,
|
|
54
46
|
minWidth: 400,
|
|
@@ -56,12 +48,12 @@ var br = Rn(void 0), xr = {
|
|
|
56
48
|
defaultWidth: 800,
|
|
57
49
|
defaultHeight: 600,
|
|
58
50
|
shadow: "0 8px 32px rgba(0, 0, 0, 0.2)"
|
|
59
|
-
},
|
|
51
|
+
}, yr = {
|
|
60
52
|
height: 48,
|
|
61
53
|
position: "bottom",
|
|
62
54
|
background: "rgba(0, 0, 0, 0.8)",
|
|
63
55
|
blur: !0
|
|
64
|
-
},
|
|
56
|
+
}, br = {
|
|
65
57
|
light: {
|
|
66
58
|
mode: "light",
|
|
67
59
|
colors: {
|
|
@@ -70,8 +62,8 @@ var br = Rn(void 0), xr = {
|
|
|
70
62
|
window: "#ffffff",
|
|
71
63
|
accent: "#339af0"
|
|
72
64
|
},
|
|
73
|
-
window:
|
|
74
|
-
taskbar:
|
|
65
|
+
window: vr,
|
|
66
|
+
taskbar: yr,
|
|
75
67
|
desktop: {
|
|
76
68
|
background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
|
|
77
69
|
iconSize: 64,
|
|
@@ -86,8 +78,8 @@ var br = Rn(void 0), xr = {
|
|
|
86
78
|
window: "#25262b",
|
|
87
79
|
accent: "#4dabf7"
|
|
88
80
|
},
|
|
89
|
-
window:
|
|
90
|
-
taskbar:
|
|
81
|
+
window: vr,
|
|
82
|
+
taskbar: yr,
|
|
91
83
|
desktop: {
|
|
92
84
|
background: "linear-gradient(135deg, #1a1b1e 0%, #2d1f3d 100%)",
|
|
93
85
|
iconSize: 64,
|
|
@@ -97,17 +89,15 @@ var br = Rn(void 0), xr = {
|
|
|
97
89
|
};
|
|
98
90
|
//#endregion
|
|
99
91
|
//#region src/components/Theme/ThemeProvider.tsx
|
|
100
|
-
function
|
|
101
|
-
let [i, a] = U(
|
|
102
|
-
B(() => {
|
|
103
|
-
n !== void 0 && n !== i && a(n);
|
|
104
|
-
}, [n, i]);
|
|
105
|
-
let s = z(() => {
|
|
92
|
+
function xr({ children: e, initialMode: t = "light", mode: n, theme: r }) {
|
|
93
|
+
let [i, a] = U(t), o = H(null), s = n ?? i, c = z(() => {
|
|
106
94
|
a((e) => e === "light" ? "dark" : "light");
|
|
107
|
-
}, []),
|
|
95
|
+
}, []), l = z((e) => {
|
|
96
|
+
a(e);
|
|
97
|
+
}, []), u = z((e) => {
|
|
108
98
|
o.current = e;
|
|
109
|
-
}, []),
|
|
110
|
-
let e =
|
|
99
|
+
}, []), d = z(() => {
|
|
100
|
+
let e = br[s], t = o.current;
|
|
111
101
|
return t ? {
|
|
112
102
|
...e,
|
|
113
103
|
colors: {
|
|
@@ -149,41 +139,41 @@ function wr({ children: e, initialMode: t = "light", mode: n, theme: r }) {
|
|
|
149
139
|
...r.desktop
|
|
150
140
|
}
|
|
151
141
|
} : e;
|
|
152
|
-
}, [
|
|
142
|
+
}, [s, r]);
|
|
153
143
|
B(() => {
|
|
154
|
-
document.documentElement.style.setProperty("color-scheme",
|
|
155
|
-
}, [
|
|
156
|
-
let
|
|
157
|
-
getTheme:
|
|
158
|
-
setMode:
|
|
159
|
-
toggle:
|
|
160
|
-
setCustomColors:
|
|
144
|
+
document.documentElement.style.setProperty("color-scheme", s), document.documentElement.setAttribute("data-mantine-color-scheme", s);
|
|
145
|
+
}, [s]);
|
|
146
|
+
let f = V(() => ({
|
|
147
|
+
getTheme: d,
|
|
148
|
+
setMode: l,
|
|
149
|
+
toggle: c,
|
|
150
|
+
setCustomColors: u
|
|
161
151
|
}), [
|
|
152
|
+
d,
|
|
162
153
|
l,
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
c
|
|
154
|
+
c,
|
|
155
|
+
u
|
|
166
156
|
]);
|
|
167
|
-
return /* @__PURE__ */ G(
|
|
168
|
-
value:
|
|
157
|
+
return /* @__PURE__ */ G(_r.Provider, {
|
|
158
|
+
value: f,
|
|
169
159
|
children: e
|
|
170
160
|
});
|
|
171
161
|
}
|
|
172
162
|
//#endregion
|
|
173
163
|
//#region src/components/Theme/useTheme.ts
|
|
174
|
-
function
|
|
175
|
-
let e =
|
|
164
|
+
function Sr() {
|
|
165
|
+
let e = Rn(_r);
|
|
176
166
|
if (!e) throw Error("useTheme must be used within a ThemeProvider");
|
|
177
167
|
return e.getTheme();
|
|
178
168
|
}
|
|
179
|
-
function
|
|
180
|
-
let e =
|
|
169
|
+
function Cr() {
|
|
170
|
+
let e = Rn(_r);
|
|
181
171
|
if (!e) throw Error("useThemeContext must be used within a ThemeProvider");
|
|
182
172
|
return e;
|
|
183
173
|
}
|
|
184
174
|
//#endregion
|
|
185
175
|
//#region src/components/Theme/defaultMantineTheme.ts
|
|
186
|
-
var
|
|
176
|
+
var wr = {
|
|
187
177
|
primaryColor: "blue",
|
|
188
178
|
other: {
|
|
189
179
|
desktop: { backgroundColor: "#1a1a2e" },
|
|
@@ -198,40 +188,40 @@ var Dr = {
|
|
|
198
188
|
},
|
|
199
189
|
accent: "#339af0"
|
|
200
190
|
}
|
|
201
|
-
},
|
|
191
|
+
}, Tr = Fn(void 0), Er = new tr({ defaultOptions: { queries: {
|
|
202
192
|
staleTime: Infinity,
|
|
203
193
|
gcTime: Infinity
|
|
204
194
|
} } });
|
|
205
|
-
function
|
|
206
|
-
let
|
|
207
|
-
fs:
|
|
208
|
-
isReady:
|
|
209
|
-
error:
|
|
210
|
-
theme:
|
|
195
|
+
function Dr({ children: t, fileSystem: n, isReady: r, error: i }) {
|
|
196
|
+
let a = Sr(), o = e((e) => e.setThemeMode), s = e((e) => e.toggleTheme), c = V(() => ({
|
|
197
|
+
fs: r ? n : null,
|
|
198
|
+
isReady: r,
|
|
199
|
+
error: i,
|
|
200
|
+
theme: a,
|
|
211
201
|
setThemeMode: o,
|
|
212
202
|
toggleTheme: s
|
|
213
203
|
}), [
|
|
214
|
-
t,
|
|
215
204
|
n,
|
|
216
205
|
r,
|
|
217
206
|
i,
|
|
207
|
+
a,
|
|
218
208
|
o,
|
|
219
209
|
s
|
|
220
210
|
]);
|
|
221
|
-
return /* @__PURE__ */ G(
|
|
211
|
+
return /* @__PURE__ */ G(Tr.Provider, {
|
|
222
212
|
value: c,
|
|
223
|
-
children:
|
|
213
|
+
children: t
|
|
224
214
|
});
|
|
225
215
|
}
|
|
226
|
-
function
|
|
227
|
-
let [l, u] = U(!1), [d, f] = U(null), p =
|
|
216
|
+
function Or({ children: t, fileSystem: n, initialMode: r, theme: i, mantineTheme: a, fallback: o = null, onError: s, queryClient: c = Er }) {
|
|
217
|
+
let [l, u] = U(!1), [d, f] = U(null), p = e((e) => e.theme.mode), m = e((e) => e.setThemeMode);
|
|
228
218
|
B(() => {
|
|
229
|
-
|
|
219
|
+
r && m(r);
|
|
230
220
|
}, []), B(() => {
|
|
231
221
|
let e = !0;
|
|
232
222
|
return (async () => {
|
|
233
223
|
try {
|
|
234
|
-
await
|
|
224
|
+
await n.initialize(), e && u(!0);
|
|
235
225
|
} catch (t) {
|
|
236
226
|
let n = t instanceof Error ? t : Error(String(t));
|
|
237
227
|
e && (f(n), s?.(n));
|
|
@@ -239,24 +229,24 @@ function jr({ children: e, fileSystem: t, initialMode: n, theme: r, mantineTheme
|
|
|
239
229
|
})(), () => {
|
|
240
230
|
e = !1;
|
|
241
231
|
};
|
|
242
|
-
}, [
|
|
243
|
-
let h = V(() =>
|
|
244
|
-
...
|
|
245
|
-
...
|
|
246
|
-
}), [
|
|
247
|
-
return d || !l ? /* @__PURE__ */ G(W, { children: o }) : /* @__PURE__ */ G(
|
|
232
|
+
}, [n, s]);
|
|
233
|
+
let h = V(() => Qn({
|
|
234
|
+
...wr,
|
|
235
|
+
...a
|
|
236
|
+
}), [a]);
|
|
237
|
+
return d || !l ? /* @__PURE__ */ G(W, { children: o }) : /* @__PURE__ */ G(nr, {
|
|
248
238
|
client: c,
|
|
249
|
-
children: /* @__PURE__ */ G(
|
|
239
|
+
children: /* @__PURE__ */ G(Gn, {
|
|
250
240
|
theme: h,
|
|
251
241
|
forceColorScheme: p,
|
|
252
|
-
children: /* @__PURE__ */ G(
|
|
242
|
+
children: /* @__PURE__ */ G(xr, {
|
|
253
243
|
mode: p,
|
|
254
|
-
theme:
|
|
255
|
-
children: /* @__PURE__ */ G(
|
|
256
|
-
fileSystem:
|
|
244
|
+
theme: i,
|
|
245
|
+
children: /* @__PURE__ */ G(Dr, {
|
|
246
|
+
fileSystem: n,
|
|
257
247
|
isReady: l,
|
|
258
248
|
error: d,
|
|
259
|
-
children:
|
|
249
|
+
children: t
|
|
260
250
|
})
|
|
261
251
|
})
|
|
262
252
|
})
|
|
@@ -264,16 +254,16 @@ function jr({ children: e, fileSystem: t, initialMode: n, theme: r, mantineTheme
|
|
|
264
254
|
}
|
|
265
255
|
//#endregion
|
|
266
256
|
//#region src/components/FdeProvider/useFdeContext.ts
|
|
267
|
-
function
|
|
268
|
-
let e =
|
|
257
|
+
function kr() {
|
|
258
|
+
let e = Rn(Tr);
|
|
269
259
|
if (!e) throw Error("useFdeContext must be used within an FdeProvider");
|
|
270
260
|
return e;
|
|
271
261
|
}
|
|
272
262
|
//#endregion
|
|
273
263
|
//#region src/hooks/useWindowButtonRegistry.tsx
|
|
274
|
-
var
|
|
264
|
+
var Ar = Fn(null), jr = ({ children: e }) => {
|
|
275
265
|
let t = H(/* @__PURE__ */ new Map());
|
|
276
|
-
return /* @__PURE__ */ G(
|
|
266
|
+
return /* @__PURE__ */ G(Ar.Provider, {
|
|
277
267
|
value: {
|
|
278
268
|
register: (e, n) => {
|
|
279
269
|
t.current.set(e, n);
|
|
@@ -285,46 +275,77 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
285
275
|
},
|
|
286
276
|
children: e
|
|
287
277
|
});
|
|
288
|
-
},
|
|
289
|
-
let e =
|
|
278
|
+
}, Mr = () => {
|
|
279
|
+
let e = Rn(Ar);
|
|
290
280
|
if (!e) throw Error("useWindowButtonRegistry must be used within WindowButtonRegistryProvider");
|
|
291
281
|
return e;
|
|
292
|
-
},
|
|
293
|
-
|
|
282
|
+
}, Nr = {
|
|
283
|
+
root: "_root_hze7e_1",
|
|
284
|
+
background: "_background_hze7e_10",
|
|
285
|
+
noiseOverlay: "_noiseOverlay_hze7e_19"
|
|
286
|
+
}, Pr = ({ children: t, onContextMenu: n, wallpaper: r, wallpaperModule: i, backgroundColor: a }) => {
|
|
287
|
+
let o = P((e) => e.setViewportSize), s = H(null), c = e((e) => e.wallpaperHasNoise), l = e((e) => e.wallpaperNoiseOpacity), { backgroundImage: u, noiseImageUrl: d } = V(() => {
|
|
288
|
+
if (i === "gradient") {
|
|
289
|
+
let e = r ?? "", t = e.match(/url\(data:image\/png;base64,[^)]+\)/);
|
|
290
|
+
return {
|
|
291
|
+
backgroundImage: e,
|
|
292
|
+
noiseImageUrl: t ? t[0].replace(/url\((.*)\)/, "$1") : ""
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
return {
|
|
296
|
+
backgroundImage: r ? `url(${r})` : "",
|
|
297
|
+
noiseImageUrl: ""
|
|
298
|
+
};
|
|
299
|
+
}, [r, i]), f = l / 100;
|
|
294
300
|
B(() => {
|
|
295
|
-
let e =
|
|
301
|
+
let e = s.current;
|
|
296
302
|
if (!e) return;
|
|
297
303
|
let t = new ResizeObserver((e) => {
|
|
298
304
|
let { width: t, height: n } = e[0]?.contentRect ?? {};
|
|
299
|
-
t && t > 0 && n && n > 0 &&
|
|
305
|
+
t && t > 0 && n && n > 0 && o(t, n);
|
|
300
306
|
});
|
|
301
307
|
return t.observe(e), () => t.disconnect();
|
|
302
|
-
}, [
|
|
303
|
-
let
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
308
|
+
}, [o]);
|
|
309
|
+
let p = {
|
|
310
|
+
"--taskbar-height": "48px",
|
|
311
|
+
"--noise-tile-size": "128px"
|
|
312
|
+
};
|
|
313
|
+
return /* @__PURE__ */ K("div", {
|
|
314
|
+
ref: s,
|
|
315
|
+
className: Nr.root,
|
|
307
316
|
"data-testid": "desktop-area",
|
|
308
|
-
style:
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
+
style: p,
|
|
318
|
+
onContextMenu: n,
|
|
319
|
+
children: [
|
|
320
|
+
/* @__PURE__ */ G("div", {
|
|
321
|
+
className: Nr.background,
|
|
322
|
+
style: {
|
|
323
|
+
backgroundImage: u,
|
|
324
|
+
backgroundSize: "cover",
|
|
325
|
+
backgroundPosition: "center",
|
|
326
|
+
backgroundColor: a ?? "transparent"
|
|
327
|
+
}
|
|
328
|
+
}),
|
|
329
|
+
c && d && /* @__PURE__ */ G("div", {
|
|
330
|
+
className: Nr.noiseOverlay,
|
|
331
|
+
style: {
|
|
332
|
+
backgroundImage: `url(${d})`,
|
|
333
|
+
opacity: f
|
|
334
|
+
}
|
|
335
|
+
}),
|
|
336
|
+
t
|
|
337
|
+
]
|
|
317
338
|
});
|
|
318
|
-
},
|
|
339
|
+
}, Fr = (e) => e.toLocaleTimeString([], {
|
|
319
340
|
hour: "2-digit",
|
|
320
341
|
minute: "2-digit"
|
|
321
|
-
}),
|
|
322
|
-
let [e, t] = U(() =>
|
|
342
|
+
}), Ir = () => {
|
|
343
|
+
let [e, t] = U(() => Fr(/* @__PURE__ */ new Date()));
|
|
323
344
|
return B(() => {
|
|
324
|
-
let e = setInterval(() => t(
|
|
345
|
+
let e = setInterval(() => t(Fr(/* @__PURE__ */ new Date())), 1e3);
|
|
325
346
|
return () => clearInterval(e);
|
|
326
347
|
}, []), e;
|
|
327
|
-
},
|
|
348
|
+
}, Lr = -8, Rr = 0, zr = () => {
|
|
328
349
|
let [e, t] = U({
|
|
329
350
|
activeMenu: null,
|
|
330
351
|
position: {
|
|
@@ -337,7 +358,7 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
337
358
|
activeMenu: "window",
|
|
338
359
|
position: {
|
|
339
360
|
x: e.clientX,
|
|
340
|
-
y: e.clientY +
|
|
361
|
+
y: e.clientY + Lr
|
|
341
362
|
},
|
|
342
363
|
targetWindowId: n
|
|
343
364
|
});
|
|
@@ -346,7 +367,7 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
346
367
|
activeMenu: "panel",
|
|
347
368
|
position: {
|
|
348
369
|
x: e.clientX,
|
|
349
|
-
y: e.clientY +
|
|
370
|
+
y: e.clientY + Lr
|
|
350
371
|
},
|
|
351
372
|
targetWindowId: null
|
|
352
373
|
});
|
|
@@ -355,7 +376,7 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
355
376
|
activeMenu: "launcher",
|
|
356
377
|
position: {
|
|
357
378
|
x: e.clientX,
|
|
358
|
-
y: e.clientY +
|
|
379
|
+
y: e.clientY + Rr
|
|
359
380
|
},
|
|
360
381
|
targetWindowId: null
|
|
361
382
|
});
|
|
@@ -377,17 +398,17 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
377
398
|
openLauncherMenu: i,
|
|
378
399
|
closeMenu: a
|
|
379
400
|
};
|
|
380
|
-
},
|
|
381
|
-
let
|
|
401
|
+
}, Br = () => {
|
|
402
|
+
let t = e((e) => e.animationDuration);
|
|
382
403
|
return {
|
|
383
|
-
duration:
|
|
384
|
-
windowVariants:
|
|
385
|
-
panelVariants:
|
|
386
|
-
minimizeVariant:
|
|
387
|
-
restoreVariant:
|
|
388
|
-
maximizeTransition:
|
|
389
|
-
easeIn:
|
|
390
|
-
easeOut:
|
|
404
|
+
duration: t,
|
|
405
|
+
windowVariants: _e(t),
|
|
406
|
+
panelVariants: je(t),
|
|
407
|
+
minimizeVariant: Ce(.3),
|
|
408
|
+
restoreVariant: ge(.3),
|
|
409
|
+
maximizeTransition: he(.25),
|
|
410
|
+
easeIn: Ee(t),
|
|
411
|
+
easeOut: ke(t)
|
|
391
412
|
};
|
|
392
413
|
}, Q = {
|
|
393
414
|
WELCOME: "welcome",
|
|
@@ -407,14 +428,14 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
407
428
|
CODE_SERVER: "code-server",
|
|
408
429
|
DEVICE_INFO: "device-info",
|
|
409
430
|
MENUEDIT: "menuedit"
|
|
410
|
-
},
|
|
431
|
+
}, Vr = {
|
|
411
432
|
[Q.FILES]: "filesApp",
|
|
412
433
|
[Q.PDF]: "pdfViewer",
|
|
413
434
|
[Q.IMAGE_VIEWER]: "imageViewer",
|
|
414
435
|
[Q.DOS_EMULATOR]: "dosEmulator",
|
|
415
436
|
[Q.CODE_SERVER]: "codeServer",
|
|
416
437
|
[Q.DEVICE_INFO]: "deviceInfo"
|
|
417
|
-
},
|
|
438
|
+
}, Hr = [
|
|
418
439
|
Q.WELCOME,
|
|
419
440
|
Q.UPLOADER,
|
|
420
441
|
Q.TERMINAL,
|
|
@@ -429,13 +450,13 @@ var Nr = Rn(null), Pr = ({ children: e }) => {
|
|
|
429
450
|
];
|
|
430
451
|
//#endregion
|
|
431
452
|
//#region src/hooks/useAppName.ts
|
|
432
|
-
function
|
|
453
|
+
function Ur(e) {
|
|
433
454
|
let { t } = Z("apps");
|
|
434
|
-
return e ? t(`names.${
|
|
455
|
+
return e ? t(`names.${Vr[e] ?? e}`, e) : "";
|
|
435
456
|
}
|
|
436
457
|
//#endregion
|
|
437
458
|
//#region src/hooks/useSearchFilter.ts
|
|
438
|
-
function
|
|
459
|
+
function Wr(e, t, n) {
|
|
439
460
|
return V(() => {
|
|
440
461
|
if (!t.trim()) return e;
|
|
441
462
|
let r = t.toLowerCase().trim();
|
|
@@ -451,7 +472,7 @@ function Jr(e, t, n) {
|
|
|
451
472
|
}
|
|
452
473
|
//#endregion
|
|
453
474
|
//#region src/hooks/useCollapsible.ts
|
|
454
|
-
function
|
|
475
|
+
function Gr(e) {
|
|
455
476
|
let [t, n] = U(e ?? /* @__PURE__ */ new Set());
|
|
456
477
|
return {
|
|
457
478
|
expanded: t,
|
|
@@ -485,32 +506,32 @@ function Yr(e) {
|
|
|
485
506
|
isExpanded: z((e) => t.has(e), [t])
|
|
486
507
|
};
|
|
487
508
|
}
|
|
488
|
-
var
|
|
509
|
+
var Kr = {
|
|
489
510
|
header: "_header_2d0oy_1",
|
|
490
511
|
iconContainer: "_iconContainer_2d0oy_20",
|
|
491
512
|
expandIcon: "_expandIcon_2d0oy_28",
|
|
492
513
|
icon: "_icon_2d0oy_20",
|
|
493
514
|
title: "_title_2d0oy_42",
|
|
494
515
|
content: "_content_2d0oy_48"
|
|
495
|
-
},
|
|
496
|
-
let s =
|
|
516
|
+
}, qr = ({ title: e, fcIcon: t = "FcFolder", expanded: n, onToggle: r, children: i, className: a, "aria-label": o }) => {
|
|
517
|
+
let s = Xt(n ? "VscRemove" : "VscAdd", {
|
|
497
518
|
size: 14,
|
|
498
|
-
className:
|
|
519
|
+
className: Kr.expandIcon
|
|
499
520
|
});
|
|
500
521
|
return /* @__PURE__ */ K("div", {
|
|
501
522
|
className: a,
|
|
502
|
-
children: [/* @__PURE__ */ K(
|
|
503
|
-
className:
|
|
523
|
+
children: [/* @__PURE__ */ K(Zn, {
|
|
524
|
+
className: Kr.header,
|
|
504
525
|
onClick: r,
|
|
505
526
|
"aria-expanded": n,
|
|
506
527
|
"aria-label": o ?? e,
|
|
507
528
|
children: [
|
|
508
529
|
/* @__PURE__ */ G("span", {
|
|
509
|
-
className:
|
|
530
|
+
className: Kr.iconContainer,
|
|
510
531
|
children: s
|
|
511
532
|
}),
|
|
512
533
|
/* @__PURE__ */ G("span", {
|
|
513
|
-
className:
|
|
534
|
+
className: Kr.icon,
|
|
514
535
|
children: /* @__PURE__ */ G(L, {
|
|
515
536
|
fcIcon: t,
|
|
516
537
|
size: 16
|
|
@@ -519,16 +540,16 @@ var Xr = {
|
|
|
519
540
|
/* @__PURE__ */ G(X, {
|
|
520
541
|
size: "sm",
|
|
521
542
|
fw: 500,
|
|
522
|
-
className:
|
|
543
|
+
className: Kr.title,
|
|
523
544
|
children: e
|
|
524
545
|
})
|
|
525
546
|
]
|
|
526
547
|
}), n && /* @__PURE__ */ G("div", {
|
|
527
|
-
className:
|
|
548
|
+
className: Kr.content,
|
|
528
549
|
children: i
|
|
529
550
|
})]
|
|
530
551
|
});
|
|
531
|
-
},
|
|
552
|
+
}, Jr = {
|
|
532
553
|
trigger: "_trigger_4gumo_1",
|
|
533
554
|
panel: "_panel_4gumo_23",
|
|
534
555
|
searchContainer: "_searchContainer_4gumo_39",
|
|
@@ -540,7 +561,7 @@ var Xr = {
|
|
|
540
561
|
};
|
|
541
562
|
//#endregion
|
|
542
563
|
//#region src/components/Launcher/Launcher.tsx
|
|
543
|
-
function
|
|
564
|
+
function Yr(e) {
|
|
544
565
|
let t = e.icon, n = "fcIcon" in e ? e.fcIcon : void 0, r = t?.startsWith("Fc") || t?.startsWith("Fi") || t?.startsWith("Vsc");
|
|
545
566
|
return {
|
|
546
567
|
id: e.id,
|
|
@@ -551,15 +572,15 @@ function $r(e) {
|
|
|
551
572
|
iconColor: "iconColor" in e ? e.iconColor : void 0
|
|
552
573
|
};
|
|
553
574
|
}
|
|
554
|
-
var
|
|
555
|
-
let n =
|
|
575
|
+
var Xr = ({ app: e, onOpen: t }) => {
|
|
576
|
+
let n = Ur(e.id);
|
|
556
577
|
return /* @__PURE__ */ K("button", {
|
|
557
|
-
className:
|
|
578
|
+
className: Jr.appButton,
|
|
558
579
|
onClick: () => t(e.id),
|
|
559
580
|
role: "menuitem",
|
|
560
581
|
"aria-label": n,
|
|
561
582
|
children: [/* @__PURE__ */ G("span", {
|
|
562
|
-
className:
|
|
583
|
+
className: Jr.appIcon,
|
|
563
584
|
children: /* @__PURE__ */ G(L, {
|
|
564
585
|
fcIcon: e.fcIcon,
|
|
565
586
|
iconUrl: e.iconUrl,
|
|
@@ -571,20 +592,20 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
571
592
|
children: n
|
|
572
593
|
})]
|
|
573
594
|
}, e.id);
|
|
574
|
-
},
|
|
575
|
-
title:
|
|
595
|
+
}, Zr = ({ folder: e, isExpanded: t, apps: n, onToggle: r, onOpen: i }) => /* @__PURE__ */ G(qr, {
|
|
596
|
+
title: cn(e),
|
|
576
597
|
fcIcon: e.fcIcon,
|
|
577
598
|
expanded: t,
|
|
578
599
|
onToggle: r,
|
|
579
|
-
children: n.map((e) => /* @__PURE__ */ G(
|
|
600
|
+
children: n.map((e) => /* @__PURE__ */ G(Xr, {
|
|
580
601
|
app: e,
|
|
581
602
|
onOpen: i
|
|
582
603
|
}, e.id))
|
|
583
|
-
}, e.id),
|
|
584
|
-
let
|
|
604
|
+
}, e.id), Qr = ({ fcIcon: t = "FcDebian", onContextMenu: n }) => {
|
|
605
|
+
let r = I(t, {
|
|
585
606
|
size: 22,
|
|
586
607
|
style: { display: "block" }
|
|
587
|
-
}), [
|
|
608
|
+
}), [i, a] = U(!1), [o, s] = U(""), c = Ae(), l = e((e) => e.theme.colors.taskbar), u = P((e) => e.launcherFolders), d = P((e) => e.customApps), { panelVariants: f } = Br(), p = H(null), m = H(null), { expanded: h, toggle: g, reset: _ } = Gr(/* @__PURE__ */ new Set()), v = V(() => [...ht].sort((e, t) => e.name.localeCompare(t.name)), []), y = V(() => new Set(u.flatMap((e) => e.appIds)), [u]), b = Wr(V(() => v.filter((e) => !y.has(e.id)), [v, y]), o, (e) => [e.id, e.name]), x = V(() => {
|
|
588
609
|
let e = u.map((e) => ({
|
|
589
610
|
...e,
|
|
590
611
|
appIds: e.appIds.filter((t) => {
|
|
@@ -613,57 +634,57 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
613
634
|
return d.filter((t) => t.id.toLowerCase().includes(e) || t.name.toLowerCase().includes(e));
|
|
614
635
|
}, [d, o]);
|
|
615
636
|
B(() => {
|
|
616
|
-
o.trim() &&
|
|
637
|
+
o.trim() && i && (x.map((e) => e.id).forEach((e) => {
|
|
617
638
|
h.has(e) || g(e);
|
|
618
|
-
}), S.length > 0 && !h.has("launcher-folder-custom-apps") && g(
|
|
639
|
+
}), S.length > 0 && !h.has("launcher-folder-custom-apps") && g(Jt));
|
|
619
640
|
}, [
|
|
620
641
|
o,
|
|
621
642
|
x,
|
|
622
643
|
S,
|
|
623
|
-
|
|
644
|
+
i,
|
|
624
645
|
h,
|
|
625
646
|
g
|
|
626
647
|
]), B(() => {
|
|
627
|
-
|
|
628
|
-
}, [
|
|
629
|
-
if (!
|
|
648
|
+
i || _();
|
|
649
|
+
}, [i, _]), B(() => {
|
|
650
|
+
if (!i) return;
|
|
630
651
|
let e = (e) => {
|
|
631
|
-
p.current && !p.current.contains(e.target) && (
|
|
652
|
+
p.current && !p.current.contains(e.target) && (a(!1), s(""));
|
|
632
653
|
}, t = (e) => {
|
|
633
|
-
e.key === "Escape" && (
|
|
654
|
+
e.key === "Escape" && (a(!1), s(""));
|
|
634
655
|
};
|
|
635
656
|
return document.addEventListener("mousedown", e), document.addEventListener("keydown", t), () => {
|
|
636
657
|
document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
|
|
637
658
|
};
|
|
638
|
-
}, [
|
|
659
|
+
}, [i]);
|
|
639
660
|
let C = (e) => {
|
|
640
|
-
if (e.preventDefault(), e.stopPropagation(),
|
|
641
|
-
|
|
661
|
+
if (e.preventDefault(), e.stopPropagation(), i) {
|
|
662
|
+
a(!1), s("");
|
|
642
663
|
return;
|
|
643
664
|
}
|
|
644
|
-
|
|
665
|
+
n?.(e);
|
|
645
666
|
};
|
|
646
667
|
B(() => {
|
|
647
|
-
|
|
648
|
-
}, [
|
|
668
|
+
i && m.current && m.current.focus();
|
|
669
|
+
}, [i]);
|
|
649
670
|
let w = z((e) => {
|
|
650
|
-
c(e),
|
|
671
|
+
c(e), a(!1), s("");
|
|
651
672
|
}, [c]), T = z((e) => {
|
|
652
673
|
g(e);
|
|
653
674
|
}, [g]), E = I("FcSearch", { size: 16 }), D = z(() => {
|
|
654
|
-
|
|
655
|
-
}, [
|
|
675
|
+
i ? (a(!1), s("")) : a(!0);
|
|
676
|
+
}, [i]);
|
|
656
677
|
return /* @__PURE__ */ K("div", {
|
|
657
678
|
ref: p,
|
|
658
679
|
children: [/* @__PURE__ */ G("button", {
|
|
659
|
-
className:
|
|
680
|
+
className: Jr.trigger,
|
|
660
681
|
onClick: D,
|
|
661
682
|
onContextMenu: C,
|
|
662
683
|
"aria-label": "Launcher",
|
|
663
|
-
"aria-expanded":
|
|
664
|
-
children:
|
|
665
|
-
}), /* @__PURE__ */ G(
|
|
666
|
-
className:
|
|
684
|
+
"aria-expanded": i,
|
|
685
|
+
children: r
|
|
686
|
+
}), /* @__PURE__ */ G(ir, { children: i && /* @__PURE__ */ K(ar.div, {
|
|
687
|
+
className: Jr.panel,
|
|
667
688
|
style: { background: l },
|
|
668
689
|
role: "menu",
|
|
669
690
|
"aria-label": "App launcher",
|
|
@@ -671,40 +692,40 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
671
692
|
animate: f.animate,
|
|
672
693
|
exit: f.exit,
|
|
673
694
|
children: [/* @__PURE__ */ G("div", {
|
|
674
|
-
className:
|
|
675
|
-
children: /* @__PURE__ */ G(
|
|
695
|
+
className: Jr.searchContainer,
|
|
696
|
+
children: /* @__PURE__ */ G(Xn, {
|
|
676
697
|
ref: m,
|
|
677
698
|
placeholder: "Search apps...",
|
|
678
699
|
value: o,
|
|
679
700
|
onChange: (e) => s(e.target.value),
|
|
680
701
|
leftSection: E,
|
|
681
702
|
size: "xs",
|
|
682
|
-
classNames: { input:
|
|
703
|
+
classNames: { input: Jr.searchInput },
|
|
683
704
|
"aria-label": "Search apps"
|
|
684
705
|
})
|
|
685
706
|
}), /* @__PURE__ */ K("div", {
|
|
686
|
-
className:
|
|
707
|
+
className: Jr.scrollContainer,
|
|
687
708
|
children: [
|
|
688
709
|
x.map((e) => {
|
|
689
710
|
let t = h.has(e.id);
|
|
690
|
-
return e.id === "launcher-folder-custom-apps" ? S.length === 0 ? null : /* @__PURE__ */ G(
|
|
711
|
+
return e.id === "launcher-folder-custom-apps" ? S.length === 0 ? null : /* @__PURE__ */ G(Zr, {
|
|
691
712
|
folder: e,
|
|
692
713
|
isExpanded: t,
|
|
693
|
-
apps: S.map(
|
|
714
|
+
apps: S.map(Yr),
|
|
694
715
|
onToggle: () => T(e.id),
|
|
695
716
|
onOpen: w
|
|
696
|
-
}, e.id) : /* @__PURE__ */ G(
|
|
717
|
+
}, e.id) : /* @__PURE__ */ G(Zr, {
|
|
697
718
|
folder: e,
|
|
698
719
|
isExpanded: t,
|
|
699
|
-
apps: e.appIds.map((e) => v.find((t) => t.id === e)).filter((e) => e !== void 0).sort((e, t) => e.name.localeCompare(t.name)).map(
|
|
720
|
+
apps: e.appIds.map((e) => v.find((t) => t.id === e)).filter((e) => e !== void 0).sort((e, t) => e.name.localeCompare(t.name)).map(Yr),
|
|
700
721
|
onToggle: () => T(e.id),
|
|
701
722
|
onOpen: w
|
|
702
723
|
}, e.id);
|
|
703
724
|
}),
|
|
704
725
|
b.length > 0 && /* @__PURE__ */ G("div", {
|
|
705
|
-
className:
|
|
706
|
-
children: b.map((e) => /* @__PURE__ */ G(
|
|
707
|
-
app:
|
|
726
|
+
className: Jr.appsSection,
|
|
727
|
+
children: b.map((e) => /* @__PURE__ */ G(Xr, {
|
|
728
|
+
app: Yr(e),
|
|
708
729
|
onOpen: w
|
|
709
730
|
}, e.id))
|
|
710
731
|
}),
|
|
@@ -719,7 +740,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
719
740
|
})]
|
|
720
741
|
}) })]
|
|
721
742
|
});
|
|
722
|
-
},
|
|
743
|
+
}, $r = ({ x: e, y: t }) => /* @__PURE__ */ G(J.Target, { children: /* @__PURE__ */ G("div", {
|
|
723
744
|
"aria-hidden": "true",
|
|
724
745
|
style: {
|
|
725
746
|
position: "fixed",
|
|
@@ -729,9 +750,9 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
729
750
|
height: 0,
|
|
730
751
|
pointerEvents: "none"
|
|
731
752
|
}
|
|
732
|
-
}) }),
|
|
753
|
+
}) }), ei = (e) => {
|
|
733
754
|
let t = H(null), [n, r] = U(0);
|
|
734
|
-
return
|
|
755
|
+
return zn(() => {
|
|
735
756
|
if (t.current && e) {
|
|
736
757
|
let e = t.current.offsetHeight;
|
|
737
758
|
r(e);
|
|
@@ -740,16 +761,16 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
740
761
|
menuRef: t,
|
|
741
762
|
menuHeight: n
|
|
742
763
|
};
|
|
743
|
-
},
|
|
764
|
+
}, ti = { menuItem: "_menuItem_18vno_1" }, ni = 8, ri = ({ windowMenuOpened: e, panelMenuOpened: t, launcherMenuOpened: n, menuPosition: r, targetWindowId: i, targetWindowState: a, onCloseWindow: o, onMinimizeWindow: s, onMaximizeWindow: c, onRestoreWindow: l, onClose: u }) => {
|
|
744
765
|
let { t: d } = Z("contextMenu"), f = {
|
|
745
766
|
size: 14,
|
|
746
767
|
style: { display: "block" }
|
|
747
|
-
}, p = () => I("FcCancel", f), m = () => I("FcMinus", f), h = () => I("FcTemplate", f), g = () => I("FcUndo", f), _ = () => I("FcSettings", f), v = () => I("FcFolder", f), y =
|
|
748
|
-
|
|
768
|
+
}, p = () => I("FcCancel", f), m = () => I("FcMinus", f), h = () => I("FcTemplate", f), g = () => I("FcUndo", f), _ = () => I("FcSettings", f), v = () => I("FcFolder", f), y = Ae(), b = Ur("menuedit"), x = P((e) => e.openWindow), S = a === "minimized", C = a === "maximized", { menuRef: w, menuHeight: T } = ei(e), { menuRef: E, menuHeight: D } = ei(t), { menuRef: ee, menuHeight: O } = ei(n), [k, te] = U(!1), [A, j] = U(!1), [ne, re] = U(!1);
|
|
769
|
+
zn(() => {
|
|
749
770
|
e || te(!1), e && T > 0 && te(!0);
|
|
750
|
-
}, [e, T]),
|
|
771
|
+
}, [e, T]), zn(() => {
|
|
751
772
|
t || j(!1), t && D > 0 && j(!0);
|
|
752
|
-
}, [t, D]),
|
|
773
|
+
}, [t, D]), zn(() => {
|
|
753
774
|
n || re(!1), n && O > 0 && re(!0);
|
|
754
775
|
}, [n, O]);
|
|
755
776
|
let ie = V(() => e ? {
|
|
@@ -775,8 +796,8 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
775
796
|
A,
|
|
776
797
|
ne
|
|
777
798
|
]), M = V(() => {
|
|
778
|
-
let { x: e, y: t } = r, { height: n, ready: i } = ie, a = t -
|
|
779
|
-
return i && n > 0 && t > window.innerHeight - 48 - n -
|
|
799
|
+
let { x: e, y: t } = r, { height: n, ready: i } = ie, a = t - ni;
|
|
800
|
+
return i && n > 0 && t > window.innerHeight - 48 - n - ni && (a = t - n + ni), {
|
|
780
801
|
x: e,
|
|
781
802
|
y: a
|
|
782
803
|
};
|
|
@@ -807,7 +828,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
807
828
|
closeOnEscape: !0,
|
|
808
829
|
closeOnItemClick: !0,
|
|
809
830
|
withinPortal: !0,
|
|
810
|
-
children: [/* @__PURE__ */ G(
|
|
831
|
+
children: [/* @__PURE__ */ G($r, {
|
|
811
832
|
x: M.x,
|
|
812
833
|
y: M.y
|
|
813
834
|
}), /* @__PURE__ */ K(J.Dropdown, {
|
|
@@ -819,7 +840,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
819
840
|
i && s(i);
|
|
820
841
|
},
|
|
821
842
|
children: /* @__PURE__ */ K("div", {
|
|
822
|
-
className:
|
|
843
|
+
className: ti.menuItem,
|
|
823
844
|
children: [
|
|
824
845
|
/* @__PURE__ */ G(m, {}),
|
|
825
846
|
" ",
|
|
@@ -832,7 +853,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
832
853
|
i && l(i);
|
|
833
854
|
},
|
|
834
855
|
children: /* @__PURE__ */ K("div", {
|
|
835
|
-
className:
|
|
856
|
+
className: ti.menuItem,
|
|
836
857
|
children: [
|
|
837
858
|
/* @__PURE__ */ G(g, {}),
|
|
838
859
|
" ",
|
|
@@ -844,7 +865,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
844
865
|
i && c(i);
|
|
845
866
|
},
|
|
846
867
|
children: /* @__PURE__ */ K("div", {
|
|
847
|
-
className:
|
|
868
|
+
className: ti.menuItem,
|
|
848
869
|
children: [
|
|
849
870
|
/* @__PURE__ */ G(h, {}),
|
|
850
871
|
" ",
|
|
@@ -858,7 +879,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
858
879
|
i && o(i);
|
|
859
880
|
},
|
|
860
881
|
children: /* @__PURE__ */ K("div", {
|
|
861
|
-
className:
|
|
882
|
+
className: ti.menuItem,
|
|
862
883
|
children: [
|
|
863
884
|
/* @__PURE__ */ G(p, {}),
|
|
864
885
|
" ",
|
|
@@ -876,7 +897,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
876
897
|
closeOnEscape: !0,
|
|
877
898
|
closeOnItemClick: !0,
|
|
878
899
|
withinPortal: !0,
|
|
879
|
-
children: [/* @__PURE__ */ G(
|
|
900
|
+
children: [/* @__PURE__ */ G($r, {
|
|
880
901
|
x: M.x,
|
|
881
902
|
y: M.y
|
|
882
903
|
}), /* @__PURE__ */ G(J.Dropdown, {
|
|
@@ -887,7 +908,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
887
908
|
y("settings");
|
|
888
909
|
},
|
|
889
910
|
children: /* @__PURE__ */ K("div", {
|
|
890
|
-
className:
|
|
911
|
+
className: ti.menuItem,
|
|
891
912
|
children: [
|
|
892
913
|
/* @__PURE__ */ G(_, {}),
|
|
893
914
|
" ",
|
|
@@ -904,7 +925,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
904
925
|
closeOnEscape: !0,
|
|
905
926
|
closeOnItemClick: !0,
|
|
906
927
|
withinPortal: !0,
|
|
907
|
-
children: [/* @__PURE__ */ G(
|
|
928
|
+
children: [/* @__PURE__ */ G($r, {
|
|
908
929
|
x: M.x,
|
|
909
930
|
y: M.y
|
|
910
931
|
}), /* @__PURE__ */ K(J.Dropdown, {
|
|
@@ -926,7 +947,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
926
947
|
})]
|
|
927
948
|
})
|
|
928
949
|
] });
|
|
929
|
-
},
|
|
950
|
+
}, ii = {
|
|
930
951
|
actions: {
|
|
931
952
|
save: "Save",
|
|
932
953
|
saveAs: "Save As",
|
|
@@ -1027,7 +1048,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1027
1048
|
ariaLabel: "App launcher",
|
|
1028
1049
|
selectedIcon: "Selected: {{icon}}"
|
|
1029
1050
|
}
|
|
1030
|
-
},
|
|
1051
|
+
}, ai = {
|
|
1031
1052
|
names: {
|
|
1032
1053
|
notepad: "Notepad",
|
|
1033
1054
|
terminal: "Terminal",
|
|
@@ -1158,7 +1179,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1158
1179
|
notAvailableMessage: "VS Code (code-server) cannot be used in browser mode.",
|
|
1159
1180
|
dockerRequired: "Please run in Docker to use VS Code."
|
|
1160
1181
|
}
|
|
1161
|
-
},
|
|
1182
|
+
}, oi = {
|
|
1162
1183
|
sections: {
|
|
1163
1184
|
wallpaper: {
|
|
1164
1185
|
label: "Wallpaper",
|
|
@@ -1189,11 +1210,24 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1189
1210
|
title: "Wallpaper",
|
|
1190
1211
|
wallpaperType: "Wallpaper Type",
|
|
1191
1212
|
staticImage: "Static Image",
|
|
1213
|
+
gradient: "Gradient",
|
|
1214
|
+
gradientType: "Gradient Type",
|
|
1215
|
+
gradientPreset: "Preset",
|
|
1216
|
+
gradientPosition: "Position {index}",
|
|
1217
|
+
addColor: "Add color",
|
|
1218
|
+
removeColor: "Remove",
|
|
1219
|
+
linear: "Linear",
|
|
1220
|
+
radial: "Radial",
|
|
1221
|
+
conic: "Conic",
|
|
1222
|
+
angle: "Angle",
|
|
1192
1223
|
chooseFromImages: "Choose from Images",
|
|
1193
1224
|
uploadFromDisk: "Upload from disk",
|
|
1194
1225
|
resetToDefault: "Reset to default",
|
|
1195
1226
|
orEnterUrl: "Or enter a URL",
|
|
1196
|
-
wallpaperPreview: "Wallpaper preview"
|
|
1227
|
+
wallpaperPreview: "Wallpaper preview",
|
|
1228
|
+
gradientPreview: "Gradient preview",
|
|
1229
|
+
addNoise: "Add noise texture",
|
|
1230
|
+
noiseOpacity: "Noise opacity"
|
|
1197
1231
|
},
|
|
1198
1232
|
appearance: {
|
|
1199
1233
|
title: "Appearance",
|
|
@@ -1233,7 +1267,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1233
1267
|
spanish: "Español"
|
|
1234
1268
|
},
|
|
1235
1269
|
all: "All Settings"
|
|
1236
|
-
},
|
|
1270
|
+
}, si = {
|
|
1237
1271
|
window: {
|
|
1238
1272
|
title: "Window",
|
|
1239
1273
|
minimize: "Minimize",
|
|
@@ -1261,7 +1295,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1261
1295
|
selectFolder: "Select folder",
|
|
1262
1296
|
filename: "filename.md"
|
|
1263
1297
|
}
|
|
1264
|
-
},
|
|
1298
|
+
}, ci = {
|
|
1265
1299
|
window: {
|
|
1266
1300
|
minimize: "Minimize",
|
|
1267
1301
|
restore: "Restore",
|
|
@@ -1307,7 +1341,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1307
1341
|
title: "Launcher",
|
|
1308
1342
|
editLauncher: "Edit Launcher"
|
|
1309
1343
|
}
|
|
1310
|
-
},
|
|
1344
|
+
}, li = {
|
|
1311
1345
|
empty: {
|
|
1312
1346
|
title: "There are no new notifications",
|
|
1313
1347
|
message: "For now"
|
|
@@ -1317,7 +1351,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1317
1351
|
hideNotifications: "Hide notifications",
|
|
1318
1352
|
clock: "clock"
|
|
1319
1353
|
}
|
|
1320
|
-
},
|
|
1354
|
+
}, ui = {
|
|
1321
1355
|
toolbar: {
|
|
1322
1356
|
formatting: "Text formatting",
|
|
1323
1357
|
bold: "Bold",
|
|
@@ -1333,7 +1367,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1333
1367
|
horizontalRule: "Horizontal rule"
|
|
1334
1368
|
},
|
|
1335
1369
|
untitled: "untitled.md"
|
|
1336
|
-
},
|
|
1370
|
+
}, di = {
|
|
1337
1371
|
hero: {
|
|
1338
1372
|
title: "Fullstack Developer & DevOps",
|
|
1339
1373
|
downloadCV: "Download CV",
|
|
@@ -1346,7 +1380,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1346
1380
|
experience: "Professional Experience",
|
|
1347
1381
|
techStack: "Tech Stack",
|
|
1348
1382
|
languages: "Languages"
|
|
1349
|
-
},
|
|
1383
|
+
}, fi = {
|
|
1350
1384
|
title: "Edit Launcher",
|
|
1351
1385
|
newFolder: "New Folder",
|
|
1352
1386
|
predefined: "Predefined",
|
|
@@ -1359,7 +1393,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1359
1393
|
addFolder: "Add folder",
|
|
1360
1394
|
instructions: "Right-click an app in a folder to remove it. Click an available app to add it to the first custom folder.",
|
|
1361
1395
|
canCreateNewFolder: "You can create new folders if needed."
|
|
1362
|
-
},
|
|
1396
|
+
}, pi = {
|
|
1363
1397
|
actions: {
|
|
1364
1398
|
save: "Guardar",
|
|
1365
1399
|
saveAs: "Guardar como",
|
|
@@ -1460,7 +1494,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1460
1494
|
ariaLabel: "Lanzador de aplicaciones",
|
|
1461
1495
|
selectedIcon: "Seleccionado: {{icon}}"
|
|
1462
1496
|
}
|
|
1463
|
-
},
|
|
1497
|
+
}, mi = {
|
|
1464
1498
|
names: {
|
|
1465
1499
|
notepad: "Bloc de notas",
|
|
1466
1500
|
terminal: "Terminal",
|
|
@@ -1591,7 +1625,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1591
1625
|
notAvailableMessage: "VS Code (code-server) no puede usarse en modo navegador.",
|
|
1592
1626
|
dockerRequired: "Por favor, ejecuta la aplicación en Docker para usar VS Code."
|
|
1593
1627
|
}
|
|
1594
|
-
},
|
|
1628
|
+
}, hi = {
|
|
1595
1629
|
sections: {
|
|
1596
1630
|
wallpaper: {
|
|
1597
1631
|
label: "Fondo de pantalla",
|
|
@@ -1622,11 +1656,24 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1622
1656
|
title: "Fondo de pantalla",
|
|
1623
1657
|
wallpaperType: "Tipo de fondo",
|
|
1624
1658
|
staticImage: "Imagen estática",
|
|
1659
|
+
gradient: "Degradado",
|
|
1660
|
+
gradientType: "Tipo de degradado",
|
|
1661
|
+
gradientPreset: "Preset",
|
|
1662
|
+
gradientPosition: "Posición {index}",
|
|
1663
|
+
addColor: "Añadir color",
|
|
1664
|
+
removeColor: "Quitar",
|
|
1665
|
+
linear: "Lineal",
|
|
1666
|
+
radial: "Radial",
|
|
1667
|
+
conic: "Cónico",
|
|
1668
|
+
angle: "Ángulo",
|
|
1625
1669
|
chooseFromImages: "Elegir de imágenes",
|
|
1626
1670
|
uploadFromDisk: "Subir desde disco",
|
|
1627
1671
|
resetToDefault: "Restablecer por defecto",
|
|
1628
1672
|
orEnterUrl: "O introduce una URL",
|
|
1629
|
-
wallpaperPreview: "Vista previa del fondo"
|
|
1673
|
+
wallpaperPreview: "Vista previa del fondo",
|
|
1674
|
+
gradientPreview: "Vista previa del degradado",
|
|
1675
|
+
addNoise: "Añadir textura de ruido",
|
|
1676
|
+
noiseOpacity: "Opacidad del ruido"
|
|
1630
1677
|
},
|
|
1631
1678
|
appearance: {
|
|
1632
1679
|
title: "Apariencia",
|
|
@@ -1666,7 +1713,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1666
1713
|
spanish: "Español"
|
|
1667
1714
|
},
|
|
1668
1715
|
all: "Todos los ajustes"
|
|
1669
|
-
},
|
|
1716
|
+
}, gi = {
|
|
1670
1717
|
window: {
|
|
1671
1718
|
title: "Ventana",
|
|
1672
1719
|
minimize: "Minimizar",
|
|
@@ -1694,7 +1741,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1694
1741
|
selectFolder: "Seleccionar carpeta",
|
|
1695
1742
|
filename: "nombre.md"
|
|
1696
1743
|
}
|
|
1697
|
-
},
|
|
1744
|
+
}, _i = {
|
|
1698
1745
|
window: {
|
|
1699
1746
|
minimize: "Minimizar",
|
|
1700
1747
|
restore: "Restaurar",
|
|
@@ -1740,7 +1787,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1740
1787
|
title: "Launcher",
|
|
1741
1788
|
editLauncher: "Editar Launcher"
|
|
1742
1789
|
}
|
|
1743
|
-
},
|
|
1790
|
+
}, vi = {
|
|
1744
1791
|
empty: {
|
|
1745
1792
|
title: "No hay notificaciones nuevas",
|
|
1746
1793
|
message: "Por ahora"
|
|
@@ -1750,7 +1797,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1750
1797
|
hideNotifications: "Ocultar notificaciones",
|
|
1751
1798
|
clock: "reloj"
|
|
1752
1799
|
}
|
|
1753
|
-
},
|
|
1800
|
+
}, yi = {
|
|
1754
1801
|
toolbar: {
|
|
1755
1802
|
formatting: "Formato de texto",
|
|
1756
1803
|
bold: "Negrita",
|
|
@@ -1766,7 +1813,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1766
1813
|
horizontalRule: "Línea horizontal"
|
|
1767
1814
|
},
|
|
1768
1815
|
untitled: "sin-titulo.md"
|
|
1769
|
-
},
|
|
1816
|
+
}, bi = {
|
|
1770
1817
|
hero: {
|
|
1771
1818
|
title: "Fullstack Developer & DevOps",
|
|
1772
1819
|
downloadCV: "Descargar CV",
|
|
@@ -1779,7 +1826,7 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1779
1826
|
experience: "Experiencia Profesional",
|
|
1780
1827
|
techStack: "Stack Tecnológico",
|
|
1781
1828
|
languages: "Idiomas"
|
|
1782
|
-
},
|
|
1829
|
+
}, xi = {
|
|
1783
1830
|
newFolder: "Nueva Carpeta",
|
|
1784
1831
|
predefined: "Predefinida",
|
|
1785
1832
|
rename: "Renombrar",
|
|
@@ -1791,34 +1838,34 @@ var ei = ({ app: e, onOpen: t }) => {
|
|
|
1791
1838
|
addFolder: "Añadir carpeta",
|
|
1792
1839
|
instructions: "Clic derecho en una app dentro de una carpeta para eliminarla. Clic en una app disponible para añadirla a la primera carpeta personalizada.",
|
|
1793
1840
|
canCreateNewFolder: "Puedes crear una nueva carpeta si lo necesitas."
|
|
1794
|
-
},
|
|
1795
|
-
|
|
1841
|
+
}, Si = ["en", "es"];
|
|
1842
|
+
cr.use(lr).use(sr).init({
|
|
1796
1843
|
resources: {
|
|
1797
1844
|
en: {
|
|
1798
|
-
common:
|
|
1799
|
-
apps:
|
|
1800
|
-
settings:
|
|
1801
|
-
window:
|
|
1802
|
-
contextMenu:
|
|
1803
|
-
notifications:
|
|
1804
|
-
notes:
|
|
1805
|
-
welcome:
|
|
1806
|
-
menuedit:
|
|
1845
|
+
common: ii,
|
|
1846
|
+
apps: ai,
|
|
1847
|
+
settings: oi,
|
|
1848
|
+
window: si,
|
|
1849
|
+
contextMenu: ci,
|
|
1850
|
+
notifications: li,
|
|
1851
|
+
notes: ui,
|
|
1852
|
+
welcome: di,
|
|
1853
|
+
menuedit: fi
|
|
1807
1854
|
},
|
|
1808
1855
|
es: {
|
|
1809
|
-
common:
|
|
1810
|
-
apps:
|
|
1811
|
-
settings:
|
|
1812
|
-
window:
|
|
1813
|
-
contextMenu:
|
|
1814
|
-
notifications:
|
|
1815
|
-
notes:
|
|
1816
|
-
welcome:
|
|
1817
|
-
menuedit:
|
|
1856
|
+
common: pi,
|
|
1857
|
+
apps: mi,
|
|
1858
|
+
settings: hi,
|
|
1859
|
+
window: gi,
|
|
1860
|
+
contextMenu: _i,
|
|
1861
|
+
notifications: vi,
|
|
1862
|
+
notes: yi,
|
|
1863
|
+
welcome: bi,
|
|
1864
|
+
menuedit: xi
|
|
1818
1865
|
}
|
|
1819
1866
|
},
|
|
1820
1867
|
fallbackLng: "en",
|
|
1821
|
-
supportedLngs:
|
|
1868
|
+
supportedLngs: Si,
|
|
1822
1869
|
ns: [
|
|
1823
1870
|
"common",
|
|
1824
1871
|
"apps",
|
|
@@ -1838,7 +1885,7 @@ dr.use(fr).use(ur).init({
|
|
|
1838
1885
|
caches: ["localStorage"]
|
|
1839
1886
|
}
|
|
1840
1887
|
});
|
|
1841
|
-
var
|
|
1888
|
+
var Ci = cr, wi = {
|
|
1842
1889
|
root: "_root_17um1_1",
|
|
1843
1890
|
windowButton: "_windowButton_17um1_15",
|
|
1844
1891
|
systemTray: "_systemTray_17um1_44",
|
|
@@ -1846,64 +1893,64 @@ var Di = dr, Oi = {
|
|
|
1846
1893
|
clock: "_clock_17um1_70",
|
|
1847
1894
|
notifButton: "_notifButton_17um1_88",
|
|
1848
1895
|
langButton: "_langButton_17um1_109"
|
|
1849
|
-
},
|
|
1896
|
+
}, Ti = {
|
|
1850
1897
|
en: "English",
|
|
1851
1898
|
es: "Español"
|
|
1852
|
-
},
|
|
1853
|
-
let { t
|
|
1854
|
-
|
|
1855
|
-
}, [
|
|
1899
|
+
}, Ei = () => {
|
|
1900
|
+
let { t, i18n: n } = Z("settings"), r = e((e) => e.language), i = e((e) => e.setLanguage), [a, o] = U(!1), s = z((e) => {
|
|
1901
|
+
i(e), n.changeLanguage(e), localStorage.setItem("fde-desktop:language", e), o(!1);
|
|
1902
|
+
}, [i, n]);
|
|
1856
1903
|
return /* @__PURE__ */ K(Y, {
|
|
1857
|
-
opened:
|
|
1904
|
+
opened: a,
|
|
1858
1905
|
onChange: o,
|
|
1859
1906
|
position: "top-end",
|
|
1860
1907
|
shadow: "md",
|
|
1861
1908
|
withArrow: !0,
|
|
1862
|
-
children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G(
|
|
1863
|
-
className:
|
|
1909
|
+
children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G(Zn, {
|
|
1910
|
+
className: wi.langButton,
|
|
1864
1911
|
onClick: () => o((e) => !e),
|
|
1865
|
-
"aria-label":
|
|
1866
|
-
"aria-expanded":
|
|
1912
|
+
"aria-label": t("language.selectPlaceholder"),
|
|
1913
|
+
"aria-expanded": a,
|
|
1867
1914
|
children: /* @__PURE__ */ G(l, {
|
|
1868
|
-
lang:
|
|
1915
|
+
lang: r,
|
|
1869
1916
|
size: 16
|
|
1870
1917
|
})
|
|
1871
|
-
}) }), /* @__PURE__ */ G(Y.Dropdown, { children: /* @__PURE__ */ G(
|
|
1918
|
+
}) }), /* @__PURE__ */ G(Y.Dropdown, { children: /* @__PURE__ */ G(Yn, {
|
|
1872
1919
|
gap: "xs",
|
|
1873
|
-
children:
|
|
1920
|
+
children: Si.map((e) => /* @__PURE__ */ G(Zn, {
|
|
1874
1921
|
onClick: () => s(e),
|
|
1875
|
-
"aria-label":
|
|
1876
|
-
"aria-pressed": e ===
|
|
1922
|
+
"aria-label": Ti[e],
|
|
1923
|
+
"aria-pressed": e === r,
|
|
1877
1924
|
style: {
|
|
1878
1925
|
padding: "8px 12px",
|
|
1879
1926
|
borderRadius: 6,
|
|
1880
1927
|
width: "100%",
|
|
1881
|
-
background: e ===
|
|
1928
|
+
background: e === r ? "var(--mantine-primary-color-light)" : "transparent",
|
|
1882
1929
|
cursor: "pointer"
|
|
1883
1930
|
},
|
|
1884
|
-
children: /* @__PURE__ */ K(
|
|
1931
|
+
children: /* @__PURE__ */ K(Un, {
|
|
1885
1932
|
gap: "sm",
|
|
1886
1933
|
children: [/* @__PURE__ */ G(l, {
|
|
1887
1934
|
lang: e,
|
|
1888
1935
|
size: 20
|
|
1889
1936
|
}), /* @__PURE__ */ G(X, {
|
|
1890
1937
|
size: "sm",
|
|
1891
|
-
fw: e ===
|
|
1892
|
-
children:
|
|
1938
|
+
fw: e === r ? 600 : 400,
|
|
1939
|
+
children: Ti[e]
|
|
1893
1940
|
})]
|
|
1894
1941
|
})
|
|
1895
1942
|
}, e))
|
|
1896
1943
|
}) })]
|
|
1897
1944
|
});
|
|
1898
|
-
},
|
|
1899
|
-
let r = H(null), { register: i, unregister: a } =
|
|
1945
|
+
}, Di = ({ win: e, onClick: t, onContextMenu: n }) => {
|
|
1946
|
+
let r = H(null), { register: i, unregister: a } = Mr();
|
|
1900
1947
|
return B(() => (r.current && i(e.id, r.current.getBoundingClientRect()), () => a(e.id)), [
|
|
1901
1948
|
e.id,
|
|
1902
1949
|
i,
|
|
1903
1950
|
a
|
|
1904
1951
|
]), /* @__PURE__ */ K("button", {
|
|
1905
1952
|
ref: r,
|
|
1906
|
-
className:
|
|
1953
|
+
className: wi.windowButton,
|
|
1907
1954
|
"data-active": e.state === "minimized" ? "false" : "true",
|
|
1908
1955
|
onClick: t,
|
|
1909
1956
|
onContextMenu: n,
|
|
@@ -1920,8 +1967,8 @@ var Di = dr, Oi = {
|
|
|
1920
1967
|
children: e.title
|
|
1921
1968
|
})]
|
|
1922
1969
|
});
|
|
1923
|
-
},
|
|
1924
|
-
let { t } = Z("notifications"),
|
|
1970
|
+
}, Oi = ({ calendarSlot: t }) => {
|
|
1971
|
+
let { t: n } = Z("notifications"), r = e((e) => e.theme.colors.taskbar), i = e((e) => e.theme.mode), a = e((e) => e.toggleTheme), o = e((e) => e.launcherIcon), s = P((e) => e.notifications), c = P((e) => e.removeNotification), l = P((e) => e.windows), u = P((e) => e.restoreWindow), d = P((e) => e.minimizeWindow), f = P((e) => e.focusWindow), p = P((e) => e.closeWindow), m = P((e) => e.maximizeWindow), h = Ir(), [g, _] = U(!1), [v, y] = U(!1), { position: b, targetWindowId: x, windowMenuOpened: S, panelMenuOpened: C, launcherMenuOpened: w, openWindowMenu: T, openPanelMenu: E, openLauncherMenu: D, closeMenu: ee } = zr(), O = x ? l.find((e) => e.id === x)?.state ?? null : null, k = H(0);
|
|
1925
1972
|
B(() => {
|
|
1926
1973
|
s.length > k.current && setTimeout(() => y(!0), 0), k.current = s.length;
|
|
1927
1974
|
}, [s.length]);
|
|
@@ -1929,23 +1976,23 @@ var Di = dr, Oi = {
|
|
|
1929
1976
|
t === "minimized" ? (u(e), f(e)) : d(e);
|
|
1930
1977
|
};
|
|
1931
1978
|
return /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ K("div", {
|
|
1932
|
-
className:
|
|
1933
|
-
style: { background:
|
|
1979
|
+
className: wi.root,
|
|
1980
|
+
style: { background: r },
|
|
1934
1981
|
role: "toolbar",
|
|
1935
1982
|
"aria-label": "Taskbar",
|
|
1936
1983
|
onContextMenu: E,
|
|
1937
1984
|
children: [
|
|
1938
|
-
/* @__PURE__ */ G(
|
|
1985
|
+
/* @__PURE__ */ G(Qr, {
|
|
1939
1986
|
fcIcon: o,
|
|
1940
1987
|
onContextMenu: D
|
|
1941
1988
|
}),
|
|
1942
|
-
te.map((e) => /* @__PURE__ */ G(
|
|
1989
|
+
te.map((e) => /* @__PURE__ */ G(Di, {
|
|
1943
1990
|
win: e,
|
|
1944
1991
|
onClick: () => A(e.id, e.state),
|
|
1945
1992
|
onContextMenu: (t) => T(t, e.id)
|
|
1946
1993
|
}, e.id)),
|
|
1947
1994
|
/* @__PURE__ */ K("div", {
|
|
1948
|
-
className:
|
|
1995
|
+
className: wi.systemTray,
|
|
1949
1996
|
"data-testid": "system-tray",
|
|
1950
1997
|
children: [
|
|
1951
1998
|
/* @__PURE__ */ K(Y, {
|
|
@@ -1956,9 +2003,9 @@ var Di = dr, Oi = {
|
|
|
1956
2003
|
withArrow: !0,
|
|
1957
2004
|
keepMounted: !0,
|
|
1958
2005
|
children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G("button", {
|
|
1959
|
-
className:
|
|
2006
|
+
className: wi.notifButton,
|
|
1960
2007
|
onClick: () => y((e) => !e),
|
|
1961
|
-
"aria-label":
|
|
2008
|
+
"aria-label": n(v ? "taskbar.hideNotifications" : "taskbar.showNotifications"),
|
|
1962
2009
|
children: /* @__PURE__ */ G(L, {
|
|
1963
2010
|
fcIcon: v ? "FcCollapse" : "FcExpand",
|
|
1964
2011
|
size: 18
|
|
@@ -1976,11 +2023,11 @@ var Di = dr, Oi = {
|
|
|
1976
2023
|
gap: 8,
|
|
1977
2024
|
minWidth: 300
|
|
1978
2025
|
},
|
|
1979
|
-
children: s.length === 0 ? /* @__PURE__ */ G(
|
|
1980
|
-
title:
|
|
2026
|
+
children: s.length === 0 ? /* @__PURE__ */ G(qn, {
|
|
2027
|
+
title: n("empty.title"),
|
|
1981
2028
|
onClose: () => y(!1),
|
|
1982
|
-
children:
|
|
1983
|
-
}) : s.map((e) => /* @__PURE__ */ G(
|
|
2029
|
+
children: n("empty.message")
|
|
2030
|
+
}) : s.map((e) => /* @__PURE__ */ G(qn, {
|
|
1984
2031
|
withBorder: !0,
|
|
1985
2032
|
icon: e.fcIcon ? /* @__PURE__ */ G(L, {
|
|
1986
2033
|
fcIcon: e.fcIcon,
|
|
@@ -1995,13 +2042,13 @@ var Di = dr, Oi = {
|
|
|
1995
2042
|
})
|
|
1996
2043
|
})]
|
|
1997
2044
|
}),
|
|
1998
|
-
/* @__PURE__ */ G(
|
|
2045
|
+
/* @__PURE__ */ G(Ei, {}),
|
|
1999
2046
|
/* @__PURE__ */ G("button", {
|
|
2000
|
-
className:
|
|
2001
|
-
onClick:
|
|
2002
|
-
"aria-label":
|
|
2003
|
-
title:
|
|
2004
|
-
children:
|
|
2047
|
+
className: wi.themeToggle,
|
|
2048
|
+
onClick: a,
|
|
2049
|
+
"aria-label": n(i === "dark" ? "theme.switchToLight" : "theme.switchToDark", { ns: "common" }),
|
|
2050
|
+
title: n(i === "dark" ? "theme.switchToLight" : "theme.switchToDark", { ns: "common" }),
|
|
2051
|
+
children: i === "dark" ? "☀️" : "🌙"
|
|
2005
2052
|
}),
|
|
2006
2053
|
/* @__PURE__ */ K(Y, {
|
|
2007
2054
|
opened: g,
|
|
@@ -2010,20 +2057,20 @@ var Di = dr, Oi = {
|
|
|
2010
2057
|
shadow: "md",
|
|
2011
2058
|
withArrow: !0,
|
|
2012
2059
|
children: [/* @__PURE__ */ G(Y.Target, { children: /* @__PURE__ */ G("button", {
|
|
2013
|
-
className:
|
|
2060
|
+
className: wi.clock,
|
|
2014
2061
|
onClick: () => _((e) => !e),
|
|
2015
|
-
"aria-label":
|
|
2062
|
+
"aria-label": n("taskbar.clock"),
|
|
2016
2063
|
"aria-expanded": g,
|
|
2017
2064
|
children: /* @__PURE__ */ G(X, {
|
|
2018
2065
|
size: "xs",
|
|
2019
2066
|
children: h
|
|
2020
2067
|
})
|
|
2021
|
-
}) }), /* @__PURE__ */ G(Y.Dropdown, { children:
|
|
2068
|
+
}) }), /* @__PURE__ */ G(Y.Dropdown, { children: t })]
|
|
2022
2069
|
})
|
|
2023
2070
|
]
|
|
2024
2071
|
})
|
|
2025
2072
|
]
|
|
2026
|
-
}), /* @__PURE__ */ G(
|
|
2073
|
+
}), /* @__PURE__ */ G(ri, {
|
|
2027
2074
|
windowMenuOpened: S,
|
|
2028
2075
|
panelMenuOpened: C,
|
|
2029
2076
|
launcherMenuOpened: w,
|
|
@@ -2036,21 +2083,21 @@ var Di = dr, Oi = {
|
|
|
2036
2083
|
onRestoreWindow: u,
|
|
2037
2084
|
onClose: ee
|
|
2038
2085
|
})] });
|
|
2039
|
-
},
|
|
2086
|
+
}, ki = ({ message: e = "Loading...", size: t = "lg" }) => /* @__PURE__ */ G(Hn, {
|
|
2040
2087
|
style: {
|
|
2041
2088
|
width: "100%",
|
|
2042
2089
|
height: "100%"
|
|
2043
2090
|
},
|
|
2044
|
-
children: /* @__PURE__ */ K(
|
|
2091
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
2045
2092
|
align: "center",
|
|
2046
2093
|
gap: "md",
|
|
2047
|
-
children: [/* @__PURE__ */ G(
|
|
2094
|
+
children: [/* @__PURE__ */ G(Wn, { size: t }), /* @__PURE__ */ G(X, {
|
|
2048
2095
|
c: "dimmed",
|
|
2049
2096
|
children: e
|
|
2050
2097
|
})]
|
|
2051
2098
|
})
|
|
2052
|
-
}),
|
|
2053
|
-
let n =
|
|
2099
|
+
}), Ai = ({ progress: e, windowIcon: t }) => {
|
|
2100
|
+
let n = $n(), r = () => {
|
|
2054
2101
|
switch (e.state) {
|
|
2055
2102
|
case "fetching": return "Fetching app info...";
|
|
2056
2103
|
case "compiling": return "Compiling app...";
|
|
@@ -2060,13 +2107,13 @@ var Di = dr, Oi = {
|
|
|
2060
2107
|
default: return "Loading...";
|
|
2061
2108
|
}
|
|
2062
2109
|
}, i = () => e.state === "error" ? "red" : e.state === "ready" ? "green" : n.primaryColor;
|
|
2063
|
-
return /* @__PURE__ */ G(
|
|
2110
|
+
return /* @__PURE__ */ G(Hn, {
|
|
2064
2111
|
style: {
|
|
2065
2112
|
width: "100%",
|
|
2066
2113
|
height: "100%"
|
|
2067
2114
|
},
|
|
2068
2115
|
"data-testid": "custom-app-loading",
|
|
2069
|
-
children: /* @__PURE__ */ K(
|
|
2116
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
2070
2117
|
align: "center",
|
|
2071
2118
|
gap: "lg",
|
|
2072
2119
|
p: "xl",
|
|
@@ -2080,7 +2127,7 @@ var Di = dr, Oi = {
|
|
|
2080
2127
|
fw: 700,
|
|
2081
2128
|
children: e.appName || "App"
|
|
2082
2129
|
}),
|
|
2083
|
-
/* @__PURE__ */ G(
|
|
2130
|
+
/* @__PURE__ */ G(Jn, {
|
|
2084
2131
|
value: e.progress,
|
|
2085
2132
|
size: "lg",
|
|
2086
2133
|
radius: "xl",
|
|
@@ -2107,12 +2154,12 @@ var Di = dr, Oi = {
|
|
|
2107
2154
|
]
|
|
2108
2155
|
})
|
|
2109
2156
|
});
|
|
2110
|
-
},
|
|
2157
|
+
}, ji = ({ appId: e }) => /* @__PURE__ */ G(Hn, {
|
|
2111
2158
|
style: {
|
|
2112
2159
|
width: "100%",
|
|
2113
2160
|
height: "100%"
|
|
2114
2161
|
},
|
|
2115
|
-
children: /* @__PURE__ */ K(
|
|
2162
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
2116
2163
|
align: "center",
|
|
2117
2164
|
gap: "lg",
|
|
2118
2165
|
p: "xl",
|
|
@@ -2120,7 +2167,7 @@ var Di = dr, Oi = {
|
|
|
2120
2167
|
children: [
|
|
2121
2168
|
/* @__PURE__ */ G(X, {
|
|
2122
2169
|
size: "3rem",
|
|
2123
|
-
children: /* @__PURE__ */ G(
|
|
2170
|
+
children: /* @__PURE__ */ G(fr, {})
|
|
2124
2171
|
}),
|
|
2125
2172
|
/* @__PURE__ */ G(X, {
|
|
2126
2173
|
size: "lg",
|
|
@@ -2145,7 +2192,7 @@ var Di = dr, Oi = {
|
|
|
2145
2192
|
},
|
|
2146
2193
|
children: "Open Welcome App"
|
|
2147
2194
|
}),
|
|
2148
|
-
/* @__PURE__ */ G(
|
|
2195
|
+
/* @__PURE__ */ G(Vn, {
|
|
2149
2196
|
href: "https://github.com/frannunpal/frannunpal.github.io/issues",
|
|
2150
2197
|
target: "_blank",
|
|
2151
2198
|
rel: "noopener noreferrer",
|
|
@@ -2154,12 +2201,12 @@ var Di = dr, Oi = {
|
|
|
2154
2201
|
})
|
|
2155
2202
|
]
|
|
2156
2203
|
})
|
|
2157
|
-
}),
|
|
2204
|
+
}), Mi = ({ appId: e }) => /* @__PURE__ */ G(Hn, {
|
|
2158
2205
|
style: {
|
|
2159
2206
|
width: "100%",
|
|
2160
2207
|
height: "100%"
|
|
2161
2208
|
},
|
|
2162
|
-
children: /* @__PURE__ */ K(
|
|
2209
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
2163
2210
|
align: "center",
|
|
2164
2211
|
gap: "lg",
|
|
2165
2212
|
p: "xl",
|
|
@@ -2167,7 +2214,7 @@ var Di = dr, Oi = {
|
|
|
2167
2214
|
children: [
|
|
2168
2215
|
/* @__PURE__ */ G(X, {
|
|
2169
2216
|
size: "3rem",
|
|
2170
|
-
children: /* @__PURE__ */ G(
|
|
2217
|
+
children: /* @__PURE__ */ G(pr, {})
|
|
2171
2218
|
}),
|
|
2172
2219
|
/* @__PURE__ */ G(X, {
|
|
2173
2220
|
size: "lg",
|
|
@@ -2193,15 +2240,15 @@ var Di = dr, Oi = {
|
|
|
2193
2240
|
})
|
|
2194
2241
|
]
|
|
2195
2242
|
})
|
|
2196
|
-
}),
|
|
2197
|
-
function
|
|
2198
|
-
|
|
2243
|
+
}), Ni = /* @__PURE__ */ new Set(), $ = null, Pi = null, Fi = null, Ii = !1, Li = 0, Ri = null, zi = !1, Bi = !1;
|
|
2244
|
+
function Vi() {
|
|
2245
|
+
Ni.clear(), $ = null, Pi = null, Fi = null, Ii = !1, Li = 0, Ri = null, zi = !1, Bi = !1;
|
|
2199
2246
|
}
|
|
2200
|
-
var
|
|
2201
|
-
function
|
|
2247
|
+
var Hi = 1e4, Ui = 2e3, Wi = 5, Gi = 0;
|
|
2248
|
+
function Ki() {
|
|
2202
2249
|
return `${window.location.protocol === "https:" ? "wss:" : "ws:"}//${window.location.host}/api/hmr`;
|
|
2203
2250
|
}
|
|
2204
|
-
async function
|
|
2251
|
+
async function qi() {
|
|
2205
2252
|
try {
|
|
2206
2253
|
let e = await fetch("/api/hmr", { method: "HEAD" });
|
|
2207
2254
|
return e.status === 426 || e.status === 400;
|
|
@@ -2209,45 +2256,45 @@ async function Zi() {
|
|
|
2209
2256
|
return !1;
|
|
2210
2257
|
}
|
|
2211
2258
|
}
|
|
2212
|
-
function
|
|
2213
|
-
|
|
2259
|
+
function Ji() {
|
|
2260
|
+
Pi &&= (clearTimeout(Pi), null), Fi &&= (clearTimeout(Fi), null), Ii = !1;
|
|
2214
2261
|
}
|
|
2215
|
-
function
|
|
2216
|
-
typeof BroadcastChannel > "u" || (
|
|
2262
|
+
function Yi(e) {
|
|
2263
|
+
typeof BroadcastChannel > "u" || (Ri = new BroadcastChannel("fde-custom-apps"), Ri.onmessage = (t) => {
|
|
2217
2264
|
let n = t.data;
|
|
2218
2265
|
n._fromBroadcast = !0, e(n);
|
|
2219
2266
|
});
|
|
2220
2267
|
}
|
|
2221
|
-
function
|
|
2222
|
-
|
|
2268
|
+
function Xi(e) {
|
|
2269
|
+
Ri?.postMessage(e);
|
|
2223
2270
|
}
|
|
2224
|
-
async function
|
|
2271
|
+
async function Zi() {
|
|
2225
2272
|
P.getState().isFsReady || await new Promise((e) => {
|
|
2226
2273
|
let t = P.subscribe((n) => {
|
|
2227
2274
|
n.isFsReady && (t(), e());
|
|
2228
2275
|
});
|
|
2229
2276
|
});
|
|
2230
2277
|
try {
|
|
2231
|
-
let e = F.getState().registeredApps, { added: t, removed: n } = await
|
|
2278
|
+
let e = F.getState().registeredApps, { added: t, removed: n } = await Ye(e);
|
|
2232
2279
|
for (let e of t) F.getState().registerApp(e), P.getState().handleCustomAppRegistered?.(e);
|
|
2233
2280
|
for (let e of n) F.getState().unregisterApp(e), P.getState().handleCustomAppUnregistered?.(e);
|
|
2234
2281
|
} catch (e) {
|
|
2235
2282
|
console.warn("[HMR] Failed to sync apps on connect:", e);
|
|
2236
2283
|
}
|
|
2237
2284
|
}
|
|
2238
|
-
function
|
|
2239
|
-
if (
|
|
2240
|
-
let r =
|
|
2241
|
-
return
|
|
2242
|
-
$ && $.readyState !== WebSocket.OPEN && i ===
|
|
2243
|
-
|
|
2244
|
-
},
|
|
2245
|
-
},
|
|
2246
|
-
if (i !==
|
|
2285
|
+
function Qi(e, t, n) {
|
|
2286
|
+
if (Ii || $ && $.readyState === WebSocket.OPEN) return $;
|
|
2287
|
+
let r = Ki(), i = ++Li;
|
|
2288
|
+
return Ii = !0, $ = new WebSocket(r), Fi = setTimeout(() => {
|
|
2289
|
+
$ && $.readyState !== WebSocket.OPEN && i === Li && (console.warn("[HMR] Initial connection timeout"), Gi++, Gi >= Wi ? (console.warn("[HMR] Max initial retries reached, marking server as offline"), t()) : ($?.close(), Pi = setTimeout(() => {
|
|
2290
|
+
Qi(e, t, n);
|
|
2291
|
+
}, Ui)));
|
|
2292
|
+
}, Hi), $.onopen = () => {
|
|
2293
|
+
if (i !== Li) {
|
|
2247
2294
|
$?.close();
|
|
2248
2295
|
return;
|
|
2249
2296
|
}
|
|
2250
|
-
console.log("[HMR] Connected to server"),
|
|
2297
|
+
console.log("[HMR] Connected to server"), Gi = 0, Ii = !1, F.getState().resetHmrRetry(), F.getState().setHmrConnected(!0), F.getState().setHmrError(null), F.getState().devServerOffline && n(), F.getState().setDevServerOffline(!1), Ji(), Zi().catch((e) => {
|
|
2251
2298
|
console.warn("[HMR] Failed to sync apps:", e);
|
|
2252
2299
|
});
|
|
2253
2300
|
}, $.onmessage = (t) => {
|
|
@@ -2258,18 +2305,18 @@ function na(e, t, n) {
|
|
|
2258
2305
|
console.error("[HMR] Failed to parse message:", e);
|
|
2259
2306
|
}
|
|
2260
2307
|
}, $.onclose = (r) => {
|
|
2261
|
-
i ===
|
|
2262
|
-
|
|
2263
|
-
},
|
|
2308
|
+
i === Li && (console.log(`[HMR] Disconnected from server (code: ${r.code})`), $ = null, Ii = !1, F.getState().setHmrConnected(!1), Ji(), Pi = setTimeout(() => {
|
|
2309
|
+
Qi(e, t, n);
|
|
2310
|
+
}, Ui));
|
|
2264
2311
|
}, $.onerror = (e) => {
|
|
2265
|
-
i ===
|
|
2312
|
+
i === Li && (console.error("[HMR] WebSocket error:", e), F.getState().setHmrError("Connection failed"));
|
|
2266
2313
|
}, $;
|
|
2267
2314
|
}
|
|
2268
|
-
function
|
|
2269
|
-
|
|
2315
|
+
function $i() {
|
|
2316
|
+
Ji(), $ &&= ($.close(), null), Ri &&= (Ri.close(), null);
|
|
2270
2317
|
}
|
|
2271
|
-
function
|
|
2272
|
-
let t = H(e), { notify: n } =
|
|
2318
|
+
function ea(e) {
|
|
2319
|
+
let t = H(e), { notify: n } = gn();
|
|
2273
2320
|
B(() => {
|
|
2274
2321
|
t.current = e;
|
|
2275
2322
|
}, [e]);
|
|
@@ -2283,7 +2330,7 @@ function ia(e) {
|
|
|
2283
2330
|
console.warn(`[HMR] Error unmounting ${t}:`, e);
|
|
2284
2331
|
}
|
|
2285
2332
|
let r = document.getElementById(`app-container-${t}`);
|
|
2286
|
-
r && (r.innerHTML = ""), F.getState().setAppLoading(t),
|
|
2333
|
+
r && (r.innerHTML = ""), F.getState().setAppLoading(t), Ni.forEach((e) => {
|
|
2287
2334
|
try {
|
|
2288
2335
|
e.onReload(t);
|
|
2289
2336
|
} catch (e) {
|
|
@@ -2296,12 +2343,12 @@ function ia(e) {
|
|
|
2296
2343
|
if (e.manifest) {
|
|
2297
2344
|
console.log(`[HMR] App registered: ${e.manifest.id}`);
|
|
2298
2345
|
let t = !!F.getState().registeredApps[e.manifest.id];
|
|
2299
|
-
|
|
2346
|
+
Qe(), tt(e.manifest), F.getState().registerApp(e.manifest), P.getState().handleCustomAppRegistered?.(e.manifest), t || n("New App Available", `${e.manifest.name} is now available`, { fcIcon: "FcApproval" }), e._fromBroadcast || Xi(e);
|
|
2300
2347
|
}
|
|
2301
2348
|
break;
|
|
2302
2349
|
case "app-unregistered": {
|
|
2303
2350
|
let t = e.appId;
|
|
2304
|
-
console.log(`[HMR] App unregistered: ${t}`),
|
|
2351
|
+
console.log(`[HMR] App unregistered: ${t}`), Qe(), Ke(t), F.getState().unregisterApp(t), P.getState().handleCustomAppUnregistered?.(t), e._fromBroadcast || Xi(e);
|
|
2305
2352
|
break;
|
|
2306
2353
|
}
|
|
2307
2354
|
case "app-error":
|
|
@@ -2314,22 +2361,22 @@ function ia(e) {
|
|
|
2314
2361
|
n("HMR Reconnected", "Hot module replacement is now active", { fcIcon: "FcApproval" });
|
|
2315
2362
|
}, [n]);
|
|
2316
2363
|
B(() => {
|
|
2317
|
-
if (
|
|
2364
|
+
if (Ge() === "browser") {
|
|
2318
2365
|
console.log("[HMR] Skipping: not running in Docker");
|
|
2319
2366
|
return;
|
|
2320
2367
|
}
|
|
2321
|
-
if (!
|
|
2368
|
+
if (!We() || !ot()) return;
|
|
2322
2369
|
let e = !1;
|
|
2323
|
-
return
|
|
2324
|
-
if (
|
|
2370
|
+
return Ni.add(t.current), !Bi && !zi && (zi = !0, qi().then((t) => {
|
|
2371
|
+
if (zi = !1, e || !t) {
|
|
2325
2372
|
t || console.warn("[HMR] HMR endpoint not available, skipping WebSocket connection");
|
|
2326
2373
|
return;
|
|
2327
2374
|
}
|
|
2328
|
-
|
|
2375
|
+
Bi = !0, Yi(r), Qi(r, i, a);
|
|
2329
2376
|
}).catch(() => {
|
|
2330
|
-
|
|
2377
|
+
zi = !1;
|
|
2331
2378
|
})), () => {
|
|
2332
|
-
e = !0,
|
|
2379
|
+
e = !0, Ni.delete(t.current), Ni.size === 0 && (Bi = !1, $i());
|
|
2333
2380
|
};
|
|
2334
2381
|
}, [
|
|
2335
2382
|
r,
|
|
@@ -2337,9 +2384,9 @@ function ia(e) {
|
|
|
2337
2384
|
a
|
|
2338
2385
|
]);
|
|
2339
2386
|
}
|
|
2340
|
-
function
|
|
2341
|
-
let { notify: e } =
|
|
2342
|
-
|
|
2387
|
+
function ta() {
|
|
2388
|
+
let { notify: e } = gn();
|
|
2389
|
+
ea({
|
|
2343
2390
|
onReload: () => {},
|
|
2344
2391
|
onRegistered: z((t) => {
|
|
2345
2392
|
P.getState().handleCustomAppRegistered?.(t), e("New App Available", `${t.name} is now available`, { fcIcon: "FcApproval" });
|
|
@@ -2351,7 +2398,7 @@ function aa() {
|
|
|
2351
2398
|
}
|
|
2352
2399
|
//#endregion
|
|
2353
2400
|
//#region src/utils/waitForContainer.ts
|
|
2354
|
-
function
|
|
2401
|
+
function na(e, t = 5e3) {
|
|
2355
2402
|
return new Promise((n, r) => {
|
|
2356
2403
|
let i = Date.now(), a = null, o = null, s = () => {
|
|
2357
2404
|
o &&= (clearInterval(o), null), a &&= (clearTimeout(a), null);
|
|
@@ -2373,15 +2420,15 @@ function oa(e, t = 5e3) {
|
|
|
2373
2420
|
}
|
|
2374
2421
|
//#endregion
|
|
2375
2422
|
//#region src/components/Shared/CustomAppLoader/CustomAppLoader.tsx
|
|
2376
|
-
var
|
|
2423
|
+
var ra = {
|
|
2377
2424
|
state: "idle",
|
|
2378
2425
|
progress: 0,
|
|
2379
2426
|
appName: ""
|
|
2380
|
-
},
|
|
2427
|
+
}, ia = 1e4, aa = ({ appId: e, windowIcon: t, notifyReady: n }) => {
|
|
2381
2428
|
let [r, i] = U({
|
|
2382
|
-
...
|
|
2429
|
+
...ra,
|
|
2383
2430
|
appName: e
|
|
2384
|
-
}), [a, o] = U(!1), [s, c] = U(null), [l, u] = U(!1), [d, f] = U(0), p = H(null), m = H(!0), h = H(!1), g = H(null), _ = H(null), v = F((e) => e.devServerOffline), y = F((t) => t.mountedApps[e]), b = F((e) => e.setAppLoading), x = F((e) => e.setAppLoaded), S = F((e) => e.setAppError), C = F((e) => e.clearApp), { notify: w } =
|
|
2431
|
+
}), [a, o] = U(!1), [s, c] = U(null), [l, u] = U(!1), [d, f] = U(0), p = H(null), m = H(!0), h = H(!1), g = H(null), _ = H(null), v = F((e) => e.devServerOffline), y = F((t) => t.mountedApps[e]), b = F((e) => e.setAppLoading), x = F((e) => e.setAppLoaded), S = F((e) => e.setAppError), C = F((e) => e.clearApp), { notify: w } = gn(), T = We(), E = z(() => {
|
|
2385
2432
|
_.current &&= (clearTimeout(_.current), null);
|
|
2386
2433
|
}, []), D = z(() => {
|
|
2387
2434
|
g.current &&= (clearInterval(g.current), null);
|
|
@@ -2398,8 +2445,8 @@ var sa = {
|
|
|
2398
2445
|
...e,
|
|
2399
2446
|
state: "fetching",
|
|
2400
2447
|
progress: 10
|
|
2401
|
-
})), b(e), c(null),
|
|
2402
|
-
let t = await
|
|
2448
|
+
})), b(e), c(null), Qe();
|
|
2449
|
+
let t = await Re(!0);
|
|
2403
2450
|
if (!t) throw Error("Apps manifest not found. Make sure apps are built.");
|
|
2404
2451
|
let r = t.apps.find((t) => t.id === e);
|
|
2405
2452
|
if (!r) throw Error(`App '${e}' not found in manifest. Available apps: ${t.apps.map((e) => e.id).join(", ")}`);
|
|
@@ -2419,7 +2466,7 @@ var sa = {
|
|
|
2419
2466
|
}));
|
|
2420
2467
|
}, 100);
|
|
2421
2468
|
try {
|
|
2422
|
-
await
|
|
2469
|
+
await na(`app-container-${e}`, 5e3);
|
|
2423
2470
|
} catch {
|
|
2424
2471
|
throw Error(`Container #app-container-${e} not found`);
|
|
2425
2472
|
}
|
|
@@ -2440,8 +2487,8 @@ var sa = {
|
|
|
2440
2487
|
return;
|
|
2441
2488
|
}
|
|
2442
2489
|
_.current = setTimeout(() => {
|
|
2443
|
-
console.warn(`[${e}] App did not call appReady() within ${
|
|
2444
|
-
},
|
|
2490
|
+
console.warn(`[${e}] App did not call appReady() within ${ia}ms`), w("Warning", `App ${e} took too long to initialize`, { fcIcon: "FcInfo" }), u(!0), F.getState().setAppReady(e), t();
|
|
2491
|
+
}, ia), n();
|
|
2445
2492
|
}), i((e) => ({
|
|
2446
2493
|
...e,
|
|
2447
2494
|
state: "ready",
|
|
@@ -2471,9 +2518,9 @@ var sa = {
|
|
|
2471
2518
|
D,
|
|
2472
2519
|
w
|
|
2473
2520
|
]);
|
|
2474
|
-
if (
|
|
2521
|
+
if (ea({ onReload: z((t) => {
|
|
2475
2522
|
t === e && (h.current = !1, ee(), C(e), o(!1), i({
|
|
2476
|
-
...
|
|
2523
|
+
...ra,
|
|
2477
2524
|
appName: e
|
|
2478
2525
|
}), c(null), f((e) => e + 1));
|
|
2479
2526
|
}, [
|
|
@@ -2489,17 +2536,17 @@ var sa = {
|
|
|
2489
2536
|
d,
|
|
2490
2537
|
D,
|
|
2491
2538
|
E
|
|
2492
|
-
]), !T) return /* @__PURE__ */ G(
|
|
2493
|
-
if (v && !y?.isLoaded && !s) return /* @__PURE__ */ G(
|
|
2539
|
+
]), !T) return /* @__PURE__ */ G(Mi, { appId: e });
|
|
2540
|
+
if (v && !y?.isLoaded && !s) return /* @__PURE__ */ G(ji, { appId: e });
|
|
2494
2541
|
let k = r.state === "error", te = a && y?.isReady && !l, A = r.state === "ready" && a && l, j = A && !y?.instance;
|
|
2495
|
-
return j ? /* @__PURE__ */ G(
|
|
2542
|
+
return j ? /* @__PURE__ */ G(Ai, {
|
|
2496
2543
|
progress: {
|
|
2497
2544
|
...r,
|
|
2498
2545
|
state: "error",
|
|
2499
2546
|
error: `App '${e}' loaded but did not mount. Check the browser console for errors.`
|
|
2500
2547
|
},
|
|
2501
2548
|
windowIcon: t
|
|
2502
|
-
}) : /* @__PURE__ */ K(W, { children: [(k || j || !(te || A)) && /* @__PURE__ */ G(
|
|
2549
|
+
}) : /* @__PURE__ */ K(W, { children: [(k || j || !(te || A)) && /* @__PURE__ */ G(Ai, {
|
|
2503
2550
|
progress: r,
|
|
2504
2551
|
windowIcon: t
|
|
2505
2552
|
}), /* @__PURE__ */ G("div", {
|
|
@@ -2517,66 +2564,66 @@ var sa = {
|
|
|
2517
2564
|
fontFamily: "sans-serif"
|
|
2518
2565
|
}
|
|
2519
2566
|
})] });
|
|
2520
|
-
},
|
|
2567
|
+
}, oa = Fn({
|
|
2521
2568
|
notifyReady: () => {},
|
|
2522
2569
|
getContentData: () => void 0
|
|
2523
|
-
}),
|
|
2570
|
+
}), sa = () => Rn(oa), ca = ({ children: e }) => {
|
|
2524
2571
|
let t = H(void 0), n = z((e) => {
|
|
2525
2572
|
e !== void 0 && (t.current = e);
|
|
2526
2573
|
}, []), r = z(() => t.current, []);
|
|
2527
|
-
return /* @__PURE__ */ G(
|
|
2574
|
+
return /* @__PURE__ */ G(oa.Provider, {
|
|
2528
2575
|
value: {
|
|
2529
2576
|
notifyReady: n,
|
|
2530
2577
|
getContentData: r
|
|
2531
2578
|
},
|
|
2532
2579
|
children: e
|
|
2533
2580
|
});
|
|
2534
|
-
},
|
|
2581
|
+
}, la = {
|
|
2535
2582
|
root: "_root_1vtes_1",
|
|
2536
2583
|
titleBar: "_titleBar_1vtes_12",
|
|
2537
2584
|
windowButtons: "_windowButtons_1vtes_31",
|
|
2538
2585
|
title: "_title_1vtes_12",
|
|
2539
2586
|
content: "_content_1vtes_41",
|
|
2540
2587
|
focusOverlay: "_focusOverlay_1vtes_48"
|
|
2541
|
-
},
|
|
2542
|
-
let { notifyReady: r, getContentData: i } =
|
|
2588
|
+
}, ua = ({ win: e, isFocused: t, focusWindow: n }) => {
|
|
2589
|
+
let { notifyReady: r, getContentData: i } = sa(), a = F((t) => e.content in t.registeredApps), o = V(() => Pe(e.content), [e.content]), s = V(() => O(e.content), [e.content]), c = V(() => Ne(e.content), [e.content]), l = V(() => k(e.content), [e.content]), u = V(() => ce(e.content), [e.content]), d = P((e) => e.closeWindow), f = i() ?? e.contentData, p = {
|
|
2543
2590
|
...e,
|
|
2544
2591
|
contentData: f
|
|
2545
2592
|
}, m = s ? s(p) : void 0;
|
|
2546
|
-
if (a) return /* @__PURE__ */ G(
|
|
2593
|
+
if (a) return /* @__PURE__ */ G(aa, {
|
|
2547
2594
|
appId: e.content,
|
|
2548
2595
|
windowIcon: e.icon,
|
|
2549
2596
|
notifyReady: r
|
|
2550
2597
|
});
|
|
2551
|
-
let h = l ? /* @__PURE__ */ G(
|
|
2552
|
-
fallback: /* @__PURE__ */ G(
|
|
2553
|
-
children:
|
|
2598
|
+
let h = l ? /* @__PURE__ */ G(Pn, {
|
|
2599
|
+
fallback: /* @__PURE__ */ G(ki, { message: u ? `Loading ${u}...` : void 0 }),
|
|
2600
|
+
children: In(o, {
|
|
2554
2601
|
window: e,
|
|
2555
2602
|
notifyReady: r
|
|
2556
2603
|
})
|
|
2557
|
-
}) :
|
|
2604
|
+
}) : In(o, {
|
|
2558
2605
|
window: e,
|
|
2559
2606
|
notifyReady: r
|
|
2560
2607
|
});
|
|
2561
|
-
return /* @__PURE__ */ K(W, { children: [c ? /* @__PURE__ */ G(
|
|
2608
|
+
return /* @__PURE__ */ K(W, { children: [c ? /* @__PURE__ */ G(Pn, {
|
|
2562
2609
|
fallback: null,
|
|
2563
|
-
children:
|
|
2610
|
+
children: In(c, {
|
|
2564
2611
|
windowId: e.id,
|
|
2565
2612
|
contentData: f,
|
|
2566
2613
|
onExit: () => d(e.id)
|
|
2567
2614
|
})
|
|
2568
|
-
}) : m && m.length > 0 ? /* @__PURE__ */ G(
|
|
2569
|
-
className:
|
|
2615
|
+
}) : m && m.length > 0 ? /* @__PURE__ */ G(hn, { elements: m }) : null, /* @__PURE__ */ K("div", {
|
|
2616
|
+
className: la.content,
|
|
2570
2617
|
children: [!t && /* @__PURE__ */ G("div", {
|
|
2571
2618
|
"data-testid": "focus-overlay",
|
|
2572
|
-
className:
|
|
2619
|
+
className: la.focusOverlay,
|
|
2573
2620
|
onMouseDown: (t) => {
|
|
2574
2621
|
t.stopPropagation(), n(e.id);
|
|
2575
2622
|
}
|
|
2576
2623
|
}), h]
|
|
2577
2624
|
})] });
|
|
2578
|
-
},
|
|
2579
|
-
let { t } = Z("window"),
|
|
2625
|
+
}, da = ({ window: t }) => {
|
|
2626
|
+
let { t: n } = Z("window"), r = P((e) => e.windows.find((e) => e.id === t.id)) ?? t, i = Ur(r.content), { focusWindow: a, closeWindow: o, minimizeWindow: s, maximizeWindow: c, restoreWindow: l, moveWindow: u, resizeWindow: d } = P(dr((e) => ({
|
|
2580
2627
|
focusWindow: e.focusWindow,
|
|
2581
2628
|
closeWindow: e.closeWindow,
|
|
2582
2629
|
minimizeWindow: e.minimizeWindow,
|
|
@@ -2584,20 +2631,20 @@ var sa = {
|
|
|
2584
2631
|
restoreWindow: e.restoreWindow,
|
|
2585
2632
|
moveWindow: e.moveWindow,
|
|
2586
2633
|
resizeWindow: e.resizeWindow
|
|
2587
|
-
}))), f =
|
|
2588
|
-
let t = e.windows.find((e) => e.id ===
|
|
2634
|
+
}))), f = e((e) => e.theme.colors.window), p = ln((e) => e.isOpen), m = ln((e) => e.windowId), h = ln((e) => e.onSave), g = ln((e) => e.onDiscard), _ = ln((e) => e.closeModal), { windowVariants: v, easeIn: y } = Br(), b = P((e) => {
|
|
2635
|
+
let t = e.windows.find((e) => e.id === r.id);
|
|
2589
2636
|
if (!t) return !0;
|
|
2590
|
-
let
|
|
2637
|
+
let n = t.alwaysOnTop ?? !1, i = e.windows.filter((e) => e.isOpen && e.state !== "minimized" && (e.alwaysOnTop ?? !1) === n);
|
|
2591
2638
|
return i.length === 0 ? !0 : Math.max(...i.map((e) => e.zIndex)) === t.zIndex;
|
|
2592
|
-
}), { getRect: x } =
|
|
2639
|
+
}), { getRect: x } = Mr(), S = or(), C = H(r.state);
|
|
2593
2640
|
B(() => {
|
|
2594
2641
|
S.start("visible");
|
|
2595
2642
|
}, [S]), B(() => {
|
|
2596
|
-
if (C.current === "minimized" &&
|
|
2597
|
-
let e = x(
|
|
2643
|
+
if (C.current === "minimized" && r.state !== "minimized") {
|
|
2644
|
+
let e = x(r.id);
|
|
2598
2645
|
if (e) {
|
|
2599
|
-
let t =
|
|
2600
|
-
S.start(
|
|
2646
|
+
let t = r.x + r.width / 2, n = r.y + r.height / 2, i = e.left + e.width / 2, a = e.top + e.height / 2;
|
|
2647
|
+
S.start(Me(i - t, a - n));
|
|
2601
2648
|
} else S.set({
|
|
2602
2649
|
x: 0,
|
|
2603
2650
|
y: 0,
|
|
@@ -2605,170 +2652,170 @@ var sa = {
|
|
|
2605
2652
|
opacity: 1
|
|
2606
2653
|
}), S.start("visible");
|
|
2607
2654
|
}
|
|
2608
|
-
C.current =
|
|
2655
|
+
C.current = r.state;
|
|
2609
2656
|
}, [
|
|
2610
|
-
|
|
2657
|
+
r.state,
|
|
2611
2658
|
S,
|
|
2612
2659
|
x,
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2660
|
+
r.id,
|
|
2661
|
+
r.x,
|
|
2662
|
+
r.y,
|
|
2663
|
+
r.width,
|
|
2664
|
+
r.height
|
|
2618
2665
|
]);
|
|
2619
2666
|
let w = z((e) => {
|
|
2620
|
-
e.preventDefault(),
|
|
2621
|
-
}, [
|
|
2622
|
-
if (!
|
|
2623
|
-
let T =
|
|
2624
|
-
let e = x(
|
|
2667
|
+
e.preventDefault(), ht.find((e) => e.id === r.content)?.hasContextMenu || e.stopPropagation();
|
|
2668
|
+
}, [r.content]);
|
|
2669
|
+
if (!r.isOpen) return null;
|
|
2670
|
+
let T = r.state === "minimized", E = r.state === "maximized", D = r.canMaximize !== !1, ee = p && m === r.id, O = async () => {
|
|
2671
|
+
let e = x(r.id);
|
|
2625
2672
|
if (e) {
|
|
2626
|
-
let t =
|
|
2627
|
-
await S.start(
|
|
2673
|
+
let t = r.x + r.width / 2, n = r.y + r.height / 2, i = e.left + e.width / 2, a = e.top + e.height / 2;
|
|
2674
|
+
await S.start(we(i - t, a - n));
|
|
2628
2675
|
} else await S.start({
|
|
2629
2676
|
...v.exit,
|
|
2630
2677
|
transition: y
|
|
2631
2678
|
});
|
|
2632
|
-
s(
|
|
2679
|
+
s(r.id);
|
|
2633
2680
|
}, k = async () => {
|
|
2634
|
-
let e =
|
|
2681
|
+
let e = pn(r.id);
|
|
2635
2682
|
e && !e() || (await S.start({
|
|
2636
2683
|
...v.exit,
|
|
2637
2684
|
transition: y
|
|
2638
|
-
}), o(
|
|
2685
|
+
}), o(r.id));
|
|
2639
2686
|
}, te = () => {
|
|
2640
2687
|
h?.(), _();
|
|
2641
2688
|
}, A = () => {
|
|
2642
2689
|
g?.(), _();
|
|
2643
|
-
let e =
|
|
2690
|
+
let e = r.id;
|
|
2644
2691
|
e && o(e);
|
|
2645
2692
|
}, j = () => {
|
|
2646
2693
|
_();
|
|
2647
2694
|
};
|
|
2648
|
-
return /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(
|
|
2695
|
+
return /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(ur, {
|
|
2649
2696
|
position: E ? {
|
|
2650
2697
|
x: 0,
|
|
2651
2698
|
y: 0
|
|
2652
2699
|
} : {
|
|
2653
|
-
x:
|
|
2654
|
-
y:
|
|
2700
|
+
x: r.x,
|
|
2701
|
+
y: r.y
|
|
2655
2702
|
},
|
|
2656
2703
|
size: E ? {
|
|
2657
2704
|
width: "100vw",
|
|
2658
2705
|
height: "100vh"
|
|
2659
2706
|
} : {
|
|
2660
|
-
width:
|
|
2661
|
-
height:
|
|
2707
|
+
width: r.width,
|
|
2708
|
+
height: r.height
|
|
2662
2709
|
},
|
|
2663
|
-
minWidth:
|
|
2664
|
-
minHeight:
|
|
2710
|
+
minWidth: r.minWidth ?? 0,
|
|
2711
|
+
minHeight: r.minHeight ?? 0,
|
|
2665
2712
|
style: {
|
|
2666
|
-
zIndex:
|
|
2713
|
+
zIndex: r.zIndex,
|
|
2667
2714
|
visibility: T ? "hidden" : "visible",
|
|
2668
2715
|
pointerEvents: T ? "none" : "auto"
|
|
2669
2716
|
},
|
|
2670
|
-
dragHandleClassName:
|
|
2717
|
+
dragHandleClassName: la.titleBar,
|
|
2671
2718
|
disableDragging: E || T,
|
|
2672
2719
|
enableResizing: !E && !T,
|
|
2673
|
-
onMouseDown: () =>
|
|
2674
|
-
onDragStop: (e, t) => u(
|
|
2675
|
-
onResizeStop: (e, t,
|
|
2676
|
-
d(
|
|
2720
|
+
onMouseDown: () => a(r.id),
|
|
2721
|
+
onDragStop: (e, t) => u(r.id, t.x, t.y),
|
|
2722
|
+
onResizeStop: (e, t, n, i, a) => {
|
|
2723
|
+
d(r.id, n.offsetWidth, n.offsetHeight), u(r.id, a.x, a.y);
|
|
2677
2724
|
},
|
|
2678
|
-
children: /* @__PURE__ */ K(
|
|
2679
|
-
className:
|
|
2680
|
-
"data-testid": `window-${
|
|
2725
|
+
children: /* @__PURE__ */ K(ar.div, {
|
|
2726
|
+
className: la.root,
|
|
2727
|
+
"data-testid": `window-${r.content}`,
|
|
2681
2728
|
style: { background: f },
|
|
2682
2729
|
variants: v,
|
|
2683
2730
|
initial: "hidden",
|
|
2684
2731
|
animate: S,
|
|
2685
2732
|
exit: "exit",
|
|
2686
2733
|
layout: !0,
|
|
2687
|
-
transition:
|
|
2734
|
+
transition: De,
|
|
2688
2735
|
onContextMenu: w,
|
|
2689
2736
|
children: [/* @__PURE__ */ K("div", {
|
|
2690
|
-
className:
|
|
2737
|
+
className: la.titleBar,
|
|
2691
2738
|
children: [
|
|
2692
2739
|
/* @__PURE__ */ G(L, {
|
|
2693
|
-
fcIcon:
|
|
2694
|
-
iconUrl:
|
|
2695
|
-
fallback:
|
|
2740
|
+
fcIcon: r.fcIcon,
|
|
2741
|
+
iconUrl: r.iconUrl,
|
|
2742
|
+
fallback: r.icon,
|
|
2696
2743
|
size: 14,
|
|
2697
|
-
color:
|
|
2744
|
+
color: r.iconColor
|
|
2698
2745
|
}),
|
|
2699
2746
|
/* @__PURE__ */ G(X, {
|
|
2700
2747
|
size: "sm",
|
|
2701
2748
|
fw: 500,
|
|
2702
2749
|
truncate: !0,
|
|
2703
|
-
className:
|
|
2704
|
-
children:
|
|
2750
|
+
className: la.title,
|
|
2751
|
+
children: i
|
|
2705
2752
|
}),
|
|
2706
|
-
/* @__PURE__ */ K(
|
|
2753
|
+
/* @__PURE__ */ K(Un, {
|
|
2707
2754
|
gap: 2,
|
|
2708
2755
|
wrap: "nowrap",
|
|
2709
|
-
className:
|
|
2756
|
+
className: la.windowButtons,
|
|
2710
2757
|
children: [
|
|
2711
|
-
/* @__PURE__ */ G(
|
|
2758
|
+
/* @__PURE__ */ G(Bn, {
|
|
2712
2759
|
size: "lg",
|
|
2713
2760
|
variant: "subtle",
|
|
2714
|
-
"aria-label":
|
|
2761
|
+
"aria-label": n("window.ariaLabels.minimize"),
|
|
2715
2762
|
onClick: O,
|
|
2716
2763
|
children: /* @__PURE__ */ G(R, { name: "VscChromeMinimize" })
|
|
2717
2764
|
}),
|
|
2718
|
-
D && /* @__PURE__ */ G(
|
|
2765
|
+
D && /* @__PURE__ */ G(Bn, {
|
|
2719
2766
|
size: "lg",
|
|
2720
2767
|
variant: "subtle",
|
|
2721
|
-
"aria-label":
|
|
2722
|
-
onClick: () => E ? l(
|
|
2768
|
+
"aria-label": n(E ? "window.ariaLabels.restore" : "window.ariaLabels.maximize"),
|
|
2769
|
+
onClick: () => E ? l(r.id) : c(r.id),
|
|
2723
2770
|
children: E ? /* @__PURE__ */ G(R, { name: "VscChromeRestore" }) : /* @__PURE__ */ G(R, { name: "VscChromeMaximize" })
|
|
2724
2771
|
}),
|
|
2725
|
-
/* @__PURE__ */ G(
|
|
2772
|
+
/* @__PURE__ */ G(Bn, {
|
|
2726
2773
|
size: "lg",
|
|
2727
2774
|
variant: "subtle",
|
|
2728
2775
|
color: "red",
|
|
2729
|
-
"aria-label":
|
|
2776
|
+
"aria-label": n("window.ariaLabels.close"),
|
|
2730
2777
|
onClick: k,
|
|
2731
2778
|
children: /* @__PURE__ */ G(R, { name: "VscChromeClose" })
|
|
2732
2779
|
})
|
|
2733
2780
|
]
|
|
2734
2781
|
})
|
|
2735
2782
|
]
|
|
2736
|
-
}), /* @__PURE__ */ G(
|
|
2737
|
-
win:
|
|
2783
|
+
}), /* @__PURE__ */ G(ca, { children: /* @__PURE__ */ G(ua, {
|
|
2784
|
+
win: r,
|
|
2738
2785
|
isFocused: b,
|
|
2739
|
-
focusWindow:
|
|
2786
|
+
focusWindow: a
|
|
2740
2787
|
}) })]
|
|
2741
2788
|
})
|
|
2742
|
-
}), /* @__PURE__ */ K(
|
|
2789
|
+
}), /* @__PURE__ */ K(Kn, {
|
|
2743
2790
|
opened: ee,
|
|
2744
2791
|
onClose: j,
|
|
2745
|
-
title:
|
|
2792
|
+
title: n("unsavedModal.title"),
|
|
2746
2793
|
centered: !0,
|
|
2747
2794
|
withinPortal: !0,
|
|
2748
2795
|
children: [
|
|
2749
2796
|
/* @__PURE__ */ G(X, {
|
|
2750
2797
|
size: "sm",
|
|
2751
2798
|
mb: "lg",
|
|
2752
|
-
children:
|
|
2799
|
+
children: n("unsavedModal.message")
|
|
2753
2800
|
}),
|
|
2754
2801
|
/* @__PURE__ */ G(q, {
|
|
2755
2802
|
variant: "default",
|
|
2756
2803
|
onClick: A,
|
|
2757
|
-
children:
|
|
2804
|
+
children: n("unsavedModal.dontSave")
|
|
2758
2805
|
}),
|
|
2759
2806
|
/* @__PURE__ */ G(q, {
|
|
2760
2807
|
onClick: te,
|
|
2761
2808
|
ml: "sm",
|
|
2762
|
-
children:
|
|
2809
|
+
children: n("unsavedModal.save")
|
|
2763
2810
|
})
|
|
2764
2811
|
]
|
|
2765
2812
|
})] });
|
|
2766
|
-
},
|
|
2813
|
+
}, fa = {
|
|
2767
2814
|
root: "_root_1f7p3_1",
|
|
2768
2815
|
iconImage: "_iconImage_1f7p3_21",
|
|
2769
2816
|
label: "_label_1f7p3_26"
|
|
2770
|
-
},
|
|
2771
|
-
let r =
|
|
2817
|
+
}, pa = ({ icon: e, onDoubleClick: t, onContextMenu: n }) => {
|
|
2818
|
+
let r = ht.find((t) => t.id === e.appId), i = e.iconName !== void 0, a = e.nodeId !== void 0, o = e.icon === "📁", s = e.appId === "pdf", c = H(0), l = Ur(e.appId), u = e.appId && !a && r ? l : e.name, d = z((t) => {
|
|
2772
2819
|
if (t.preventDefault(), e.nodeId) {
|
|
2773
2820
|
t.stopPropagation(), n?.(t, e.nodeId);
|
|
2774
2821
|
return;
|
|
@@ -2779,7 +2826,7 @@ var sa = {
|
|
|
2779
2826
|
e.appId,
|
|
2780
2827
|
r?.hasContextMenu,
|
|
2781
2828
|
n
|
|
2782
|
-
]), f = () => i ? /* @__PURE__ */ G(
|
|
2829
|
+
]), f = () => i ? /* @__PURE__ */ G(_n, {
|
|
2783
2830
|
type: "folder",
|
|
2784
2831
|
name: e.name,
|
|
2785
2832
|
folderNode: {
|
|
@@ -2794,11 +2841,11 @@ var sa = {
|
|
|
2794
2841
|
updatedAt: /* @__PURE__ */ new Date()
|
|
2795
2842
|
},
|
|
2796
2843
|
size: 32
|
|
2797
|
-
}) : o && a ? /* @__PURE__ */ G(
|
|
2844
|
+
}) : o && a ? /* @__PURE__ */ G(_n, {
|
|
2798
2845
|
type: "folder",
|
|
2799
2846
|
name: e.name,
|
|
2800
2847
|
size: 32
|
|
2801
|
-
}) : a || s ? /* @__PURE__ */ G(
|
|
2848
|
+
}) : a || s ? /* @__PURE__ */ G(_n, {
|
|
2802
2849
|
type: "file",
|
|
2803
2850
|
name: e.name,
|
|
2804
2851
|
size: 32
|
|
@@ -2810,7 +2857,7 @@ var sa = {
|
|
|
2810
2857
|
color: r?.iconColor
|
|
2811
2858
|
});
|
|
2812
2859
|
return /* @__PURE__ */ K("div", {
|
|
2813
|
-
className:
|
|
2860
|
+
className: fa.root,
|
|
2814
2861
|
style: {
|
|
2815
2862
|
left: e.x,
|
|
2816
2863
|
top: e.y
|
|
@@ -2827,17 +2874,17 @@ var sa = {
|
|
|
2827
2874
|
tabIndex: 0,
|
|
2828
2875
|
onKeyDown: (n) => n.key === "Enter" && t(e.appId ?? "", e.nodeId),
|
|
2829
2876
|
children: [/* @__PURE__ */ G("span", {
|
|
2830
|
-
className:
|
|
2877
|
+
className: fa.iconImage,
|
|
2831
2878
|
"aria-hidden": "true",
|
|
2832
2879
|
children: f()
|
|
2833
2880
|
}), /* @__PURE__ */ G(X, {
|
|
2834
2881
|
size: "xs",
|
|
2835
|
-
className:
|
|
2882
|
+
className: fa.label,
|
|
2836
2883
|
truncate: !0,
|
|
2837
2884
|
children: u
|
|
2838
2885
|
})]
|
|
2839
2886
|
});
|
|
2840
|
-
},
|
|
2887
|
+
}, ma = ({ x: e, y: t }) => /* @__PURE__ */ G(J.Target, { children: /* @__PURE__ */ G("div", {
|
|
2841
2888
|
"aria-hidden": "true",
|
|
2842
2889
|
style: {
|
|
2843
2890
|
position: "fixed",
|
|
@@ -2847,7 +2894,7 @@ var sa = {
|
|
|
2847
2894
|
height: 0,
|
|
2848
2895
|
pointerEvents: "none"
|
|
2849
2896
|
}
|
|
2850
|
-
}) }),
|
|
2897
|
+
}) }), ha = ({ owner: e, parentId: t, currentPath: n }) => {
|
|
2851
2898
|
let { t: r } = Z("contextMenu"), i = P((e) => e.contextMenu), a = P((e) => e.closeContextMenu), o = P((e) => e.copyToClipboard), s = P((e) => e.cutToClipboard), c = P((e) => e.clipboard), l = P((e) => e.clearClipboard), u = P((e) => e.fsNodes), d = P((e) => e.addNotification), f = P((e) => e.openWindow), p = P((e) => e.desktopSortMode), m = P((e) => e.filesSortMode), h = P((e) => e.setDesktopSortMode), g = P((e) => e.setFilesSortMode), _ = P((e) => e.setFsNodes), v = P((e) => e.syncIcons), y = e === "files" ? m : p, b = e === "files" ? g : h, [x, S] = U({
|
|
2852
2899
|
opened: !1,
|
|
2853
2900
|
pending: null
|
|
@@ -2857,7 +2904,7 @@ var sa = {
|
|
|
2857
2904
|
nodeName: ""
|
|
2858
2905
|
}), T = i.owner === e, E = i.targetNodeId, D = E ? u.find((e) => e.id === E) : void 0, ee = (e) => {
|
|
2859
2906
|
a();
|
|
2860
|
-
let { x: i, y: o } =
|
|
2907
|
+
let { x: i, y: o } = fe();
|
|
2861
2908
|
f({
|
|
2862
2909
|
title: r(e === "folder" ? "createItem.folderTitle" : "createItem.fileTitle"),
|
|
2863
2910
|
content: "createItem",
|
|
@@ -2903,10 +2950,10 @@ var sa = {
|
|
|
2903
2950
|
D && s([D]), a();
|
|
2904
2951
|
}, A = () => {
|
|
2905
2952
|
D && o([D]), a();
|
|
2906
|
-
}, j = (e, t) => u.find((n) => n.name === e && n.parentId === t),
|
|
2953
|
+
}, j = (e, t) => u.find((n) => n.name === e && n.parentId === t), ne = async (e, t) => {
|
|
2907
2954
|
let n = await N.createFolder(e.name, t, e.iconName, e.iconColor), r = N.getChildren(e.id);
|
|
2908
|
-
for (let e of r) e.type === "folder" ? await
|
|
2909
|
-
},
|
|
2955
|
+
for (let e of r) e.type === "folder" ? await ne(e, n.id) : await N.createFile(e.name, e.content || "", n.id);
|
|
2956
|
+
}, re = async (e, n) => {
|
|
2910
2957
|
if (t) {
|
|
2911
2958
|
if (c.action === "cut") try {
|
|
2912
2959
|
await N.move(e.id, t), _(N.getAllNodes()), v();
|
|
@@ -2922,7 +2969,7 @@ var sa = {
|
|
|
2922
2969
|
else if (c.action === "copy") {
|
|
2923
2970
|
if (e.type === "folder") {
|
|
2924
2971
|
let r = j(e.name, t);
|
|
2925
|
-
r && n && await N.delete(r.id), (!r || n) && (await
|
|
2972
|
+
r && n && await N.delete(r.id), (!r || n) && (await ne(e, t), _(N.getAllNodes()), v());
|
|
2926
2973
|
} else if (e.type === "file") {
|
|
2927
2974
|
let r = j(e.name, t);
|
|
2928
2975
|
if (r && n && await N.delete(r.id), !r || n) try {
|
|
@@ -2939,7 +2986,7 @@ var sa = {
|
|
|
2939
2986
|
}
|
|
2940
2987
|
c.action === "cut" && l();
|
|
2941
2988
|
}
|
|
2942
|
-
},
|
|
2989
|
+
}, ie = async () => {
|
|
2943
2990
|
if (c.content.length === 0 || !t) return;
|
|
2944
2991
|
let e = c.content[0];
|
|
2945
2992
|
j(e.name, t) ? S({
|
|
@@ -2948,15 +2995,15 @@ var sa = {
|
|
|
2948
2995
|
node: e,
|
|
2949
2996
|
originalName: e.name
|
|
2950
2997
|
}
|
|
2951
|
-
}) : (await
|
|
2952
|
-
},
|
|
2953
|
-
x.pending &&
|
|
2998
|
+
}) : (await re(e, !1), a());
|
|
2999
|
+
}, M = (e) => {
|
|
3000
|
+
x.pending && re(x.pending.node, e), S({
|
|
2954
3001
|
opened: !1,
|
|
2955
3002
|
pending: null
|
|
2956
3003
|
}), a();
|
|
2957
|
-
},
|
|
3004
|
+
}, ae = c.content.length > 0 && t !== null, oe = c.content.length > 1 ? r("actions.pasteItems", { count: c.content.length }) : r("actions.paste"), se = (e) => {
|
|
2958
3005
|
b(e), a();
|
|
2959
|
-
},
|
|
3006
|
+
}, ce = [
|
|
2960
3007
|
{
|
|
2961
3008
|
mode: "default",
|
|
2962
3009
|
icon: "FcDatabase",
|
|
@@ -2987,7 +3034,7 @@ var sa = {
|
|
|
2987
3034
|
closeOnItemClick: !0,
|
|
2988
3035
|
withinPortal: !0,
|
|
2989
3036
|
position: "bottom-start",
|
|
2990
|
-
children: [/* @__PURE__ */ G(
|
|
3037
|
+
children: [/* @__PURE__ */ G(ma, {
|
|
2991
3038
|
x: i.x,
|
|
2992
3039
|
y: i.y
|
|
2993
3040
|
}), /* @__PURE__ */ G(J.Dropdown, { children: D ? /* @__PURE__ */ K(W, { children: [
|
|
@@ -3008,13 +3055,13 @@ var sa = {
|
|
|
3008
3055
|
onClick: A,
|
|
3009
3056
|
children: r("actions.copy")
|
|
3010
3057
|
}),
|
|
3011
|
-
|
|
3058
|
+
ae && /* @__PURE__ */ G(J.Item, {
|
|
3012
3059
|
leftSection: /* @__PURE__ */ G(R, {
|
|
3013
3060
|
name: "VscCopy",
|
|
3014
3061
|
size: 14
|
|
3015
3062
|
}),
|
|
3016
|
-
onClick:
|
|
3017
|
-
children:
|
|
3063
|
+
onClick: ie,
|
|
3064
|
+
children: oe
|
|
3018
3065
|
}),
|
|
3019
3066
|
/* @__PURE__ */ G(J.Divider, {}),
|
|
3020
3067
|
/* @__PURE__ */ G(J.Item, {
|
|
@@ -3043,23 +3090,23 @@ var sa = {
|
|
|
3043
3090
|
onClick: () => ee("file"),
|
|
3044
3091
|
children: r("actions.createFile")
|
|
3045
3092
|
}),
|
|
3046
|
-
|
|
3093
|
+
ae && /* @__PURE__ */ K(W, { children: [/* @__PURE__ */ G(J.Divider, {}), /* @__PURE__ */ G(J.Item, {
|
|
3047
3094
|
leftSection: /* @__PURE__ */ G(R, {
|
|
3048
3095
|
name: "VscCopy",
|
|
3049
3096
|
size: 14
|
|
3050
3097
|
}),
|
|
3051
|
-
onClick:
|
|
3052
|
-
children:
|
|
3098
|
+
onClick: ie,
|
|
3099
|
+
children: oe
|
|
3053
3100
|
})] }),
|
|
3054
3101
|
e === "desktop" || e === "files" ? /* @__PURE__ */ K(W, { children: [
|
|
3055
3102
|
/* @__PURE__ */ G(J.Divider, {}),
|
|
3056
3103
|
/* @__PURE__ */ G(J.Label, { children: r("sort.title") }),
|
|
3057
|
-
|
|
3104
|
+
ce.map((e) => /* @__PURE__ */ G(J.Item, {
|
|
3058
3105
|
leftSection: /* @__PURE__ */ G(L, {
|
|
3059
3106
|
fcIcon: e.icon,
|
|
3060
3107
|
size: 14
|
|
3061
3108
|
}),
|
|
3062
|
-
onClick: () =>
|
|
3109
|
+
onClick: () => se(e.mode),
|
|
3063
3110
|
style: y === e.mode ? { fontWeight: 600 } : void 0,
|
|
3064
3111
|
"data-testid": y === e.mode ? "sort-option-selected" : void 0,
|
|
3065
3112
|
children: e.label
|
|
@@ -3067,9 +3114,9 @@ var sa = {
|
|
|
3067
3114
|
] }) : null
|
|
3068
3115
|
] }) })]
|
|
3069
3116
|
}),
|
|
3070
|
-
/* @__PURE__ */ K(
|
|
3117
|
+
/* @__PURE__ */ K(Kn, {
|
|
3071
3118
|
opened: x.opened,
|
|
3072
|
-
onClose: () =>
|
|
3119
|
+
onClose: () => M(!1),
|
|
3073
3120
|
title: /* @__PURE__ */ G(X, {
|
|
3074
3121
|
fw: 600,
|
|
3075
3122
|
children: r("common:messages.replaceFile")
|
|
@@ -3080,12 +3127,12 @@ var sa = {
|
|
|
3080
3127
|
size: "sm",
|
|
3081
3128
|
mb: "md",
|
|
3082
3129
|
children: r("common:messages.replaceFileMessage", { name: x.pending?.originalName })
|
|
3083
|
-
}), /* @__PURE__ */ K(
|
|
3130
|
+
}), /* @__PURE__ */ K(Un, {
|
|
3084
3131
|
justify: "flex-end",
|
|
3085
3132
|
children: [/* @__PURE__ */ G(q, {
|
|
3086
3133
|
variant: "default",
|
|
3087
3134
|
size: "sm",
|
|
3088
|
-
onClick: () =>
|
|
3135
|
+
onClick: () => M(!1),
|
|
3089
3136
|
leftSection: /* @__PURE__ */ G(R, {
|
|
3090
3137
|
name: "VscClose",
|
|
3091
3138
|
size: 14
|
|
@@ -3093,7 +3140,7 @@ var sa = {
|
|
|
3093
3140
|
children: r("common:buttons.no")
|
|
3094
3141
|
}), /* @__PURE__ */ G(q, {
|
|
3095
3142
|
size: "sm",
|
|
3096
|
-
onClick: () =>
|
|
3143
|
+
onClick: () => M(!0),
|
|
3097
3144
|
leftSection: /* @__PURE__ */ G(R, {
|
|
3098
3145
|
name: "VscCheck",
|
|
3099
3146
|
size: 14
|
|
@@ -3102,7 +3149,7 @@ var sa = {
|
|
|
3102
3149
|
})]
|
|
3103
3150
|
})]
|
|
3104
3151
|
}),
|
|
3105
|
-
/* @__PURE__ */ K(
|
|
3152
|
+
/* @__PURE__ */ K(Kn, {
|
|
3106
3153
|
opened: C.opened,
|
|
3107
3154
|
onClose: () => k(!1),
|
|
3108
3155
|
title: /* @__PURE__ */ G(X, {
|
|
@@ -3115,7 +3162,7 @@ var sa = {
|
|
|
3115
3162
|
size: "sm",
|
|
3116
3163
|
mb: "md",
|
|
3117
3164
|
children: r("deleteConfirm.message", { name: C.nodeName })
|
|
3118
|
-
}), /* @__PURE__ */ K(
|
|
3165
|
+
}), /* @__PURE__ */ K(Un, {
|
|
3119
3166
|
justify: "flex-end",
|
|
3120
3167
|
children: [/* @__PURE__ */ G(q, {
|
|
3121
3168
|
variant: "default",
|
|
@@ -3139,7 +3186,7 @@ var sa = {
|
|
|
3139
3186
|
})]
|
|
3140
3187
|
})
|
|
3141
3188
|
] });
|
|
3142
|
-
},
|
|
3189
|
+
}, ga = {
|
|
3143
3190
|
overlay: "_overlay_34o9z_1",
|
|
3144
3191
|
content: "_content_34o9z_12",
|
|
3145
3192
|
phoneIcon: "_phoneIcon_34o9z_22",
|
|
@@ -3147,15 +3194,15 @@ var sa = {
|
|
|
3147
3194
|
title: "_title_34o9z_50",
|
|
3148
3195
|
message: "_message_34o9z_54",
|
|
3149
3196
|
button: "_button_34o9z_58"
|
|
3150
|
-
},
|
|
3151
|
-
let { isPortrait: t, shouldShowWarning: n } =
|
|
3197
|
+
}, _a = ({ onDismiss: e }) => {
|
|
3198
|
+
let { isPortrait: t, shouldShowWarning: n } = bn();
|
|
3152
3199
|
return !n || !t ? null : /* @__PURE__ */ G("div", {
|
|
3153
|
-
className:
|
|
3200
|
+
className: ga.overlay,
|
|
3154
3201
|
children: /* @__PURE__ */ K("div", {
|
|
3155
|
-
className:
|
|
3202
|
+
className: ga.content,
|
|
3156
3203
|
children: [
|
|
3157
3204
|
/* @__PURE__ */ G("div", {
|
|
3158
|
-
className:
|
|
3205
|
+
className: ga.phoneIcon,
|
|
3159
3206
|
children: /* @__PURE__ */ K("svg", {
|
|
3160
3207
|
width: "64",
|
|
3161
3208
|
height: "64",
|
|
@@ -3182,35 +3229,35 @@ var sa = {
|
|
|
3182
3229
|
/* @__PURE__ */ G(X, {
|
|
3183
3230
|
size: "lg",
|
|
3184
3231
|
fw: 500,
|
|
3185
|
-
className:
|
|
3232
|
+
className: ga.title,
|
|
3186
3233
|
children: "Turn your device"
|
|
3187
3234
|
}),
|
|
3188
3235
|
/* @__PURE__ */ G(X, {
|
|
3189
3236
|
size: "sm",
|
|
3190
3237
|
c: "dimmed",
|
|
3191
|
-
className:
|
|
3238
|
+
className: ga.message,
|
|
3192
3239
|
children: "For a better experience use this app desktop OR horizontal mode"
|
|
3193
3240
|
}),
|
|
3194
3241
|
/* @__PURE__ */ G(q, {
|
|
3195
3242
|
variant: "subtle",
|
|
3196
3243
|
onClick: e,
|
|
3197
|
-
className:
|
|
3244
|
+
className: ga.button,
|
|
3198
3245
|
children: "Continue vertically?"
|
|
3199
3246
|
})
|
|
3200
3247
|
]
|
|
3201
3248
|
})
|
|
3202
3249
|
});
|
|
3203
|
-
},
|
|
3204
|
-
let
|
|
3250
|
+
}, va = () => typeof window < "u" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light", ya = () => {
|
|
3251
|
+
let t = e((e) => e.applySystemTheme), n = e((e) => e.themeSetManually);
|
|
3205
3252
|
B(() => {
|
|
3206
3253
|
if (typeof window > "u") return;
|
|
3207
|
-
|
|
3208
|
-
let
|
|
3209
|
-
|
|
3254
|
+
n || t(va());
|
|
3255
|
+
let r = window.matchMedia("(prefers-color-scheme: dark)"), i = (n) => {
|
|
3256
|
+
e.getState().themeSetManually || t(n.matches ? "dark" : "light");
|
|
3210
3257
|
};
|
|
3211
|
-
return
|
|
3212
|
-
}, [
|
|
3213
|
-
},
|
|
3258
|
+
return r.addEventListener("change", i), () => r.removeEventListener("change", i);
|
|
3259
|
+
}, [t, n]);
|
|
3260
|
+
}, ba = (e, t) => {
|
|
3214
3261
|
let n = (e) => e.replace(/^v/, "").split(".").map(Number), r = n(e), i = n(t), a = Math.max(r.length, i.length);
|
|
3215
3262
|
for (let e = 0; e < a; e++) {
|
|
3216
3263
|
let t = r[e] ?? 0, n = i[e] ?? 0;
|
|
@@ -3218,14 +3265,14 @@ var sa = {
|
|
|
3218
3265
|
if (t < n) return !1;
|
|
3219
3266
|
}
|
|
3220
3267
|
return !1;
|
|
3221
|
-
},
|
|
3222
|
-
let e = await fetch(
|
|
3268
|
+
}, xa = "frannunpal/frannunpal.github.io", Sa = `https://api.github.com/repos/${xa}/releases/latest`, Ca = async () => {
|
|
3269
|
+
let e = await fetch(Sa);
|
|
3223
3270
|
if (!e.ok) throw Error(`GitHub API error: ${e.status}`);
|
|
3224
3271
|
return e.json();
|
|
3225
|
-
}, Oa = "fde-desktop:version", ka = !1, Aa = () => {
|
|
3226
|
-
let e = P((e) => e.mergeSeed), t = P((e) => e.mergeDesktopApps), n = P((e) => e.reorderDesktopApps), { notify: r } =
|
|
3272
|
+
}, wa = typeof __APP_VERSION__ == "string" ? __APP_VERSION__ : "0.4.0", Ta = () => `${wa}-${typeof __PROD__ == "boolean" && __PROD__ ? "prod" : "dev"}-${typeof window < "u" && window.__FDE_IN_DOCKER__ ? "docker" : "web"}`, Ea = () => typeof __PROD__ == "boolean" && __PROD__ ? "prod" : "dev", Da = () => typeof window > "u" ? "web" : window.__FDE_IN_DOCKER__ ? "docker" : /Electron/i.test(navigator.userAgent) ? "electron" : "web", Oa = "fde-desktop:version", ka = !1, Aa = () => {
|
|
3273
|
+
let e = P((e) => e.mergeSeed), t = P((e) => e.mergeDesktopApps), n = P((e) => e.reorderDesktopApps), { notify: r } = gn();
|
|
3227
3274
|
B(() => {
|
|
3228
|
-
typeof window > "u" || ka || (ka = !0,
|
|
3275
|
+
typeof window > "u" || ka || (ka = !0, Je() ? ja(r) : Ma(e, t, n, r));
|
|
3229
3276
|
}, [
|
|
3230
3277
|
e,
|
|
3231
3278
|
t,
|
|
@@ -3234,8 +3281,8 @@ var sa = {
|
|
|
3234
3281
|
]);
|
|
3235
3282
|
}, ja = async (e) => {
|
|
3236
3283
|
try {
|
|
3237
|
-
let t = await
|
|
3238
|
-
if (!
|
|
3284
|
+
let t = await Ca(), n = t.tag_name;
|
|
3285
|
+
if (!ba(n, wa)) return;
|
|
3239
3286
|
e(`Update ${n} available!`, "Click close to open the download page.", {
|
|
3240
3287
|
fcIcon: "FcEngineering",
|
|
3241
3288
|
onClose: () => window.open(t.html_url, "_blank")
|
|
@@ -3245,11 +3292,11 @@ var sa = {
|
|
|
3245
3292
|
}
|
|
3246
3293
|
}, Ma = async (e, t, n, r) => {
|
|
3247
3294
|
try {
|
|
3248
|
-
let i = localStorage.getItem(Oa), a = i ? JSON.parse(i) : null, o = await fetch(
|
|
3295
|
+
let i = localStorage.getItem(Oa), a = i ? JSON.parse(i) : null, o = await fetch(xt("version.json")).then((e) => e.json());
|
|
3249
3296
|
if (a?.sha === o.sha) return;
|
|
3250
|
-
let s = await
|
|
3297
|
+
let s = await Vt();
|
|
3251
3298
|
if (!s) return;
|
|
3252
|
-
e(s), t(
|
|
3299
|
+
e(s), t(kt), n(kt), localStorage.setItem(Oa, JSON.stringify(o)), r("New version available!", "Close this notification to install it.", {
|
|
3253
3300
|
fcIcon: "FcEngineering",
|
|
3254
3301
|
onClose: () => window.location.reload()
|
|
3255
3302
|
});
|
|
@@ -3257,37 +3304,37 @@ var sa = {
|
|
|
3257
3304
|
ka = !1;
|
|
3258
3305
|
}
|
|
3259
3306
|
}, Na = (e) => `https://fonts.googleapis.com/css2?family=${e.replace(/\s+/g, "+")}&display=swap`, Pa = (e) => {
|
|
3260
|
-
let t =
|
|
3307
|
+
let t = r[e];
|
|
3261
3308
|
if (!t || document.head.querySelector(`link[data-font="${e}"]`)) return;
|
|
3262
3309
|
let n = document.createElement("link");
|
|
3263
3310
|
n.rel = "stylesheet", n.href = t, n.setAttribute("data-font", e), document.head.appendChild(n);
|
|
3264
3311
|
}, Fa = () => {
|
|
3265
|
-
let
|
|
3312
|
+
let t = e((e) => e.font), i = e((e) => e.fontSize), a = e((e) => e.downloadedFonts);
|
|
3266
3313
|
B(() => {
|
|
3267
|
-
|
|
3268
|
-
|
|
3314
|
+
a.forEach((e) => {
|
|
3315
|
+
r[e] || (r[e] = Na(e)), Pa(e);
|
|
3269
3316
|
});
|
|
3270
|
-
}, [
|
|
3271
|
-
let
|
|
3272
|
-
!
|
|
3317
|
+
}, [a]), B(() => {
|
|
3318
|
+
let e = p.map((e) => e.value).includes(t);
|
|
3319
|
+
!e && a.includes(t) && (r[t] || (r[t] = Na(t)), Pa(t));
|
|
3273
3320
|
let o;
|
|
3274
|
-
o =
|
|
3321
|
+
o = e ? n[t] ?? n["system-ui"] : a.includes(t) ? `"${t}", sans-serif` : n["system-ui"], document.documentElement.style.setProperty("font-family", o), document.documentElement.style.setProperty("--mantine-font-family", o), document.documentElement.style.setProperty("font-size", `${i}px`);
|
|
3275
3322
|
}, [
|
|
3276
|
-
e,
|
|
3277
3323
|
t,
|
|
3278
|
-
|
|
3324
|
+
i,
|
|
3325
|
+
a
|
|
3279
3326
|
]);
|
|
3280
3327
|
};
|
|
3281
3328
|
//#endregion
|
|
3282
3329
|
//#region src/hooks/useLanguageSync.ts
|
|
3283
3330
|
function Ia() {
|
|
3284
|
-
let { i18n:
|
|
3331
|
+
let { i18n: t } = Z(), n = e((e) => e.language);
|
|
3285
3332
|
B(() => {
|
|
3286
|
-
|
|
3287
|
-
}, [
|
|
3333
|
+
n && t.language !== n && (t.changeLanguage(n), localStorage.setItem("fde-desktop:language", n));
|
|
3334
|
+
}, [n, t]), B(() => {
|
|
3288
3335
|
let e = localStorage.getItem("fde-desktop:language");
|
|
3289
|
-
|
|
3290
|
-
}, [
|
|
3336
|
+
n && !e && localStorage.setItem("fde-desktop:language", n);
|
|
3337
|
+
}, [n]);
|
|
3291
3338
|
}
|
|
3292
3339
|
//#endregion
|
|
3293
3340
|
//#region src/infrastructure/Migration/migrateStorage.ts
|
|
@@ -3446,7 +3493,7 @@ function io() {
|
|
|
3446
3493
|
}
|
|
3447
3494
|
Qa = {
|
|
3448
3495
|
openApp: (e, t) => {
|
|
3449
|
-
let n = P.getState().openWindow, r =
|
|
3496
|
+
let n = P.getState().openWindow, r = ht.find((t) => t.id === e);
|
|
3450
3497
|
n({
|
|
3451
3498
|
content: e,
|
|
3452
3499
|
title: t?.title ?? r?.name ?? e,
|
|
@@ -3507,13 +3554,13 @@ function io() {
|
|
|
3507
3554
|
openFileDialog: async () => (console.warn("[FdeApi] openFileDialog not yet implemented"), null),
|
|
3508
3555
|
saveFile: async () => (console.warn("[FdeApi] saveFile not yet implemented"), !1),
|
|
3509
3556
|
saveFileDialog: async () => (console.warn("[FdeApi] saveFileDialog not yet implemented"), null),
|
|
3510
|
-
getTheme: () =>
|
|
3511
|
-
setTheme: (
|
|
3512
|
-
let
|
|
3513
|
-
|
|
3557
|
+
getTheme: () => e.getState().theme,
|
|
3558
|
+
setTheme: (t) => {
|
|
3559
|
+
let n = t;
|
|
3560
|
+
n.taskbar && n.window && n.accent && (e.getState().setCustomThemeColors(n), to("theme-changed", { theme: JSON.stringify(t) }));
|
|
3514
3561
|
},
|
|
3515
3562
|
showNotification: (e) => {
|
|
3516
|
-
let t =
|
|
3563
|
+
let t = Nt();
|
|
3517
3564
|
return P.getState().addNotification({
|
|
3518
3565
|
id: t,
|
|
3519
3566
|
title: e.title,
|
|
@@ -3554,82 +3601,83 @@ function oo() {
|
|
|
3554
3601
|
}
|
|
3555
3602
|
//#endregion
|
|
3556
3603
|
//#region src/components/FdeDesktop/FdeDesktop.tsx
|
|
3557
|
-
var so = new
|
|
3604
|
+
var so = new tr({ defaultOptions: { queries: {
|
|
3558
3605
|
staleTime: Infinity,
|
|
3559
3606
|
gcTime: Infinity
|
|
3560
3607
|
} } }), co = !1;
|
|
3561
|
-
function lo({ defaultWallpaper:
|
|
3562
|
-
let
|
|
3563
|
-
|
|
3608
|
+
function lo({ defaultWallpaper: t, initialApp: n, prefetchLoaders: r }) {
|
|
3609
|
+
let i = e((e) => e.wallpaper), a = e((e) => e.wallpaperModule), o = T(i ?? void 0), s = a === "gradient" ? i ?? void 0 : o ?? t ?? C, c = P((e) => e.windows), l = P((e) => e.icons), u = P((e) => e.initFs), d = P((e) => e.isFsReady), f = P((e) => e.fsNodes), p = P((e) => e.openContextMenu), m = P((e) => e.filesCurrentFolderId), h = P((e) => e.desktopFolderId), g = Ae(), { shouldShowWarning: _ } = bn(), { notify: v } = gn(), [y, b] = U(!1);
|
|
3610
|
+
ya(), Aa(), Fa(), Ia(), ta(), B(() => {
|
|
3564
3611
|
oo() || io();
|
|
3565
3612
|
}, []), B(() => {
|
|
3566
|
-
if (!
|
|
3613
|
+
if (!d) return;
|
|
3567
3614
|
let e = document.getElementById("initial-loader");
|
|
3568
3615
|
e && (e.classList.add("hidden"), setTimeout(() => e.remove(), 200));
|
|
3569
|
-
}, [
|
|
3570
|
-
if (!
|
|
3616
|
+
}, [d]), B(() => {
|
|
3617
|
+
if (!r?.length) return;
|
|
3571
3618
|
let e = setTimeout(() => {
|
|
3572
|
-
Za(
|
|
3619
|
+
Za(r);
|
|
3573
3620
|
}, 3e3);
|
|
3574
3621
|
return () => clearTimeout(e);
|
|
3575
|
-
}, [
|
|
3622
|
+
}, [r]), B(() => {
|
|
3576
3623
|
co || (co = !0, Ga().finally(() => {
|
|
3577
|
-
|
|
3624
|
+
u(), n && g(n);
|
|
3578
3625
|
}));
|
|
3579
3626
|
}, [
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3627
|
+
u,
|
|
3628
|
+
g,
|
|
3629
|
+
n
|
|
3583
3630
|
]);
|
|
3584
|
-
let
|
|
3585
|
-
e.preventDefault(),
|
|
3586
|
-
}, [
|
|
3587
|
-
e.preventDefault(), e.stopPropagation(),
|
|
3588
|
-
}, [
|
|
3631
|
+
let x = z((e) => {
|
|
3632
|
+
e.preventDefault(), p(e.clientX, e.clientY, "desktop");
|
|
3633
|
+
}, [p]), S = z((e, t) => {
|
|
3634
|
+
e.preventDefault(), e.stopPropagation(), p(e.clientX, e.clientY, "desktop", t);
|
|
3635
|
+
}, [p]), w = z((e, t) => {
|
|
3589
3636
|
let n;
|
|
3590
3637
|
if (t) {
|
|
3591
|
-
let r =
|
|
3638
|
+
let r = f.find((e) => e.id === t);
|
|
3592
3639
|
if (r?.type === "folder") n = { initialFolderId: t };
|
|
3593
3640
|
else if (r?.type === "file") {
|
|
3594
|
-
let t =
|
|
3641
|
+
let t = Kt(r);
|
|
3595
3642
|
if (!t) {
|
|
3596
|
-
|
|
3643
|
+
v("Unsupported file type", "The type of file you are trying to open is not supported currently", { fcIcon: "FcDeleteRow" });
|
|
3597
3644
|
return;
|
|
3598
3645
|
}
|
|
3599
|
-
t.appId !== e &&
|
|
3646
|
+
t.appId !== e && v("File type mismatch", `Opening "${r.name}" as ${t.appId} instead of ${e}`, { fcIcon: "FcDeleteRow" }), g(t.appId, { contentData: t.contentData });
|
|
3600
3647
|
return;
|
|
3601
3648
|
}
|
|
3602
3649
|
}
|
|
3603
|
-
|
|
3650
|
+
g(e, { contentData: n });
|
|
3604
3651
|
}, [
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3652
|
+
g,
|
|
3653
|
+
f,
|
|
3654
|
+
v
|
|
3608
3655
|
]);
|
|
3609
|
-
return
|
|
3610
|
-
|
|
3611
|
-
/* @__PURE__ */ K(
|
|
3612
|
-
wallpaper:
|
|
3613
|
-
|
|
3614
|
-
|
|
3656
|
+
return d ? /* @__PURE__ */ K(W, { children: [
|
|
3657
|
+
_ && !y && /* @__PURE__ */ G(_a, { onDismiss: () => b(!0) }),
|
|
3658
|
+
/* @__PURE__ */ K(Pr, {
|
|
3659
|
+
wallpaper: s,
|
|
3660
|
+
wallpaperModule: a,
|
|
3661
|
+
onContextMenu: x,
|
|
3662
|
+
children: [l.map((e) => /* @__PURE__ */ G(pa, {
|
|
3615
3663
|
icon: e,
|
|
3616
|
-
onDoubleClick:
|
|
3617
|
-
onContextMenu:
|
|
3618
|
-
}, e.id)), /* @__PURE__ */ G(
|
|
3664
|
+
onDoubleClick: w,
|
|
3665
|
+
onContextMenu: S
|
|
3666
|
+
}, e.id)), /* @__PURE__ */ G(ir, { children: c.map((e) => /* @__PURE__ */ G(da, { window: e }, e.id)) })]
|
|
3619
3667
|
}),
|
|
3620
|
-
/* @__PURE__ */ G(
|
|
3621
|
-
/* @__PURE__ */ G(
|
|
3668
|
+
/* @__PURE__ */ G(Oi, {}),
|
|
3669
|
+
/* @__PURE__ */ G(ha, {
|
|
3622
3670
|
owner: "desktop",
|
|
3623
|
-
parentId:
|
|
3671
|
+
parentId: h,
|
|
3624
3672
|
currentPath: "/home"
|
|
3625
3673
|
}),
|
|
3626
|
-
/* @__PURE__ */ G(
|
|
3674
|
+
/* @__PURE__ */ G(ha, {
|
|
3627
3675
|
owner: "files",
|
|
3628
|
-
parentId:
|
|
3676
|
+
parentId: m,
|
|
3629
3677
|
currentPath: (() => {
|
|
3630
|
-
let e = ["/home"], t =
|
|
3678
|
+
let e = ["/home"], t = m, n = [];
|
|
3631
3679
|
for (; t !== null;) {
|
|
3632
|
-
let e =
|
|
3680
|
+
let e = f.find((e) => e.id === t);
|
|
3633
3681
|
if (!e) break;
|
|
3634
3682
|
n.unshift(e.name), t = e.parentId;
|
|
3635
3683
|
}
|
|
@@ -3638,40 +3686,40 @@ function lo({ defaultWallpaper: e, initialApp: t, prefetchLoaders: n }) {
|
|
|
3638
3686
|
})
|
|
3639
3687
|
] }) : null;
|
|
3640
3688
|
}
|
|
3641
|
-
function uo({ children:
|
|
3642
|
-
let s =
|
|
3689
|
+
function uo({ children: t, isReady: n, error: r, defaultWallpaper: i, initialApp: a, prefetchLoaders: o }) {
|
|
3690
|
+
let s = Sr(), c = e((e) => e.setThemeMode), l = e((e) => e.toggleTheme), u = V(() => ({
|
|
3643
3691
|
fs: null,
|
|
3644
|
-
isReady:
|
|
3645
|
-
error:
|
|
3692
|
+
isReady: n,
|
|
3693
|
+
error: r,
|
|
3646
3694
|
theme: s,
|
|
3647
3695
|
setThemeMode: c,
|
|
3648
3696
|
toggleTheme: l
|
|
3649
3697
|
}), [
|
|
3650
|
-
t,
|
|
3651
3698
|
n,
|
|
3699
|
+
r,
|
|
3652
3700
|
s,
|
|
3653
3701
|
c,
|
|
3654
3702
|
l
|
|
3655
3703
|
]);
|
|
3656
|
-
return
|
|
3704
|
+
return t ? /* @__PURE__ */ G(jr, { children: /* @__PURE__ */ G(Tr.Provider, {
|
|
3657
3705
|
value: u,
|
|
3658
|
-
children:
|
|
3659
|
-
}) }) : /* @__PURE__ */ G(
|
|
3706
|
+
children: t
|
|
3707
|
+
}) }) : /* @__PURE__ */ G(jr, { children: /* @__PURE__ */ G(Tr.Provider, {
|
|
3660
3708
|
value: u,
|
|
3661
3709
|
children: /* @__PURE__ */ G(lo, {
|
|
3662
|
-
defaultWallpaper:
|
|
3663
|
-
initialApp:
|
|
3710
|
+
defaultWallpaper: i,
|
|
3711
|
+
initialApp: a,
|
|
3664
3712
|
prefetchLoaders: o
|
|
3665
3713
|
})
|
|
3666
3714
|
}) });
|
|
3667
3715
|
}
|
|
3668
|
-
function fo({ children:
|
|
3669
|
-
let [m, h] = U(!1), [g, _] = U(null), v =
|
|
3716
|
+
function fo({ children: t, fallback: n = null, theme: r, mantineTheme: i, fileSystem: a, initialMode: o, customApps: s, appEntries: c, onError: l, defaultWallpaper: u, initialApp: d, prefetchLoaders: f, queryClient: p = so }) {
|
|
3717
|
+
let [m, h] = U(!1), [g, _] = U(null), v = e((e) => e.theme.mode), [y] = U(o), b = y ?? v;
|
|
3670
3718
|
B(() => {
|
|
3671
3719
|
let e = !0;
|
|
3672
3720
|
return (async () => {
|
|
3673
3721
|
try {
|
|
3674
|
-
if (
|
|
3722
|
+
if (le(), c && Wt(c), s) {
|
|
3675
3723
|
let e = { ...s };
|
|
3676
3724
|
if (c) for (let t of c) {
|
|
3677
3725
|
let n = e[t.id];
|
|
@@ -3691,17 +3739,17 @@ function fo({ children: e, fallback: t = null, theme: n, mantineTheme: r, fileSy
|
|
|
3691
3739
|
iconColor: n.iconColor ?? t.iconColor
|
|
3692
3740
|
});
|
|
3693
3741
|
}
|
|
3694
|
-
|
|
3742
|
+
ae(e);
|
|
3695
3743
|
}
|
|
3696
3744
|
} catch (e) {
|
|
3697
3745
|
console.error("[FdeDesktop] Failed to initialize core registry:", e);
|
|
3698
3746
|
}
|
|
3699
|
-
if (!
|
|
3747
|
+
if (!a) {
|
|
3700
3748
|
e && h(!0);
|
|
3701
3749
|
return;
|
|
3702
3750
|
}
|
|
3703
3751
|
try {
|
|
3704
|
-
await
|
|
3752
|
+
await a.initialize(), e && h(!0);
|
|
3705
3753
|
} catch (t) {
|
|
3706
3754
|
let n = t instanceof Error ? t : Error(String(t));
|
|
3707
3755
|
e && (_(n), l?.(n));
|
|
@@ -3710,30 +3758,30 @@ function fo({ children: e, fallback: t = null, theme: n, mantineTheme: r, fileSy
|
|
|
3710
3758
|
e = !1;
|
|
3711
3759
|
};
|
|
3712
3760
|
}, [
|
|
3713
|
-
|
|
3761
|
+
a,
|
|
3714
3762
|
c,
|
|
3715
3763
|
s,
|
|
3716
3764
|
l
|
|
3717
3765
|
]);
|
|
3718
|
-
let x = V(() =>
|
|
3719
|
-
...
|
|
3720
|
-
...
|
|
3721
|
-
}), [
|
|
3722
|
-
return g || !m ? /* @__PURE__ */ G(W, { children:
|
|
3766
|
+
let x = V(() => Qn({
|
|
3767
|
+
...wr,
|
|
3768
|
+
...i
|
|
3769
|
+
}), [i]);
|
|
3770
|
+
return g || !m ? /* @__PURE__ */ G(W, { children: n }) : /* @__PURE__ */ G(nr, {
|
|
3723
3771
|
client: p,
|
|
3724
|
-
children: /* @__PURE__ */ G(
|
|
3772
|
+
children: /* @__PURE__ */ G(Gn, {
|
|
3725
3773
|
theme: x,
|
|
3726
3774
|
forceColorScheme: b,
|
|
3727
|
-
children: /* @__PURE__ */ G(
|
|
3775
|
+
children: /* @__PURE__ */ G(xr, {
|
|
3728
3776
|
mode: b,
|
|
3729
|
-
theme:
|
|
3777
|
+
theme: r,
|
|
3730
3778
|
children: /* @__PURE__ */ G(uo, {
|
|
3731
3779
|
isReady: m,
|
|
3732
3780
|
error: g,
|
|
3733
3781
|
defaultWallpaper: u,
|
|
3734
3782
|
initialApp: d,
|
|
3735
3783
|
prefetchLoaders: f,
|
|
3736
|
-
children:
|
|
3784
|
+
children: t
|
|
3737
3785
|
})
|
|
3738
3786
|
})
|
|
3739
3787
|
})
|
|
@@ -3745,14 +3793,14 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
|
|
|
3745
3793
|
windowId: t,
|
|
3746
3794
|
contentData: n,
|
|
3747
3795
|
onExit: r
|
|
3748
|
-
}) : null, mo =
|
|
3796
|
+
}) : null, mo = ht.filter((e) => e.id !== "settings"), ho = ({ opened: e, position: t, onClose: n, onOpenApp: r, onToggleTheme: i }) => /* @__PURE__ */ K(J, {
|
|
3749
3797
|
opened: e,
|
|
3750
3798
|
onClose: n,
|
|
3751
3799
|
closeOnClickOutside: !0,
|
|
3752
3800
|
closeOnEscape: !0,
|
|
3753
3801
|
closeOnItemClick: !0,
|
|
3754
3802
|
withinPortal: !0,
|
|
3755
|
-
children: [/* @__PURE__ */ G(
|
|
3803
|
+
children: [/* @__PURE__ */ G(ma, {
|
|
3756
3804
|
x: t.x,
|
|
3757
3805
|
y: t.y
|
|
3758
3806
|
}), /* @__PURE__ */ K(J.Dropdown, { children: [
|
|
@@ -3774,7 +3822,7 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
|
|
|
3774
3822
|
}), yo = {
|
|
3775
3823
|
scrollback: 5e3,
|
|
3776
3824
|
shell: "/bin/zsh"
|
|
3777
|
-
}, bo =
|
|
3825
|
+
}, bo = rr((e, t) => ({
|
|
3778
3826
|
states: {},
|
|
3779
3827
|
getScrollback: (e) => t().states[e]?.scrollback ?? yo.scrollback,
|
|
3780
3828
|
getShell: (e) => t().states[e]?.shell ?? yo.shell,
|
|
@@ -3875,7 +3923,7 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
|
|
|
3875
3923
|
}, [x]);
|
|
3876
3924
|
B(() => {
|
|
3877
3925
|
if (m.current || (m.current = !0, u.current = !0, !i.current)) return;
|
|
3878
|
-
let e = new
|
|
3926
|
+
let e = new mr({
|
|
3879
3927
|
fontFamily: "'Operator Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace",
|
|
3880
3928
|
fontSize: 14,
|
|
3881
3929
|
theme: {
|
|
@@ -3887,7 +3935,7 @@ var po = ({ component: e, windowId: t, contentData: n, onExit: r }) => e ? /* @_
|
|
|
3887
3935
|
cursorStyle: "underline",
|
|
3888
3936
|
cursorBlink: !0,
|
|
3889
3937
|
scrollback: t
|
|
3890
|
-
}), n = new
|
|
3938
|
+
}), n = new hr(), r = new gr();
|
|
3891
3939
|
return e.loadAddon(n), e.loadAddon(r), e.open(i.current), n.fit(), a.current = e, o.current = n, s.current = r, e.onData((e) => {
|
|
3892
3940
|
c.current?.readyState === WebSocket.OPEN && c.current.send(JSON.stringify({
|
|
3893
3941
|
type: "input",
|
|
@@ -4008,13 +4056,13 @@ function Do(e) {
|
|
|
4008
4056
|
//#region src/components/Apps/TerminalApp/TerminalNotSupported.tsx
|
|
4009
4057
|
var Oo = () => {
|
|
4010
4058
|
let { t: e } = Z("apps");
|
|
4011
|
-
return /* @__PURE__ */ G(
|
|
4059
|
+
return /* @__PURE__ */ G(Hn, {
|
|
4012
4060
|
"data-testid": "terminal-not-supported",
|
|
4013
4061
|
style: {
|
|
4014
4062
|
width: "100%",
|
|
4015
4063
|
height: "100%"
|
|
4016
4064
|
},
|
|
4017
|
-
children: /* @__PURE__ */ K(
|
|
4065
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
4018
4066
|
align: "center",
|
|
4019
4067
|
gap: "lg",
|
|
4020
4068
|
p: "xl",
|
|
@@ -4022,7 +4070,7 @@ var Oo = () => {
|
|
|
4022
4070
|
children: [
|
|
4023
4071
|
/* @__PURE__ */ G(X, {
|
|
4024
4072
|
size: "3rem",
|
|
4025
|
-
children: /* @__PURE__ */ G(
|
|
4073
|
+
children: /* @__PURE__ */ G(pr, {})
|
|
4026
4074
|
}),
|
|
4027
4075
|
/* @__PURE__ */ G(X, {
|
|
4028
4076
|
size: "lg",
|
|
@@ -4046,7 +4094,7 @@ var Oo = () => {
|
|
|
4046
4094
|
})
|
|
4047
4095
|
});
|
|
4048
4096
|
}, ko = ({ window: e, notifyReady: t }) => {
|
|
4049
|
-
let n = e, r = n?.id ?? "", i =
|
|
4097
|
+
let n = e, r = n?.id ?? "", i = Ge(), a = xo(r), o = So(r), { setScrollback: s, setShell: c, reset: l } = bo(), u = H(null), d = H(!1), f = H(!1), [p, m] = U("idle"), [h, g] = U(null);
|
|
4050
4098
|
B(() => {
|
|
4051
4099
|
i !== "docker" || f.current || (f.current = !0, (async () => {
|
|
4052
4100
|
try {
|
|
@@ -4108,13 +4156,13 @@ var Oo = () => {
|
|
|
4108
4156
|
}) : /* @__PURE__ */ G(Oo, {});
|
|
4109
4157
|
}, Ao = () => {
|
|
4110
4158
|
let { t: e } = Z("apps");
|
|
4111
|
-
return /* @__PURE__ */ G(
|
|
4159
|
+
return /* @__PURE__ */ G(Hn, {
|
|
4112
4160
|
"data-testid": "code-server-not-supported",
|
|
4113
4161
|
style: {
|
|
4114
4162
|
width: "100%",
|
|
4115
4163
|
height: "100%"
|
|
4116
4164
|
},
|
|
4117
|
-
children: /* @__PURE__ */ K(
|
|
4165
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
4118
4166
|
align: "center",
|
|
4119
4167
|
gap: "lg",
|
|
4120
4168
|
p: "xl",
|
|
@@ -4122,7 +4170,7 @@ var Oo = () => {
|
|
|
4122
4170
|
children: [
|
|
4123
4171
|
/* @__PURE__ */ G(X, {
|
|
4124
4172
|
size: "3rem",
|
|
4125
|
-
children: /* @__PURE__ */ G(
|
|
4173
|
+
children: /* @__PURE__ */ G(pr, {})
|
|
4126
4174
|
}),
|
|
4127
4175
|
/* @__PURE__ */ G(X, {
|
|
4128
4176
|
size: "lg",
|
|
@@ -4244,7 +4292,7 @@ var Oo = () => {
|
|
|
4244
4292
|
allow: "clipboard-read; clipboard-write"
|
|
4245
4293
|
})
|
|
4246
4294
|
});
|
|
4247
|
-
}, No = (e) =>
|
|
4295
|
+
}, No = (e) => We() ? /* @__PURE__ */ G(Mo, { ...e }) : /* @__PURE__ */ G(Ao, {}), Po = [{
|
|
4248
4296
|
value: "/bin/sh",
|
|
4249
4297
|
label: "sh"
|
|
4250
4298
|
}, {
|
|
@@ -4337,7 +4385,7 @@ function Fo(e) {
|
|
|
4337
4385
|
}
|
|
4338
4386
|
//#endregion
|
|
4339
4387
|
//#region src/components/Apps/TerminalApp/TerminalMenuBar.tsx
|
|
4340
|
-
var Io =
|
|
4388
|
+
var Io = Ln(({ windowId: e, contentData: t, onExit: n }) => /* @__PURE__ */ G(hn, { elements: Fo({
|
|
4341
4389
|
windowId: e,
|
|
4342
4390
|
onExit: n,
|
|
4343
4391
|
clear: t?.clear,
|
|
@@ -4364,16 +4412,16 @@ var Lo = { container: "_container_1br66_1" }, Ro = ({ notifyReady: e, window: t,
|
|
|
4364
4412
|
]);
|
|
4365
4413
|
let a = () => {
|
|
4366
4414
|
globalThis.window.open(n.url, "_blank", "noopener,noreferrer");
|
|
4367
|
-
}, o =
|
|
4415
|
+
}, o = Qt(n.icon, {
|
|
4368
4416
|
size: 48,
|
|
4369
4417
|
color: n.iconColor
|
|
4370
|
-
}), s =
|
|
4418
|
+
}), s = Qt(n.icon, {
|
|
4371
4419
|
size: 16,
|
|
4372
4420
|
color: n.iconColor
|
|
4373
4421
|
});
|
|
4374
|
-
return /* @__PURE__ */ G(
|
|
4422
|
+
return /* @__PURE__ */ G(Hn, {
|
|
4375
4423
|
className: Lo.container,
|
|
4376
|
-
children: /* @__PURE__ */ K(
|
|
4424
|
+
children: /* @__PURE__ */ K(Yn, {
|
|
4377
4425
|
align: "center",
|
|
4378
4426
|
gap: "md",
|
|
4379
4427
|
children: [
|
|
@@ -4412,7 +4460,7 @@ var Lo = { container: "_container_1br66_1" }, Ro = ({ notifyReady: e, window: t,
|
|
|
4412
4460
|
opened: n,
|
|
4413
4461
|
position: i,
|
|
4414
4462
|
open: z((n, i) => {
|
|
4415
|
-
if (n.preventDefault(), t && !
|
|
4463
|
+
if (n.preventDefault(), t && !ht.find((e) => e.id === t)?.hasContextMenu) {
|
|
4416
4464
|
n.stopPropagation();
|
|
4417
4465
|
return;
|
|
4418
4466
|
}
|
|
@@ -4433,7 +4481,7 @@ function Bo({ snapshotRef: e, getCurrentState: t, initialSnapshot: n, onChange:
|
|
|
4433
4481
|
}, [r]), B(() => {
|
|
4434
4482
|
if (e.current === null) {
|
|
4435
4483
|
if (i) {
|
|
4436
|
-
let t =
|
|
4484
|
+
let t = jn.getState().getSnapshot(i);
|
|
4437
4485
|
if (t !== null) {
|
|
4438
4486
|
e.current = t;
|
|
4439
4487
|
return;
|
|
@@ -4454,7 +4502,7 @@ function Bo({ snapshotRef: e, getCurrentState: t, initialSnapshot: n, onChange:
|
|
|
4454
4502
|
isDirty: a,
|
|
4455
4503
|
takeSnapshot: z(() => {
|
|
4456
4504
|
let n = t();
|
|
4457
|
-
e.current = n, o(!1), i &&
|
|
4505
|
+
e.current = n, o(!1), i && jn.getState().setSnapshot(i, n), s.current && s.current(!1);
|
|
4458
4506
|
}, [
|
|
4459
4507
|
e,
|
|
4460
4508
|
t,
|
|
@@ -4558,7 +4606,7 @@ var Ho = {
|
|
|
4558
4606
|
window: "#25262b",
|
|
4559
4607
|
accent: "#4dabf7"
|
|
4560
4608
|
}
|
|
4561
|
-
}, Go =
|
|
4609
|
+
}, Go = (e) => ({
|
|
4562
4610
|
primaryColor: "blue",
|
|
4563
4611
|
other: {
|
|
4564
4612
|
desktop: e.desktop,
|
|
@@ -4568,4 +4616,4 @@ var Ho = {
|
|
|
4568
4616
|
}
|
|
4569
4617
|
});
|
|
4570
4618
|
//#endregion
|
|
4571
|
-
export {
|
|
4619
|
+
export { Te as ANIMATION_DURATION, ht as APPS, Q as APP_IDS, Vr as APP_ID_TO_TRANSLATION_KEY, wa as APP_VERSION, p as AVAILABLE_FONTS, Sn as AppEmptyState, L as AppIcon, ki as AppLoading, hn as AppMenuBar, ca as AppReadyProvider, Pt as BREAKPOINTS, bt as CORE_APPS, Ft as CORE_APP_IDS, me as CORE_REGISTRY, Jt as CUSTOM_APPS_FOLDER_ID, jt as CalendarApp, Se as CalendarAppLazy, No as CodeServerApp, qr as CollapsibleSection, wn as ColorPicker, ho as ContextMenu, $r as ContextMenuAnchor, D as CreateItemAppLazy, ha as CreateItemContextMenu, aa as CustomAppLoader, Ai as CustomAppLoadingScreen, Mi as CustomAppNotSupported, ji as CustomAppOffline, br as DEFAULT_FDE_THEME, x as DEFAULT_GRADIENT_CSS, f as DEFAULT_LANGUAGE, ze as DEFAULT_LAUNCHER_FOLDERS, Wo as DEFAULT_THEME_COLORS, zt as DEFAULT_VIEWPORT_HEIGHT, mt as DEFAULT_VIEWPORT_WIDTH, C as DEFAULT_WALLPAPER_URL, Ct as DEFAULT_WINDOW_DIMENSIONS, Hr as DESKTOP_APPS, kt as DESKTOP_APPS_ORDER, m as DefaultThemeProvider, Pr as Desktop, pa as DesktopIcon, xe as DeviceInfoAppLazy, mn as DirtyIndicator, It as DockerFileSystemAdapter, Tn as DownloadProgress, on as DragDropProvider, po as DynamicMenuBarRenderer, Oe as EASE_IN, be as EASE_OUT, Ro as ExternalLinkApp, n as FONT_STACKS, fo as FdeDesktop, Or as FdeProvider, _n as FileIcon, On as FilePickerApp, Dn as FilePickerModal, ie as FilesAppLazy, En as FolderPicker, Sa as GITHUB_LATEST_RELEASE_URL, xa as GITHUB_RELEASES_REPO, r as GOOGLE_FONTS_HREF, y as GRADIENT_PRESETS, Ot as ICON_COLUMN_WIDTH, Ut as ICON_MARGIN, gt as ICON_ROW_HEIGHT, qt as IMAGE_MIME_TYPES, An as IconColorPicker, M as ImageViewerAppLazy, oe as ImageViewerMenuBarLazy, ct as IndexedDBFileSystem, l as LanguageFlag, Ei as LanguageSelector, Qr as Launcher, A as MenuEditAppLazy, ne as MenuEditMenuBarLazy, re as NotesAppLazy, se as NotesMenuBarLazy, at as PREDEFINED_LAUNCHER_FOLDERS, Cn as PRESET_COLORS, kn as PRESET_ICONS, u as PROFILE, Ie as PdfAppLazy, ee as PdfMenuBarLazy, er as QueryClient, a as SETTINGS_SECTIONS, h as SUNSET_CONFIG, s as SUPPORTED_LANGUAGES, de as SettingsAppLazy, j as SettingsMenuBarLazy, d as SettingsSectionComponent, Be as SortOptions, vo as StorybookApp, yt as TASKBAR_HEIGHT, pt as TEXT_MIME_TYPES, Oi as Taskbar, ri as TaskbarContextMenu, ko as TerminalApp, Io as TerminalMenuBar, xr as ThemeProvider, ue as UploaderAppLazy, R as VscIcon, da as Window, jr as WindowButtonRegistryProvider, et as WindowManagerAdapter, Mn as appendDirtyIndicator, yn as buildBreadcrumbs, g as buildGradientCSS, pe as centerWindowPosition, qi as checkHMREndpointExists, i as clearBrowserData, Qe as clearManifestCache, Dt as convertToAppEntry, Tt as createDesktopIcon, Ee as createEaseIn, ke as createEaseOut, Le as createFile, vt as createFolder, Ht as createLauncherFolder, he as createMaximizeTransition, Ce as createMinimizeVariant, S as createNoiseDataUrl, je as createPanelVariants, Mt as createPredefinedLauncherFolder, ge as createRestoreVariant, ft as createWindow, _e as createWindowVariants, Re as fetchAppManifest, N as fileSystem, Nn as formatBytes, Nt as generateUUID, Pe as getAppComponent, Kt as getAppIdForMime, ce as getAppName, At as getBaseUrl, Et as getCachedManifest, pn as getCloseInterceptor, Xe as getCustomAppById, Ze as getCustomApps, Ea as getEnvironment, ao as getFdeApi, vn as getFileExtension, xn as getFourRandomColors, O as getMenuBarBuilder, Ne as getMenuBarComponent, lt as getMimeTypeFromExtension, o as getPersistedThemeMode, w as getPresets, Da as getReleaseType, Ge as getRuntime, Ta as getVersionString, b as getWallpaperBackgroundStyle, st as hashBlob, Ci as i18n, te as initRegistry, io as initializeFdeApi, c as injectFontLink, it as isBrowser, E as isCSSGradient, $e as isCustomApp, ot as isDev, We as isDocker, Je as isElectron, oo as isFdeApiInitialized, k as isLazyApp, ba as isNewerVersion, De as maximizeTransition, Ue as mergeAppsWithCustomApps, Ga as migrateStorage, we as minimizeVariant, ye as openVariants, ve as panelVariants, _ as parseGradientCSS, Za as prefetchApps, fe as randomWindowPosition, nt as registerAppFileHandler, dn as registerCloseInterceptor, ae as registerComponents, Wt as registerCustomApps, _t as registerDesktopApps, Ke as removeFromManifestCache, St as resetBaseUrlCache, Lt as resetFileSystem, Vi as resetHMRState, wt as resetWindowManager, dt as resolveFileUrl, xt as resolveUrl, Me as restoreVariant, qe as setApiBaseUrl, ut as setTestBaseUrl, Gt as sortDesktopIcons, rt as sortDesktopIconsByMode, He as sortNodes, Ve as sortNodesByMode, Ye as syncWithServer, Go as toMantineTheme, fn as unregisterCloseInterceptor, Rt as updateLauncherFolder, tt as updateManifestCache, nn as useAdaptiveDimensions, Br as useAnimationDuration, Ur as useAppName, sa as useAppReady, jn as useAppTempMemoryStore, Aa as useAppUpdate, Fa as useApplyFont, Ir as useClock, un as useCloseInterceptor, ln as useCloseModalStore, Gr as useCollapsible, zo as useContextMenu, ea as useCustomAppHMR, ta as useCustomAppLifecycle, F as useCustomAppStore, P as useDesktopStore, bn as useDeviceDetection, Uo as useDownload, sn as useDragDropState, rn as useDraggableItem, an as useDroppableArea, tn as useDynamicIcon, Zt as useDynamicIconElement, $t as useFcIcon, I as useFcIconElement, Vo as useFdeApi, kr as useFdeContext, Yt as useFiIcon, Qt as useFiIconElement, cn as useFolderName, t as useFontDownload, Bo as useIsDirty, Ia as useLanguageSync, gn as useNotifications, Ae as useOpenApp, T as useResolvedUrl, Wr as useSearchFilter, e as useSettingsStore, ya as useSystemTheme, zr as useTaskbarContextMenu, ei as useTaskbarHeight, Sr as useTheme, Cr as useThemeContext, en as useVscIcon, Xt as useVscIconElement, Mr as useWindowButtonRegistry, Bt as uuidv4, v as validateGradientConfig, na as waitForContainer, Fe as windowVariants };
|