@fde-desktop/fde-core 0.4.9 → 0.4.10
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/{AccordionChevron-DxpOyInK.js → AccordionChevron-CJXAq5o5.js} +1 -1
- package/dist/AccordionChevron-DBXp38Lm.cjs +1 -0
- package/dist/ActionIcon-C_SfdBfx.cjs +1 -0
- package/dist/{ActionIcon-Drh4p6Fv.js → ActionIcon-CtVbYlGY.js} +32 -32
- package/dist/AppEmptyState-BTujnL_b.js +4962 -0
- package/dist/AppEmptyState-Dc4GaDfu.cjs +1 -0
- package/dist/AppIcon--qzR4sgf.cjs +1 -0
- package/dist/{AppIcon-XumS3bIG.js → AppIcon-DCDuaU-t.js} +4 -4
- package/dist/AppMenuBar-BiHbNg9V.cjs +9 -0
- package/dist/AppMenuBar-CHJy8OF0.js +2639 -0
- package/dist/{Box-DSKR_qaa.js → Box-DRm8EabO.js} +271 -257
- package/dist/Box-D_64wv6n.cjs +1 -0
- package/dist/Button-D0FXpkur.cjs +1 -0
- package/dist/{Button-wTOTQKxF.js → Button-k7SxX1Xl.js} +38 -38
- package/dist/CalendarApp-C1HvuJoa.cjs +1 -0
- package/dist/CalendarApp-DBEQqsS_.js +1721 -0
- package/dist/{Center-CmxXB9ql.js → Center-CyryG5zn.js} +1 -1
- package/dist/Center-T4No_FAa.cjs +1 -0
- package/dist/{CheckIcon-N5qBqXQJ.js → CheckIcon-C3WjIR2i.js} +1 -1
- package/dist/CheckIcon-CBMLR6Gc.cjs +1 -0
- package/dist/CodeServerApp-B3l5QPuG.cjs +1 -0
- package/dist/CodeServerApp-BpeALSaX.js +2 -0
- package/dist/CodeServerApp-CRjCngFv.cjs +1 -0
- package/dist/{CodeServerApp-DW18EZxa.js → CodeServerApp-DY94cy1a.js} +47 -48
- package/dist/ColorPicker-BL4UbKCV.cjs +1 -0
- package/dist/{ColorPicker-BCNqi02x.js → ColorPicker-DvRR-wlQ.js} +364 -364
- package/dist/CreateItemApp-BU9wmjKM.cjs +1 -0
- package/dist/{CreateItemApp-TAAprby3.js → CreateItemApp-CtdH1K1g.js} +13 -13
- package/dist/CreateItemApp-t9F-a6wD.cjs +1 -0
- package/dist/{DeviceInfoApp-lgpwkeRR.js → DeviceInfoApp-C306YvtZ.js} +7 -7
- package/dist/DeviceInfoApp-Cdju_LIB.cjs +1 -0
- package/dist/DeviceInfoApp-CyB01v4D.cjs +1 -0
- package/dist/DownloadProgress-IRw1dzLX.cjs +1 -0
- package/dist/{DownloadProgress-EoyCaD5O.js → DownloadProgress-hdupSUBT.js} +15 -15
- package/dist/{FileIcon-7JaSR3Gn.js → FileIcon-BCpGMI5U.js} +25 -26
- package/dist/FileIcon-BCrsxmtt.cjs +1 -0
- package/dist/{FilePickerApp-DaMgEqKh.js → FilePickerApp-DMGuvahM.js} +115 -115
- package/dist/FilePickerApp-Eu0cr2Cm.cjs +1 -0
- package/dist/{FilesApp-Cj94QG5o.js → FilesApp-BQFVHkEn.js} +21 -21
- package/dist/FilesApp-BZ_dzZnF.cjs +1 -0
- package/dist/FilesApp-SIWXFPXt.cjs +1 -0
- package/dist/{Group-CtBJSfCo.js → Group-BzwlMeob.js} +1 -1
- package/dist/Group-DhwePB84.cjs +1 -0
- package/dist/ImageViewerApp-BOz59TGc.cjs +1 -0
- package/dist/ImageViewerApp-BeqY6voE.cjs +1 -0
- package/dist/{ImageViewerApp-BaLP3gkO.js → ImageViewerApp-CWiP6zx-.js} +17 -18
- package/dist/ImageViewerApp-DBAfJPSo.js +2 -0
- package/dist/{ImageViewerMenuBar-CabGSi9r.js → ImageViewerMenuBar-BULkh_Ku.js} +14 -15
- package/dist/ImageViewerMenuBar-Cb0Nr5-M.js +2 -0
- package/dist/ImageViewerMenuBar-CoEp0RxK.cjs +1 -0
- package/dist/ImageViewerMenuBar-zOkJtqKo.cjs +1 -0
- package/dist/MenuEditApp-BoKtj2GH.js +2 -0
- package/dist/MenuEditApp-D21sEp86.js +2615 -0
- package/dist/MenuEditApp-k3cPfTG9.cjs +1 -0
- package/dist/MenuEditApp-sz9GlLVH.cjs +5 -0
- package/dist/MenuEditMenuBar-6QxlIDpl.cjs +1 -0
- package/dist/{MenuEditMenuBar-x1IQrHP2.js → MenuEditMenuBar-B94z4Umw.js} +12 -13
- package/dist/MenuEditMenuBar-Bv6R42lf.js +2 -0
- package/dist/MenuEditMenuBar-CBsmH_-T.cjs +1 -0
- package/dist/NotesApp-BtR55Hva.cjs +207 -0
- package/dist/NotesApp-C59exz_9.js +16154 -0
- package/dist/NotesApp-D47I5LS_.js +2 -0
- package/dist/NotesApp-lOwsi2sg.cjs +1 -0
- package/dist/{NotesMenuBar-VhpIe68v.js → NotesMenuBar-BB4NkKGf.js} +9 -10
- package/dist/NotesMenuBar-BZITC74y.cjs +1 -0
- package/dist/NotesMenuBar-Bp0sPqyR.cjs +1 -0
- package/dist/NotesMenuBar-xlfODmMA.js +2 -0
- package/dist/{Paper-BX_9odR6.js → Paper-DtUYKmYn.js} +3 -3
- package/dist/Paper-DwCpwWwH.cjs +1 -0
- package/dist/PdfApp-1XbFGfoY.cjs +1 -0
- package/dist/PdfApp-BhIoJWeK.cjs +1 -0
- package/dist/PdfApp-C5Rt1Zaw.js +2 -0
- package/dist/PdfApp-C8Hwxxqh.js +38 -0
- package/dist/PdfMenuBar-BA9rKuMP.cjs +1 -0
- package/dist/PdfMenuBar-JXHqwxhZ.cjs +1 -0
- package/dist/PdfMenuBar-R0fu7oYF.js +2 -0
- package/dist/PdfMenuBar-sd-9Vk3h.js +38 -0
- package/dist/SettingsApp-7EhpjzUE.cjs +1 -0
- package/dist/SettingsApp-ByiPAj1I.cjs +1 -0
- package/dist/{SettingsApp-BlmHuAjT.js → SettingsApp-d6fmBHxR.js} +342 -344
- package/dist/SettingsApp-qKJmC0lj.js +2 -0
- package/dist/SettingsMenuBar-BPwv8JQK.js +41 -0
- package/dist/SettingsMenuBar-D8R7hOik.js +2 -0
- package/dist/SettingsMenuBar-DDrjZLmg.cjs +1 -0
- package/dist/SettingsMenuBar-DQjUa8g1.cjs +1 -0
- package/dist/{Slider-t-NcD60t.js → Slider-BNO-vDFn.js} +147 -148
- package/dist/Slider-Bg_EIBg6.cjs +1 -0
- package/dist/Stack-BOaJgV3N.cjs +1 -0
- package/dist/{Stack-Bp1Ek2Gp.js → Stack-CuDEaP7e.js} +1 -1
- package/dist/StorybookApp-Bkr-7mXp.cjs +1 -0
- package/dist/{StorybookApp-DKwlPCmo.js → StorybookApp-WYninkJo.js} +1 -1
- package/dist/TerminalApp-8XbsKAWa.js +10041 -0
- package/dist/TerminalApp-Bq2e7QQu.cjs +1 -0
- package/dist/TerminalApp-CVu3Axc9.js +2 -0
- package/dist/TerminalApp-b7_d0jRO.cjs +36 -0
- package/dist/TerminalMenuBar-Cb8x9laS.js +2 -0
- package/dist/TerminalMenuBar-De-FH5AE.cjs +1 -0
- package/dist/{TerminalMenuBar-D5tPmgR_.js → TerminalMenuBar-iKLydNda.js} +14 -15
- package/dist/TerminalMenuBar-yOaWd-hn.cjs +1 -0
- package/dist/{TextInput-C-JtGWn1.js → TextInput-C3qfxxWI.js} +263 -264
- package/dist/TextInput-DcYns3hz.cjs +1 -0
- package/dist/Tooltip-CAOO-qdx.js +3185 -0
- package/dist/Tooltip-DDh_x-CB.cjs +1 -0
- package/dist/{UnstyledButton-DGaG-e_G.js → UnstyledButton-CI3kyRck.js} +1 -1
- package/dist/UnstyledButton-Cl5RuIid.cjs +1 -0
- package/dist/{UploaderApp-qBfpukR_.js → UploaderApp-C76ydsd8.js} +117 -118
- package/dist/UploaderApp-CHACW8Yr.js +2 -0
- package/dist/UploaderApp-Q_a3mBik.cjs +1 -0
- package/dist/UploaderApp-htj59ppo.cjs +1 -0
- package/dist/VscIcon-CxEmqD80.cjs +1 -0
- package/dist/{VscIcon-DBfVnArE.js → VscIcon-DueRJVTe.js} +1 -1
- package/dist/chunk-BQCxAhux.js +23 -0
- package/dist/chunk-CiTBaPhY.cjs +1 -0
- package/dist/create-safe-context-95P-Bfg3.cjs +1 -0
- package/dist/{desktopStore-F8bgLqFl.js → desktopStore-B0R1-BeA.js} +393 -256
- package/dist/desktopStore-Cox-Og1z.cjs +1 -0
- package/dist/fc-DejOsQyD.cjs +1 -0
- package/dist/fc-kd8WzIER.js +20536 -0
- package/dist/fc-xJ_v2ayq.cjs +184 -0
- package/dist/fi-BahYsbim.js +9993 -0
- package/dist/fi-BkhyTcZo.cjs +1 -0
- package/dist/getRuntime-BLXyQZBB.cjs +1 -0
- package/dist/{getRuntime-DAPqFH2W.js → getRuntime-CCRXVzJH.js} +5 -5
- package/dist/iconBase-B4UCuSvv.cjs +1 -0
- package/dist/iconBase-D7iPes7B.js +108 -0
- package/dist/imageViewerStore-CH1qW6md.cjs +1 -0
- package/dist/{imageViewerStore-C5kWz0o7.js → imageViewerStore-CJMRXaQh.js} +1 -1
- package/dist/index.cjs +53 -1
- package/dist/index.css +1 -1
- package/dist/index.js +5903 -1728
- package/dist/is-element-BocgicRg.cjs +1 -0
- package/dist/{menuEditStore-Cj1zAwxQ.js → menuEditStore-C8S_EedM.js} +1 -1
- package/dist/menuEditStore-CU7IAg3L.cjs +1 -0
- package/dist/{notesStore-BPyRTHEc.js → notesStore-DKRgTTFn.js} +1 -1
- package/dist/notesStore-zKmChTfF.cjs +1 -0
- package/dist/react-DYmzHD0X.js +27 -0
- package/dist/react-Dldg32sN.cjs +1 -0
- package/dist/settingsAppStore-BrlImdAH.cjs +1 -0
- package/dist/{settingsAppStore-BDQ3ts1y.js → settingsAppStore-KOeWRO6h.js} +1 -1
- package/dist/{terminalStore-IWdf4Mm6.js → terminalStore-LWWjCvCe.js} +1 -1
- package/dist/terminalStore-fZe5t7Ty.cjs +1 -0
- package/dist/use-merged-ref-BI9n1hUK.cjs +1 -0
- package/dist/{use-resolved-styles-api-8OXE2oRq.cjs → use-resolved-styles-api-AVDygMKo.cjs} +1 -1
- package/dist/{use-resolved-styles-api-DNUlJJZf.js → use-resolved-styles-api-pEOi2wiK.js} +1 -1
- package/dist/use-uncontrolled-BPrfGv0W.cjs +1 -0
- package/dist/useAdaptiveDimensions-Btp0m5Pm.cjs +1 -0
- package/dist/{useAdaptiveDimensions-AVDc_qPa.js → useAdaptiveDimensions-CunsU0mn.js} +1 -1
- package/dist/{useCloseInterceptor-BZd3VILp.js → useCloseInterceptor-CuKAAFnj.js} +12 -12
- package/dist/useCloseInterceptor-a_6Lcuqj.cjs +1 -0
- package/dist/{useDynamicIcon-Bf0t2foA.js → useDynamicIcon-GJg3vWsJ.js} +1 -1
- package/dist/useDynamicIcon-SytdL1Tu.cjs +1 -0
- package/dist/{useOpenApp-CBIm7Gzl.js → useOpenApp-BVpSfNrG.js} +3 -3
- package/dist/useOpenApp-Br0jo4-y.cjs +1 -0
- package/dist/useResolvedUrl-Be5ZlCX7.cjs +1 -0
- package/dist/{useResolvedUrl-DQpLqOoL.js → useResolvedUrl-DFKXq598.js} +2 -2
- package/dist/useTranslation-DMRGdqZi.js +279 -0
- package/dist/useTranslation-D_O7S4RJ.cjs +1 -0
- package/dist/vsc-Ciibqbxo.cjs +1 -0
- package/dist/vsc-DGKSpOAR.js +9574 -0
- package/package.json +4 -2
- package/dist/AccordionChevron-kn5kSrEc.cjs +0 -1
- package/dist/ActionIcon-alk2zZD6.cjs +0 -1
- package/dist/AppEmptyState-BWCUbf-B.cjs +0 -1
- package/dist/AppEmptyState-Bxpit0JV.js +0 -49
- package/dist/AppIcon-BU7a3ZNH.cjs +0 -1
- package/dist/AppMenuBar-B9U0n1Vv.cjs +0 -1
- package/dist/AppMenuBar-CnIEVjr8.js +0 -2049
- package/dist/Box-zW6Twge8.cjs +0 -1
- package/dist/Button-DMlnrqyx.cjs +0 -1
- package/dist/CalendarApp-B_e1B1Yn.cjs +0 -1
- package/dist/CalendarApp-C-l9D6nd.cjs +0 -1
- package/dist/CalendarApp-D0ftTCTG.js +0 -1399
- package/dist/Center-DKUE2pER.cjs +0 -1
- package/dist/CheckIcon-CZhtJD1O.cjs +0 -1
- package/dist/CodeServerApp-BOoGwZ7r.cjs +0 -1
- package/dist/CodeServerApp-Be3I5EGg.cjs +0 -1
- package/dist/ColorPicker-BrDE7tMO.cjs +0 -1
- package/dist/CreateItemApp-B12M1E_1.cjs +0 -1
- package/dist/CreateItemApp-ePB6ujNl.cjs +0 -1
- package/dist/DeviceInfoApp-BMF18BGo.cjs +0 -1
- package/dist/DeviceInfoApp-DRy0H3aT.cjs +0 -1
- package/dist/DownloadProgress-VNdj22U8.cjs +0 -1
- package/dist/FileIcon-CIXopWLv.cjs +0 -1
- package/dist/FilePickerApp-DjmuSFqa.cjs +0 -1
- package/dist/FilesApp-Bp7wfrBZ.cjs +0 -1
- package/dist/FilesApp-BpJJRKhi.cjs +0 -1
- package/dist/Group-Dsrf6lEK.cjs +0 -1
- package/dist/ImageViewerApp-DlHGeB3S.cjs +0 -1
- package/dist/ImageViewerApp-DoXd_Swu.cjs +0 -1
- package/dist/ImageViewerMenuBar-SAI7UNz7.cjs +0 -1
- package/dist/ImageViewerMenuBar-_Jr29gii.cjs +0 -1
- package/dist/MenuEditApp-BJjlPTOa.cjs +0 -1
- package/dist/MenuEditApp-BTRppYnD.js +0 -497
- package/dist/MenuEditApp-JPsGT-S3.cjs +0 -1
- package/dist/MenuEditMenuBar-BydGkqMw.cjs +0 -1
- package/dist/MenuEditMenuBar-DptlwVPQ.cjs +0 -1
- package/dist/NotesApp-BOcRGO7w.cjs +0 -1
- package/dist/NotesApp-CQe7UfBC.js +0 -364
- package/dist/NotesApp-OL07JXRE.cjs +0 -1
- package/dist/NotesMenuBar-BSI_2Y7p.cjs +0 -1
- package/dist/NotesMenuBar-Df6aW85J.cjs +0 -1
- package/dist/Paper-D8-BaBx2.cjs +0 -1
- package/dist/PdfApp-CNEbty5v.cjs +0 -1
- package/dist/PdfApp-CVv3ZCaM.cjs +0 -1
- package/dist/PdfApp-DL_R9-Nc.js +0 -39
- package/dist/PdfMenuBar--E6kDyrT.cjs +0 -1
- package/dist/PdfMenuBar-DZCLSOpR.js +0 -39
- package/dist/PdfMenuBar-Dj5cJUkg.cjs +0 -1
- package/dist/SettingsApp-CNvIgf5B.cjs +0 -1
- package/dist/SettingsApp-DWxanNE4.cjs +0 -1
- package/dist/SettingsMenuBar-CBoOBCfx.cjs +0 -1
- package/dist/SettingsMenuBar-DQooFkZN.cjs +0 -1
- package/dist/SettingsMenuBar-YWiJHaxq.js +0 -42
- package/dist/Slider-BUiHxjKO.cjs +0 -1
- package/dist/Stack-D4jAiRfc.cjs +0 -1
- package/dist/StorybookApp-CDLV_kja.cjs +0 -1
- package/dist/TerminalApp-BCB7i1lR.cjs +0 -1
- package/dist/TerminalApp-BYc_gHLe.js +0 -326
- package/dist/TerminalApp-Dviz6aP2.cjs +0 -1
- package/dist/TerminalMenuBar-DNshPmCa.cjs +0 -1
- package/dist/TerminalMenuBar-HzMSR7XP.cjs +0 -1
- package/dist/TextInput-CrsmcOip.cjs +0 -1
- package/dist/Tooltip-D5Cd9wtz.cjs +0 -1
- package/dist/Tooltip-DOeIvhrO.js +0 -1142
- package/dist/UnstyledButton-DX2pTahr.cjs +0 -1
- package/dist/UploaderApp-C6xA5Rrf2.cjs +0 -1
- package/dist/UploaderApp-DnHIRxB_.cjs +0 -1
- package/dist/VscIcon-CcMdrFoJ.cjs +0 -1
- package/dist/create-safe-context-Bboj0GWC.cjs +0 -1
- package/dist/desktopStore-CZoA9VHO.cjs +0 -1
- package/dist/getRuntime-BFK0-8R1.cjs +0 -1
- package/dist/imageViewerStore-BB_tssZR.cjs +0 -1
- package/dist/is-element-CdV0xajp.cjs +0 -1
- package/dist/menuEditStore-CTeM_dns.cjs +0 -1
- package/dist/notesStore-BCEl1D_v.cjs +0 -1
- package/dist/rolldown-runtime-CAFD8bLK.js +0 -11
- package/dist/settingsAppStore-CMBc13VU.cjs +0 -1
- package/dist/terminalStore-iIuyodfK.cjs +0 -1
- package/dist/use-merged-ref-n9Gw9LNn.cjs +0 -1
- package/dist/use-uncontrolled-DDJVQiM_.cjs +0 -1
- package/dist/useAdaptiveDimensions-CfITBJ_m.cjs +0 -1
- package/dist/useCloseInterceptor-yntBEzNc.cjs +0 -1
- package/dist/useDynamicIcon-DJ_il30E.cjs +0 -1
- package/dist/useOpenApp-DW4x79Zg.cjs +0 -1
- package/dist/useResolvedUrl-BkMPM1fM.cjs +0 -1
- /package/dist/{Colors-zP2AFgU3.cjs → Colors-BxX4G8kX.cjs} +0 -0
- /package/dist/{Colors-ClnDxnyA.js → Colors-hca6raEG.js} +0 -0
- /package/dist/{useMenuBarUtils-nJIPJGIQ.cjs → useMenuBarUtils-Bp5PiztD.cjs} +0 -0
- /package/dist/{useMenuBarUtils-nmu9yehT.js → useMenuBarUtils-ChmpZjwu.js} +0 -0
|
@@ -1,44 +1,181 @@
|
|
|
1
|
-
import { i as e, n as t } from "./getRuntime-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { i as e, n as t } from "./getRuntime-CCRXVzJH.js";
|
|
2
|
+
import { t as n } from "./react-DYmzHD0X.js";
|
|
3
|
+
//#region ../../node_modules/.bun/zustand@5.0.12+10f197a4cef36846/node_modules/zustand/esm/middleware.mjs
|
|
4
|
+
function r(e, t) {
|
|
5
|
+
let n;
|
|
6
|
+
try {
|
|
7
|
+
n = e();
|
|
8
|
+
} catch {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
getItem: (e) => {
|
|
13
|
+
let r = (e) => e === null ? null : JSON.parse(e, t?.reviver), i = n.getItem(e) ?? null;
|
|
14
|
+
return i instanceof Promise ? i.then(r) : r(i);
|
|
15
|
+
},
|
|
16
|
+
setItem: (e, r) => n.setItem(e, JSON.stringify(r, t?.replacer)),
|
|
17
|
+
removeItem: (e) => n.removeItem(e)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
var i = (e) => (t) => {
|
|
21
|
+
try {
|
|
22
|
+
let n = e(t);
|
|
23
|
+
return n instanceof Promise ? n : {
|
|
24
|
+
then(e) {
|
|
25
|
+
return i(e)(n);
|
|
26
|
+
},
|
|
27
|
+
catch(e) {
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
} catch (e) {
|
|
32
|
+
return {
|
|
33
|
+
then(e) {
|
|
34
|
+
return this;
|
|
35
|
+
},
|
|
36
|
+
catch(t) {
|
|
37
|
+
return i(t)(e);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}, a = (e, t) => (n, a, o) => {
|
|
42
|
+
let s = {
|
|
43
|
+
storage: r(() => window.localStorage),
|
|
44
|
+
partialize: (e) => e,
|
|
45
|
+
version: 0,
|
|
46
|
+
merge: (e, t) => ({
|
|
47
|
+
...t,
|
|
48
|
+
...e
|
|
49
|
+
}),
|
|
50
|
+
...t
|
|
51
|
+
}, c = !1, l = 0, u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Set(), f = s.storage;
|
|
52
|
+
if (!f) return e((...e) => {
|
|
53
|
+
console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`), n(...e);
|
|
54
|
+
}, a, o);
|
|
55
|
+
let p = () => {
|
|
56
|
+
let e = s.partialize({ ...a() });
|
|
57
|
+
return f.setItem(s.name, {
|
|
58
|
+
state: e,
|
|
59
|
+
version: s.version
|
|
60
|
+
});
|
|
61
|
+
}, m = o.setState;
|
|
62
|
+
o.setState = (e, t) => (m(e, t), p());
|
|
63
|
+
let h = e((...e) => (n(...e), p()), a, o);
|
|
64
|
+
o.getInitialState = () => h;
|
|
65
|
+
let g, _ = () => {
|
|
66
|
+
if (!f) return;
|
|
67
|
+
let e = ++l;
|
|
68
|
+
c = !1, u.forEach((e) => e(a() ?? h));
|
|
69
|
+
let t = s.onRehydrateStorage?.call(s, a() ?? h) || void 0;
|
|
70
|
+
return i(f.getItem.bind(f))(s.name).then((e) => {
|
|
71
|
+
if (e) if (typeof e.version == "number" && e.version !== s.version) {
|
|
72
|
+
if (s.migrate) {
|
|
73
|
+
let t = s.migrate(e.state, e.version);
|
|
74
|
+
return t instanceof Promise ? t.then((e) => [!0, e]) : [!0, t];
|
|
75
|
+
}
|
|
76
|
+
console.error("State loaded from storage couldn't be migrated since no migrate function was provided");
|
|
77
|
+
} else return [!1, e.state];
|
|
78
|
+
return [!1, void 0];
|
|
79
|
+
}).then((t) => {
|
|
80
|
+
if (e !== l) return;
|
|
81
|
+
let [r, i] = t;
|
|
82
|
+
if (g = s.merge(i, a() ?? h), n(g, !0), r) return p();
|
|
83
|
+
}).then(() => {
|
|
84
|
+
e === l && (t?.(a(), void 0), g = a(), c = !0, d.forEach((e) => e(g)));
|
|
85
|
+
}).catch((n) => {
|
|
86
|
+
e === l && t?.(void 0, n);
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
return o.persist = {
|
|
90
|
+
setOptions: (e) => {
|
|
91
|
+
s = {
|
|
92
|
+
...s,
|
|
93
|
+
...e
|
|
94
|
+
}, e.storage && (f = e.storage);
|
|
95
|
+
},
|
|
96
|
+
clearStorage: () => {
|
|
97
|
+
f?.removeItem(s.name);
|
|
98
|
+
},
|
|
99
|
+
getOptions: () => s,
|
|
100
|
+
rehydrate: () => _(),
|
|
101
|
+
hasHydrated: () => c,
|
|
102
|
+
onHydrate: (e) => (u.add(e), () => {
|
|
103
|
+
u.delete(e);
|
|
104
|
+
}),
|
|
105
|
+
onFinishHydration: (e) => (d.add(e), () => {
|
|
106
|
+
d.delete(e);
|
|
107
|
+
})
|
|
108
|
+
}, s.skipHydration || _(), g || h;
|
|
109
|
+
}, o = [];
|
|
110
|
+
for (let e = 0; e < 256; ++e) o.push((e + 256).toString(16).slice(1));
|
|
111
|
+
function s(e, t = 0) {
|
|
112
|
+
return (o[e[t + 0]] + o[e[t + 1]] + o[e[t + 2]] + o[e[t + 3]] + "-" + o[e[t + 4]] + o[e[t + 5]] + "-" + o[e[t + 6]] + o[e[t + 7]] + "-" + o[e[t + 8]] + o[e[t + 9]] + "-" + o[e[t + 10]] + o[e[t + 11]] + o[e[t + 12]] + o[e[t + 13]] + o[e[t + 14]] + o[e[t + 15]]).toLowerCase();
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region ../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist/rng.js
|
|
116
|
+
var c, l = new Uint8Array(16);
|
|
117
|
+
function u() {
|
|
118
|
+
if (!c) {
|
|
119
|
+
if (typeof crypto > "u" || !crypto.getRandomValues) throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
120
|
+
c = crypto.getRandomValues.bind(crypto);
|
|
121
|
+
}
|
|
122
|
+
return c(l);
|
|
123
|
+
}
|
|
124
|
+
var d = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
|
|
125
|
+
//#endregion
|
|
126
|
+
//#region ../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist/v4.js
|
|
127
|
+
function f(e, t, n) {
|
|
128
|
+
e ||= {};
|
|
129
|
+
let r = e.random ?? e.rng?.() ?? u();
|
|
130
|
+
if (r.length < 16) throw Error("Random bytes length must be >= 16");
|
|
131
|
+
if (r[6] = r[6] & 15 | 64, r[8] = r[8] & 63 | 128, t) {
|
|
132
|
+
if (n ||= 0, n < 0 || n + 16 > t.length) throw RangeError(`UUID byte range ${n}:${n + 15} is out of buffer bounds`);
|
|
133
|
+
for (let e = 0; e < 16; ++e) t[n + e] = r[e];
|
|
134
|
+
return t;
|
|
135
|
+
}
|
|
136
|
+
return s(r);
|
|
137
|
+
}
|
|
138
|
+
function p(e, t, n) {
|
|
139
|
+
return d.randomUUID && !t && !e ? d.randomUUID() : f(e, t, n);
|
|
140
|
+
}
|
|
141
|
+
//#endregion
|
|
5
142
|
//#region src/utils/uuid.ts
|
|
6
|
-
function
|
|
7
|
-
return
|
|
143
|
+
function m() {
|
|
144
|
+
return p();
|
|
8
145
|
}
|
|
9
146
|
//#endregion
|
|
10
147
|
//#region src/domain/entities/Window.ts
|
|
11
|
-
var
|
|
148
|
+
var h = (e) => ({
|
|
12
149
|
alwaysOnTop: !1,
|
|
13
150
|
...e,
|
|
14
|
-
id:
|
|
151
|
+
id: m(),
|
|
15
152
|
isOpen: !0,
|
|
16
153
|
state: "normal",
|
|
17
154
|
zIndex: 0
|
|
18
|
-
}),
|
|
155
|
+
}), g = (e) => ({
|
|
19
156
|
...e,
|
|
20
|
-
id:
|
|
21
|
-
}),
|
|
22
|
-
id:
|
|
157
|
+
id: m()
|
|
158
|
+
}), _ = (e) => ({
|
|
159
|
+
id: m(),
|
|
23
160
|
name: e.name,
|
|
24
161
|
fcIcon: e.fcIcon,
|
|
25
162
|
appIds: e.appIds ?? [],
|
|
26
163
|
isExpanded: e.isExpanded ?? !1,
|
|
27
164
|
isPredefined: e.isPredefined ?? !1,
|
|
28
165
|
order: e.order ?? 0
|
|
29
|
-
}),
|
|
30
|
-
id:
|
|
166
|
+
}), ee = (e) => ({
|
|
167
|
+
id: m(),
|
|
31
168
|
name: e.name,
|
|
32
169
|
fcIcon: e.fcIcon,
|
|
33
170
|
appIds: e.appIds ?? [],
|
|
34
171
|
isExpanded: e.isExpanded ?? !1,
|
|
35
172
|
isPredefined: !0,
|
|
36
173
|
order: e.order ?? 0
|
|
37
|
-
}),
|
|
174
|
+
}), te = (e, t) => ({
|
|
38
175
|
...e,
|
|
39
176
|
...t
|
|
40
|
-
}),
|
|
41
|
-
id:
|
|
177
|
+
}), v = (e, t = null, n = {}) => ({
|
|
178
|
+
id: m(),
|
|
42
179
|
name: e,
|
|
43
180
|
type: "folder",
|
|
44
181
|
parentId: t,
|
|
@@ -46,8 +183,8 @@ var c = (e) => ({
|
|
|
46
183
|
createdAt: /* @__PURE__ */ new Date(),
|
|
47
184
|
updatedAt: /* @__PURE__ */ new Date(),
|
|
48
185
|
...n
|
|
49
|
-
}),
|
|
50
|
-
id:
|
|
186
|
+
}), y = (e, t, n = null, r, i) => ({
|
|
187
|
+
id: m(),
|
|
51
188
|
name: e,
|
|
52
189
|
type: "file",
|
|
53
190
|
content: t,
|
|
@@ -56,12 +193,12 @@ var c = (e) => ({
|
|
|
56
193
|
createdAt: /* @__PURE__ */ new Date(),
|
|
57
194
|
updatedAt: /* @__PURE__ */ new Date(),
|
|
58
195
|
...i === void 0 ? {} : { url: i }
|
|
59
|
-
}),
|
|
196
|
+
}), ne = 1e4, re = class {
|
|
60
197
|
windows = /* @__PURE__ */ new Map();
|
|
61
198
|
nextZIndex = 1;
|
|
62
199
|
assignZIndex(e) {
|
|
63
200
|
let t = this.nextZIndex++;
|
|
64
|
-
return e ?
|
|
201
|
+
return e ? ne + t : t;
|
|
65
202
|
}
|
|
66
203
|
reset() {
|
|
67
204
|
this.windows.clear(), this.nextZIndex = 1;
|
|
@@ -71,7 +208,7 @@ var c = (e) => ({
|
|
|
71
208
|
let t = 0;
|
|
72
209
|
for (let n of e) {
|
|
73
210
|
this.windows.set(n.id, n);
|
|
74
|
-
let e = n.alwaysOnTop ?? !1 ? n.zIndex -
|
|
211
|
+
let e = n.alwaysOnTop ?? !1 ? n.zIndex - ne : n.zIndex;
|
|
75
212
|
e > t && (t = e);
|
|
76
213
|
}
|
|
77
214
|
this.nextZIndex = t + 1;
|
|
@@ -83,7 +220,7 @@ var c = (e) => ({
|
|
|
83
220
|
return this.windows.get(e);
|
|
84
221
|
}
|
|
85
222
|
open(e) {
|
|
86
|
-
let t =
|
|
223
|
+
let t = h(e);
|
|
87
224
|
return t.zIndex = this.assignZIndex(t.alwaysOnTop ?? !1), this.windows.set(t.id, t), t;
|
|
88
225
|
}
|
|
89
226
|
close(e) {
|
|
@@ -123,7 +260,7 @@ var c = (e) => ({
|
|
|
123
260
|
...t
|
|
124
261
|
});
|
|
125
262
|
}
|
|
126
|
-
},
|
|
263
|
+
}, ie = {
|
|
127
264
|
".txt": "text/plain",
|
|
128
265
|
".md": "text/markdown",
|
|
129
266
|
".markdown": "text/markdown",
|
|
@@ -144,28 +281,28 @@ var c = (e) => ({
|
|
|
144
281
|
".jsdos": "application/jsdos",
|
|
145
282
|
".zip": "application/zip"
|
|
146
283
|
};
|
|
147
|
-
function
|
|
284
|
+
function b(e) {
|
|
148
285
|
let t = e.lastIndexOf(".");
|
|
149
|
-
if (!(t === -1 || t === e.length - 1)) return
|
|
286
|
+
if (!(t === -1 || t === e.length - 1)) return ie[e.slice(t).toLowerCase()];
|
|
150
287
|
}
|
|
151
288
|
//#endregion
|
|
152
289
|
//#region src/utils/hashBlob.ts
|
|
153
|
-
function
|
|
290
|
+
function ae(e) {
|
|
154
291
|
let t = 5381;
|
|
155
292
|
for (let n = 0; n < e.length; n++) t = (t << 5) + t ^ e[n], t >>>= 0;
|
|
156
293
|
return t.toString(16).padStart(8, "0") + e.length.toString(16).padStart(8, "0");
|
|
157
294
|
}
|
|
158
|
-
async function
|
|
295
|
+
async function x(e) {
|
|
159
296
|
let t = await e.arrayBuffer(), n = new Uint8Array(t);
|
|
160
297
|
if (crypto?.subtle) {
|
|
161
298
|
let e = await crypto.subtle.digest("SHA-256", n);
|
|
162
299
|
return Array.from(new Uint8Array(e)).map((e) => e.toString(16).padStart(2, "0")).join("");
|
|
163
300
|
}
|
|
164
|
-
return console.warn("[hashBlob] crypto.subtle unavailable (non-secure context), using fallback hash"),
|
|
301
|
+
return console.warn("[hashBlob] crypto.subtle unavailable (non-secure context), using fallback hash"), ae(n);
|
|
165
302
|
}
|
|
166
303
|
//#endregion
|
|
167
304
|
//#region src/infrastructure/adapters/IndexedDBFileSystem.ts
|
|
168
|
-
var
|
|
305
|
+
var oe = "fde-desktop-fs", S = "nodes", C = "blobs", w = "metadata", se = 2, T = class {
|
|
169
306
|
db = null;
|
|
170
307
|
nodes = /* @__PURE__ */ new Map();
|
|
171
308
|
ready = !1;
|
|
@@ -180,20 +317,20 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
180
317
|
}
|
|
181
318
|
openDatabase() {
|
|
182
319
|
return new Promise((e, t) => {
|
|
183
|
-
let n = indexedDB.open(
|
|
320
|
+
let n = indexedDB.open(oe, se);
|
|
184
321
|
n.onerror = () => t(n.error), n.onsuccess = () => {
|
|
185
322
|
this.db = n.result, e();
|
|
186
323
|
}, n.onupgradeneeded = () => {
|
|
187
324
|
let e = n.result;
|
|
188
|
-
e.objectStoreNames.contains(
|
|
325
|
+
e.objectStoreNames.contains(S) || e.createObjectStore(S), e.objectStoreNames.contains(C) || e.createObjectStore(C), e.objectStoreNames.contains(w) || e.createObjectStore(w);
|
|
189
326
|
};
|
|
190
327
|
});
|
|
191
328
|
}
|
|
192
329
|
async loadNodes() {
|
|
193
330
|
if (this.db) return new Promise((e, t) => {
|
|
194
|
-
let n = this.db.transaction(
|
|
331
|
+
let n = this.db.transaction(S, "readonly"), r = n.objectStore(S).getAll();
|
|
195
332
|
r.onsuccess = () => {
|
|
196
|
-
let i = n.objectStore(
|
|
333
|
+
let i = n.objectStore(S).getAllKeys();
|
|
197
334
|
i.onsuccess = () => {
|
|
198
335
|
let t = r.result, n = i.result;
|
|
199
336
|
for (let e = 0; e < t.length; e++) {
|
|
@@ -221,7 +358,7 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
221
358
|
}
|
|
222
359
|
persistAllNodes() {
|
|
223
360
|
return this.db ? new Promise((e, t) => {
|
|
224
|
-
let n = this.db.transaction(
|
|
361
|
+
let n = this.db.transaction(S, "readwrite"), r = n.objectStore(S);
|
|
225
362
|
for (let [e, t] of this.nodes.entries()) r.put(t, e);
|
|
226
363
|
n.oncomplete = () => e(), n.onerror = () => t(n.error);
|
|
227
364
|
}) : Promise.resolve();
|
|
@@ -235,7 +372,7 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
235
372
|
if (!this.db || this.persistQueue.length === 0) return;
|
|
236
373
|
let e = [...this.persistQueue];
|
|
237
374
|
this.persistQueue = [];
|
|
238
|
-
let t = this.db.transaction(
|
|
375
|
+
let t = this.db.transaction(S, "readwrite"), n = t.objectStore(S);
|
|
239
376
|
t.onerror = () => {
|
|
240
377
|
console.error("IndexedDB write failed", t.error);
|
|
241
378
|
};
|
|
@@ -256,9 +393,9 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
256
393
|
}
|
|
257
394
|
async saveBlob(e) {
|
|
258
395
|
this.db || await this.initialize();
|
|
259
|
-
let t = await
|
|
396
|
+
let t = await x(e);
|
|
260
397
|
return await this.getBlob(`idb://${t}`) ? `idb://${t}` : new Promise((n, r) => {
|
|
261
|
-
let i = this.db.transaction(
|
|
398
|
+
let i = this.db.transaction(C, "readwrite").objectStore(C).put(e, t);
|
|
262
399
|
i.onsuccess = () => n(`idb://${t}`), i.onerror = () => r(i.error);
|
|
263
400
|
});
|
|
264
401
|
}
|
|
@@ -266,7 +403,7 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
266
403
|
this.db || await this.initialize();
|
|
267
404
|
let t = e.startsWith("idb://") ? e.slice(6) : e;
|
|
268
405
|
return new Promise((e, n) => {
|
|
269
|
-
let r = this.db.transaction(
|
|
406
|
+
let r = this.db.transaction(C, "readonly").objectStore(C).get(t);
|
|
270
407
|
r.onsuccess = () => e(r.result ?? null), r.onerror = () => n(r.error);
|
|
271
408
|
});
|
|
272
409
|
}
|
|
@@ -277,7 +414,7 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
277
414
|
}
|
|
278
415
|
async clearBlobs() {
|
|
279
416
|
if (this.db) return new Promise((e, t) => {
|
|
280
|
-
let n = this.db.transaction(
|
|
417
|
+
let n = this.db.transaction(C, "readwrite").objectStore(C).clear();
|
|
281
418
|
n.onsuccess = () => e(), n.onerror = () => t(n.error);
|
|
282
419
|
});
|
|
283
420
|
}
|
|
@@ -302,11 +439,11 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
302
439
|
return this.nodes.size === 0;
|
|
303
440
|
}
|
|
304
441
|
async createFile(e, t, n, r) {
|
|
305
|
-
let i =
|
|
442
|
+
let i = y(e, t, n, b(e), r);
|
|
306
443
|
return this.nodes.set(i.id, i), n && this.addChildToFolder(n, i.id), this.persistNode(i.id, i), i;
|
|
307
444
|
}
|
|
308
445
|
async createFolder(e, t, n, r) {
|
|
309
|
-
let i =
|
|
446
|
+
let i = v(e, t, {
|
|
310
447
|
iconName: n,
|
|
311
448
|
iconColor: r
|
|
312
449
|
});
|
|
@@ -346,36 +483,36 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
346
483
|
}
|
|
347
484
|
async getManifestSha() {
|
|
348
485
|
return this.db || await this.initialize(), new Promise((e, t) => {
|
|
349
|
-
let n = this.db.transaction(
|
|
486
|
+
let n = this.db.transaction(w, "readonly").objectStore(w).get("manifestSha");
|
|
350
487
|
n.onsuccess = () => e(n.result ?? null), n.onerror = () => t(n.error);
|
|
351
488
|
});
|
|
352
489
|
}
|
|
353
490
|
async saveManifestSha(e) {
|
|
354
491
|
return this.db || await this.initialize(), new Promise((t, n) => {
|
|
355
|
-
let r = this.db.transaction(
|
|
492
|
+
let r = this.db.transaction(w, "readwrite").objectStore(w).put(e, "manifestSha");
|
|
356
493
|
r.onsuccess = () => t(), r.onerror = () => n(r.error);
|
|
357
494
|
});
|
|
358
495
|
}
|
|
359
496
|
async clearAll() {
|
|
360
497
|
this.nodes.clear(), this.ready = !1, this.initPromise = null, this.db &&= (await Promise.all([
|
|
361
498
|
new Promise((e, t) => {
|
|
362
|
-
let n = this.db.transaction(
|
|
363
|
-
n.objectStore(
|
|
499
|
+
let n = this.db.transaction(S, "readwrite");
|
|
500
|
+
n.objectStore(S).clear(), n.oncomplete = () => e(), n.onerror = () => t(n.error);
|
|
364
501
|
}),
|
|
365
502
|
new Promise((e, t) => {
|
|
366
|
-
let n = this.db.transaction(
|
|
367
|
-
n.objectStore(
|
|
503
|
+
let n = this.db.transaction(C, "readwrite");
|
|
504
|
+
n.objectStore(C).clear(), n.oncomplete = () => e(), n.onerror = () => t(n.error);
|
|
368
505
|
}),
|
|
369
506
|
new Promise((e, t) => {
|
|
370
|
-
let n = this.db.transaction(
|
|
371
|
-
n.objectStore(
|
|
507
|
+
let n = this.db.transaction(w, "readwrite");
|
|
508
|
+
n.objectStore(w).clear(), n.oncomplete = () => e(), n.onerror = () => t(n.error);
|
|
372
509
|
})
|
|
373
510
|
]), this.db.close(), null);
|
|
374
511
|
}
|
|
375
512
|
async seed(e) {
|
|
376
513
|
let t = this.buildFolderMapFromManifest(e);
|
|
377
514
|
for (let n of e.files) {
|
|
378
|
-
let e = t.get(n.folder), r =
|
|
515
|
+
let e = t.get(n.folder), r = y(n.name, "", e?.id ?? null, n.mimeType, n.url);
|
|
379
516
|
if (this.nodes.set(r.id, r), e) {
|
|
380
517
|
let i = {
|
|
381
518
|
...e,
|
|
@@ -402,7 +539,7 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
402
539
|
}
|
|
403
540
|
continue;
|
|
404
541
|
}
|
|
405
|
-
let i =
|
|
542
|
+
let i = y(n.name, "", e.id, n.mimeType, n.url);
|
|
406
543
|
this.nodes.set(i.id, i);
|
|
407
544
|
let a = {
|
|
408
545
|
...e,
|
|
@@ -423,7 +560,7 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
423
560
|
continue;
|
|
424
561
|
}
|
|
425
562
|
}
|
|
426
|
-
let c =
|
|
563
|
+
let c = v(i, s);
|
|
427
564
|
if (this.nodes.set(c.id, c), n.set(e, c), o) {
|
|
428
565
|
let e = {
|
|
429
566
|
...o,
|
|
@@ -459,8 +596,8 @@ var ie = "fde-desktop-fs", _ = "nodes", v = "blobs", y = "metadata", ae = 2, oe
|
|
|
459
596
|
e && (e.type === "folder" && this.deleteRecursive(e), this.nodes.delete(t), this.deleteNodeFromPersist(t));
|
|
460
597
|
}
|
|
461
598
|
}
|
|
462
|
-
},
|
|
463
|
-
async function
|
|
599
|
+
}, ce = "/api/fs", le = 6e4;
|
|
600
|
+
async function ue(e, t = {}, n = le) {
|
|
464
601
|
let r = new AbortController(), i = setTimeout(() => r.abort(), n);
|
|
465
602
|
try {
|
|
466
603
|
return await fetch(e, {
|
|
@@ -471,25 +608,25 @@ async function le(e, t = {}, n = ce) {
|
|
|
471
608
|
clearTimeout(i);
|
|
472
609
|
}
|
|
473
610
|
}
|
|
474
|
-
var
|
|
475
|
-
function
|
|
476
|
-
|
|
611
|
+
var E = ce;
|
|
612
|
+
function de(e) {
|
|
613
|
+
E = e;
|
|
477
614
|
}
|
|
478
|
-
var
|
|
615
|
+
var fe = class {
|
|
479
616
|
nodes = /* @__PURE__ */ new Map();
|
|
480
617
|
pathToId = /* @__PURE__ */ new Map();
|
|
481
618
|
ready = !1;
|
|
482
619
|
rootFolderId;
|
|
483
620
|
initPromise = null;
|
|
484
621
|
constructor() {
|
|
485
|
-
this.rootFolderId =
|
|
622
|
+
this.rootFolderId = m(), this.pathToId.set("/", this.rootFolderId);
|
|
486
623
|
}
|
|
487
624
|
async initialize() {
|
|
488
625
|
return this.initPromise ||= this.doInitialize(), this.initPromise;
|
|
489
626
|
}
|
|
490
627
|
async doInitialize() {
|
|
491
628
|
try {
|
|
492
|
-
let e = await fetch(`${
|
|
629
|
+
let e = await fetch(`${E}?action=readdir&path=/`);
|
|
493
630
|
if (e.ok) {
|
|
494
631
|
let t = await e.json();
|
|
495
632
|
await this.syncFromEntries(t, null);
|
|
@@ -500,7 +637,7 @@ var de = class {
|
|
|
500
637
|
this.ready = !0;
|
|
501
638
|
}
|
|
502
639
|
async reinitialize() {
|
|
503
|
-
this.ready = !1, this.nodes.clear(), this.pathToId.clear(), this.rootFolderId =
|
|
640
|
+
this.ready = !1, this.nodes.clear(), this.pathToId.clear(), this.rootFolderId = m(), this.pathToId.set("/", this.rootFolderId), this.initPromise = null, await this.initialize();
|
|
504
641
|
}
|
|
505
642
|
isReady() {
|
|
506
643
|
return this.ready;
|
|
@@ -523,32 +660,32 @@ var de = class {
|
|
|
523
660
|
return Array.from(this.nodes.values());
|
|
524
661
|
}
|
|
525
662
|
async createFile(e, t, n, r) {
|
|
526
|
-
let i =
|
|
527
|
-
...
|
|
663
|
+
let i = m(), a = n ? this.getPathFromId(n) : "/", o = a ? `${a}/${e}`.replace("//", "/") : `/${e}`, s = r ?? `/api/fs?action=file&path=${encodeURIComponent(o)}`, c = {
|
|
664
|
+
...y(e, t, n, this.getMimeType(e), s),
|
|
528
665
|
id: i
|
|
529
666
|
};
|
|
530
|
-
this.nodes.set(i,
|
|
667
|
+
this.nodes.set(i, c), this.pathToId.set(o, i);
|
|
531
668
|
try {
|
|
532
669
|
await this.writeFileToServer(o, t);
|
|
533
670
|
} catch (e) {
|
|
534
671
|
throw this.nodes.delete(i), this.pathToId.delete(o), e;
|
|
535
672
|
}
|
|
536
|
-
return
|
|
673
|
+
return c;
|
|
537
674
|
}
|
|
538
675
|
async createFolder(e, t, n, r) {
|
|
539
|
-
let i =
|
|
540
|
-
n && (
|
|
541
|
-
let
|
|
542
|
-
...
|
|
676
|
+
let i = m(), a = t ? this.getPathFromId(t) : "/", o = a ? `${a}/${e}`.replace("//", "/") : `/${e}`, s = {};
|
|
677
|
+
n && (s.iconName = n), r && (s.iconColor = r);
|
|
678
|
+
let c = {
|
|
679
|
+
...v(e, t, s),
|
|
543
680
|
id: i
|
|
544
681
|
};
|
|
545
|
-
this.nodes.set(i,
|
|
682
|
+
this.nodes.set(i, c), this.pathToId.set(o, i);
|
|
546
683
|
try {
|
|
547
|
-
await this.createDirOnServer(o,
|
|
684
|
+
await this.createDirOnServer(o, s);
|
|
548
685
|
} catch (e) {
|
|
549
686
|
throw this.nodes.delete(i), this.pathToId.delete(o), e;
|
|
550
687
|
}
|
|
551
|
-
return
|
|
688
|
+
return c;
|
|
552
689
|
}
|
|
553
690
|
async updateFile(e, t) {
|
|
554
691
|
let n = this.nodes.get(e);
|
|
@@ -576,7 +713,7 @@ var de = class {
|
|
|
576
713
|
let r = this.getPathFromId(e), i = t ? this.getPathFromId(t) : "/", a = i ? `${i}/${n.name}`.replace("//", "/") : `/${n.name}`;
|
|
577
714
|
if (!r) throw Error(`Cannot determine path for node ${e}`);
|
|
578
715
|
if (!i && t !== null) throw Error(`Cannot determine parent path for ${t}`);
|
|
579
|
-
let o = await
|
|
716
|
+
let o = await ue(`${E}?action=move&oldPath=${encodeURIComponent(r)}&newPath=${encodeURIComponent(a)}`);
|
|
580
717
|
if (!o.ok) {
|
|
581
718
|
let e = await o.json().catch(() => ({}));
|
|
582
719
|
throw Error(e.error || `HTTP ${o.status}`);
|
|
@@ -597,7 +734,7 @@ var de = class {
|
|
|
597
734
|
}
|
|
598
735
|
async readFile(e) {
|
|
599
736
|
try {
|
|
600
|
-
let t = await fetch(`${
|
|
737
|
+
let t = await fetch(`${E}?action=read&path=${encodeURIComponent(e)}`);
|
|
601
738
|
if (t.ok) return (await t.json()).content;
|
|
602
739
|
} catch (t) {
|
|
603
740
|
console.warn(`[DockerFS] Failed to read file ${e}:`, t);
|
|
@@ -608,9 +745,9 @@ var de = class {
|
|
|
608
745
|
await this.writeFileToServer(e, t);
|
|
609
746
|
}
|
|
610
747
|
async saveBlob(e) {
|
|
611
|
-
let t = `/.blobs/${await
|
|
748
|
+
let t = `/.blobs/${await x(e)}.${e.type.split("/")[1] || "bin"}`;
|
|
612
749
|
try {
|
|
613
|
-
await fetch(`${
|
|
750
|
+
await fetch(`${E}?action=writeBinary&path=${encodeURIComponent(t)}`, {
|
|
614
751
|
method: "POST",
|
|
615
752
|
body: e
|
|
616
753
|
});
|
|
@@ -650,10 +787,10 @@ var de = class {
|
|
|
650
787
|
return Promise.resolve();
|
|
651
788
|
}
|
|
652
789
|
async clearAll() {
|
|
653
|
-
this.nodes.clear(), this.pathToId.clear(), this.ready = !1, this.initPromise = null, this.rootFolderId =
|
|
790
|
+
this.nodes.clear(), this.pathToId.clear(), this.ready = !1, this.initPromise = null, this.rootFolderId = m(), this.pathToId.set("/", this.rootFolderId);
|
|
654
791
|
}
|
|
655
792
|
getMimeType(e) {
|
|
656
|
-
return
|
|
793
|
+
return b(e) || "application/octet-stream";
|
|
657
794
|
}
|
|
658
795
|
getPathFromId(e) {
|
|
659
796
|
if (!e) return null;
|
|
@@ -671,9 +808,9 @@ var de = class {
|
|
|
671
808
|
}
|
|
672
809
|
async syncFromEntries(e, t) {
|
|
673
810
|
for (let n of e) {
|
|
674
|
-
let e =
|
|
811
|
+
let e = m();
|
|
675
812
|
if (n.type === "directory") {
|
|
676
|
-
let r =
|
|
813
|
+
let r = v(n.name, t);
|
|
677
814
|
this.nodes.set(e, {
|
|
678
815
|
...r,
|
|
679
816
|
id: e
|
|
@@ -681,7 +818,7 @@ var de = class {
|
|
|
681
818
|
let i = await this.fetchReaddir(n.path);
|
|
682
819
|
await this.syncFromEntries(i, e);
|
|
683
820
|
} else {
|
|
684
|
-
let r = `/api/fs?action=file&path=${encodeURIComponent(n.path)}`, i =
|
|
821
|
+
let r = `/api/fs?action=file&path=${encodeURIComponent(n.path)}`, i = y(n.name, "", t, this.getMimeType(n.name), r);
|
|
685
822
|
this.nodes.set(e, {
|
|
686
823
|
...i,
|
|
687
824
|
id: e
|
|
@@ -691,7 +828,7 @@ var de = class {
|
|
|
691
828
|
}
|
|
692
829
|
async fetchReaddir(e) {
|
|
693
830
|
try {
|
|
694
|
-
let t = await fetch(`${
|
|
831
|
+
let t = await fetch(`${E}?action=readdir&path=${encodeURIComponent(e)}`);
|
|
695
832
|
if (t.ok) return await t.json();
|
|
696
833
|
} catch (t) {
|
|
697
834
|
console.warn(`[DockerFS] Failed to readdir ${e}:`, t);
|
|
@@ -699,7 +836,7 @@ var de = class {
|
|
|
699
836
|
return [];
|
|
700
837
|
}
|
|
701
838
|
async writeFileToServer(e, t) {
|
|
702
|
-
let n = await fetch(`${
|
|
839
|
+
let n = await fetch(`${E}`, {
|
|
703
840
|
method: "POST",
|
|
704
841
|
headers: { "Content-Type": "application/json" },
|
|
705
842
|
body: JSON.stringify({
|
|
@@ -710,7 +847,7 @@ var de = class {
|
|
|
710
847
|
if (!n.ok) throw Error(`Failed to write file ${e}: HTTP ${n.status}`);
|
|
711
848
|
}
|
|
712
849
|
async createDirOnServer(e, t) {
|
|
713
|
-
let n = await fetch(`${
|
|
850
|
+
let n = await fetch(`${E}`, {
|
|
714
851
|
method: "PUT",
|
|
715
852
|
headers: { "Content-Type": "application/json" },
|
|
716
853
|
body: JSON.stringify({
|
|
@@ -722,12 +859,12 @@ var de = class {
|
|
|
722
859
|
}
|
|
723
860
|
async deleteFromServer(e) {
|
|
724
861
|
try {
|
|
725
|
-
await fetch(`${
|
|
862
|
+
await fetch(`${E}?path=${encodeURIComponent(e)}`, { method: "DELETE" });
|
|
726
863
|
} catch (t) {
|
|
727
864
|
console.warn(`[DockerFS] Failed to delete ${e}:`, t);
|
|
728
865
|
}
|
|
729
866
|
}
|
|
730
|
-
},
|
|
867
|
+
}, pe = "launcher-folder-custom-apps", me = [
|
|
731
868
|
{
|
|
732
869
|
id: "launcher-folder-social-links",
|
|
733
870
|
name: "Social Links",
|
|
@@ -774,7 +911,7 @@ var de = class {
|
|
|
774
911
|
order: 3
|
|
775
912
|
},
|
|
776
913
|
{
|
|
777
|
-
id:
|
|
914
|
+
id: pe,
|
|
778
915
|
name: "Custom Apps",
|
|
779
916
|
fcIcon: "VscExtensions",
|
|
780
917
|
appIds: [],
|
|
@@ -782,59 +919,59 @@ var de = class {
|
|
|
782
919
|
isPredefined: !0,
|
|
783
920
|
order: 4
|
|
784
921
|
}
|
|
785
|
-
],
|
|
786
|
-
async function
|
|
922
|
+
], D = [...me], O = null, k = null, A = 0, he = 5e3, ge = "/dist-apps/apps-manifest.json";
|
|
923
|
+
async function j(e = !1) {
|
|
787
924
|
let t = Date.now();
|
|
788
|
-
if (!e &&
|
|
789
|
-
if (
|
|
790
|
-
let n = `${
|
|
791
|
-
return
|
|
925
|
+
if (!e && O && t - A < he) return O;
|
|
926
|
+
if (k) return k;
|
|
927
|
+
let n = `${ge}?t=${t}`;
|
|
928
|
+
return k = fetch(n).then(async (e) => {
|
|
792
929
|
if (!e.ok) {
|
|
793
|
-
if (e.status === 404) return console.warn("[CustomApps] No apps manifest found at",
|
|
930
|
+
if (e.status === 404) return console.warn("[CustomApps] No apps manifest found at", ge), null;
|
|
794
931
|
throw Error(`Failed to fetch manifest: ${e.status}`);
|
|
795
932
|
}
|
|
796
933
|
return e.json();
|
|
797
|
-
}).then((e) => (
|
|
934
|
+
}).then((e) => (O = e, A = Date.now(), k = null, console.log(`[CustomApps] Loaded manifest with ${e.apps.length} apps`), e)).catch((e) => (console.error("[CustomApps] Error fetching manifest:", e), k = null, null)), k;
|
|
798
935
|
}
|
|
799
|
-
function
|
|
800
|
-
return
|
|
936
|
+
function _e() {
|
|
937
|
+
return O;
|
|
801
938
|
}
|
|
802
|
-
function
|
|
803
|
-
|
|
939
|
+
function ve() {
|
|
940
|
+
O = null, A = 0;
|
|
804
941
|
}
|
|
805
|
-
function
|
|
806
|
-
if (!
|
|
807
|
-
|
|
942
|
+
function ye(e) {
|
|
943
|
+
if (!O) {
|
|
944
|
+
O = {
|
|
808
945
|
version: "1.0.0",
|
|
809
946
|
generated: (/* @__PURE__ */ new Date()).toISOString(),
|
|
810
947
|
apps: [e]
|
|
811
948
|
};
|
|
812
949
|
return;
|
|
813
950
|
}
|
|
814
|
-
|
|
815
|
-
...
|
|
816
|
-
apps:
|
|
951
|
+
O = O.apps.some((t) => t.id === e.id) ? {
|
|
952
|
+
...O,
|
|
953
|
+
apps: O.apps.map((t) => t.id === e.id ? e : t)
|
|
817
954
|
} : {
|
|
818
|
-
...
|
|
819
|
-
apps: [...
|
|
955
|
+
...O,
|
|
956
|
+
apps: [...O.apps, e]
|
|
820
957
|
};
|
|
821
958
|
}
|
|
822
|
-
function
|
|
823
|
-
|
|
824
|
-
...
|
|
825
|
-
apps:
|
|
959
|
+
function be(e) {
|
|
960
|
+
O &&= {
|
|
961
|
+
...O,
|
|
962
|
+
apps: O.apps.filter((t) => t.id !== e)
|
|
826
963
|
};
|
|
827
964
|
}
|
|
828
|
-
async function
|
|
829
|
-
return (await
|
|
965
|
+
async function M() {
|
|
966
|
+
return (await j())?.apps ?? [];
|
|
830
967
|
}
|
|
831
|
-
async function
|
|
832
|
-
return (await
|
|
968
|
+
async function xe(e) {
|
|
969
|
+
return (await M()).find((t) => t.id === e);
|
|
833
970
|
}
|
|
834
|
-
function
|
|
835
|
-
return
|
|
971
|
+
function Se(e) {
|
|
972
|
+
return O ? O.apps.some((t) => t.id === e) : !1;
|
|
836
973
|
}
|
|
837
|
-
function
|
|
974
|
+
function Ce(e) {
|
|
838
975
|
return {
|
|
839
976
|
id: e.id,
|
|
840
977
|
name: e.name,
|
|
@@ -848,7 +985,7 @@ function ye(e) {
|
|
|
848
985
|
alwaysOnTop: e.window.alwaysOnTop
|
|
849
986
|
};
|
|
850
987
|
}
|
|
851
|
-
function
|
|
988
|
+
function we(e, t) {
|
|
852
989
|
let n = new Set(t.map((e) => e.id)), r = e.filter((e) => !n.has(e.id)), i = t.map((e) => {
|
|
853
990
|
let t = {
|
|
854
991
|
id: e.id,
|
|
@@ -865,9 +1002,9 @@ function be(e, t) {
|
|
|
865
1002
|
});
|
|
866
1003
|
return [...r, ...i];
|
|
867
1004
|
}
|
|
868
|
-
async function
|
|
869
|
-
|
|
870
|
-
let t = await
|
|
1005
|
+
async function Te(e) {
|
|
1006
|
+
ve();
|
|
1007
|
+
let t = await j(!0);
|
|
871
1008
|
if (!t) return {
|
|
872
1009
|
added: [],
|
|
873
1010
|
removed: [],
|
|
@@ -882,26 +1019,26 @@ async function xe(e) {
|
|
|
882
1019
|
}
|
|
883
1020
|
//#endregion
|
|
884
1021
|
//#region src/utils/sortNodes.ts
|
|
885
|
-
var
|
|
1022
|
+
var N = (e) => {
|
|
886
1023
|
let t = e.filter((e) => e.type === "folder"), n = e.filter((e) => e.type === "file"), r = (e, t) => e.name.localeCompare(t.name);
|
|
887
1024
|
return [...t.sort(r), ...n.sort(r)];
|
|
888
|
-
},
|
|
1025
|
+
}, Ee = {
|
|
889
1026
|
BY_TYPE: "byType",
|
|
890
1027
|
BY_NAME: "byName",
|
|
891
1028
|
BY_DATE: "byDate"
|
|
892
1029
|
};
|
|
893
|
-
function
|
|
1030
|
+
function P(e) {
|
|
894
1031
|
return e.nodeId ? e.appId === "files" ? "folder" : "file" : "app";
|
|
895
1032
|
}
|
|
896
|
-
var
|
|
1033
|
+
var F = {
|
|
897
1034
|
app: 0,
|
|
898
1035
|
folder: 1,
|
|
899
1036
|
file: 2
|
|
900
1037
|
};
|
|
901
|
-
function
|
|
1038
|
+
function I(e, t) {
|
|
902
1039
|
return [...e].sort((e, n) => {
|
|
903
|
-
let r =
|
|
904
|
-
if (r !== i) return
|
|
1040
|
+
let r = P(e), i = P(n);
|
|
1041
|
+
if (r !== i) return F[r] - F[i];
|
|
905
1042
|
if (r === "app") {
|
|
906
1043
|
if (!t) return e.name.localeCompare(n.name);
|
|
907
1044
|
let r = t.indexOf(e.appId), i = t.indexOf(n.appId);
|
|
@@ -910,38 +1047,38 @@ function N(e, t) {
|
|
|
910
1047
|
return e.name.localeCompare(n.name);
|
|
911
1048
|
});
|
|
912
1049
|
}
|
|
913
|
-
var
|
|
1050
|
+
var De = (e, t) => {
|
|
914
1051
|
switch (t) {
|
|
915
|
-
case "default": return
|
|
1052
|
+
case "default": return I(e);
|
|
916
1053
|
case "name-asc": return [...e].sort((e, t) => e.name.localeCompare(t.name));
|
|
917
1054
|
case "name-desc": return [...e].sort((e, t) => t.name.localeCompare(e.name));
|
|
918
1055
|
case "type": return [...e].sort((e, t) => {
|
|
919
|
-
let n =
|
|
920
|
-
return n === r ? e.name.localeCompare(t.name) :
|
|
1056
|
+
let n = P(e), r = P(t);
|
|
1057
|
+
return n === r ? e.name.localeCompare(t.name) : F[n] - F[r];
|
|
921
1058
|
});
|
|
922
|
-
default: return
|
|
1059
|
+
default: return I(e);
|
|
923
1060
|
}
|
|
924
|
-
},
|
|
1061
|
+
}, Oe = (e, t) => {
|
|
925
1062
|
switch (t) {
|
|
926
1063
|
case "default":
|
|
927
|
-
case "type": return
|
|
1064
|
+
case "type": return N(e);
|
|
928
1065
|
case "name-asc": return [...e].sort((e, t) => e.name.localeCompare(t.name));
|
|
929
1066
|
case "name-desc": return [...e].sort((e, t) => t.name.localeCompare(e.name));
|
|
930
|
-
default: return
|
|
1067
|
+
default: return N(e);
|
|
931
1068
|
}
|
|
932
|
-
},
|
|
1069
|
+
}, L = {
|
|
933
1070
|
defaultWidth: 800,
|
|
934
1071
|
defaultHeight: 600,
|
|
935
1072
|
minWidth: 640,
|
|
936
1073
|
minHeight: 480
|
|
937
|
-
},
|
|
1074
|
+
}, R = [
|
|
938
1075
|
{
|
|
939
1076
|
id: "files",
|
|
940
1077
|
name: "FilesApp",
|
|
941
1078
|
icon: "📁",
|
|
942
1079
|
fcIcon: "FcOpenedFolder",
|
|
943
1080
|
hasContextMenu: !0,
|
|
944
|
-
...
|
|
1081
|
+
...L
|
|
945
1082
|
},
|
|
946
1083
|
{
|
|
947
1084
|
id: "settings",
|
|
@@ -949,14 +1086,14 @@ var P = (e, t) => {
|
|
|
949
1086
|
icon: "⚙️",
|
|
950
1087
|
fcIcon: "FcSettings",
|
|
951
1088
|
singleWindow: !0,
|
|
952
|
-
...
|
|
1089
|
+
...L
|
|
953
1090
|
},
|
|
954
1091
|
{
|
|
955
1092
|
id: "notepad",
|
|
956
1093
|
name: "Notepad",
|
|
957
1094
|
icon: "📝",
|
|
958
1095
|
fcIcon: "FcEditImage",
|
|
959
|
-
...
|
|
1096
|
+
...L
|
|
960
1097
|
},
|
|
961
1098
|
{
|
|
962
1099
|
id: "image-viewer",
|
|
@@ -983,7 +1120,7 @@ var P = (e, t) => {
|
|
|
983
1120
|
name: "Uploader",
|
|
984
1121
|
icon: "📤",
|
|
985
1122
|
fcIcon: "FcUpload",
|
|
986
|
-
...
|
|
1123
|
+
...L
|
|
987
1124
|
},
|
|
988
1125
|
{
|
|
989
1126
|
id: "menuedit",
|
|
@@ -991,7 +1128,7 @@ var P = (e, t) => {
|
|
|
991
1128
|
icon: "📁",
|
|
992
1129
|
fcIcon: "FcFolder",
|
|
993
1130
|
singleWindow: !0,
|
|
994
|
-
...
|
|
1131
|
+
...L
|
|
995
1132
|
},
|
|
996
1133
|
{
|
|
997
1134
|
id: "device-info",
|
|
@@ -1018,7 +1155,7 @@ var P = (e, t) => {
|
|
|
1018
1155
|
canMaximize: !1,
|
|
1019
1156
|
singleWindow: !0
|
|
1020
1157
|
}
|
|
1021
|
-
],
|
|
1158
|
+
], ke = R.map((e) => e.id), z = [
|
|
1022
1159
|
{
|
|
1023
1160
|
id: "welcome",
|
|
1024
1161
|
name: "Welcome",
|
|
@@ -1062,7 +1199,7 @@ var P = (e, t) => {
|
|
|
1062
1199
|
name: "Terminal",
|
|
1063
1200
|
icon: "💻",
|
|
1064
1201
|
fcIcon: "FcCommandLine",
|
|
1065
|
-
...
|
|
1202
|
+
...L
|
|
1066
1203
|
},
|
|
1067
1204
|
{
|
|
1068
1205
|
id: "code-server",
|
|
@@ -1100,7 +1237,7 @@ var P = (e, t) => {
|
|
|
1100
1237
|
name: "DOOM"
|
|
1101
1238
|
}
|
|
1102
1239
|
}
|
|
1103
|
-
],
|
|
1240
|
+
], Ae = z.map((e) => e.id), B = [...R, ...z], V = [
|
|
1104
1241
|
"welcome",
|
|
1105
1242
|
"uploader",
|
|
1106
1243
|
"terminal",
|
|
@@ -1113,46 +1250,46 @@ var P = (e, t) => {
|
|
|
1113
1250
|
"files",
|
|
1114
1251
|
"doom"
|
|
1115
1252
|
];
|
|
1116
|
-
function
|
|
1117
|
-
for (let t of e)
|
|
1253
|
+
function je(e) {
|
|
1254
|
+
for (let t of e) B.find((e) => e.id === t.id) || B.push(t);
|
|
1118
1255
|
}
|
|
1119
|
-
function
|
|
1120
|
-
for (let t of e)
|
|
1256
|
+
function Me(e) {
|
|
1257
|
+
for (let t of e) V.includes(t) || V.push(t);
|
|
1121
1258
|
}
|
|
1122
1259
|
//#endregion
|
|
1123
1260
|
//#region src/utils/getAppIdForMime.ts
|
|
1124
|
-
var
|
|
1125
|
-
|
|
1126
|
-
},
|
|
1261
|
+
var Ne = [], H = (e) => {
|
|
1262
|
+
Ne.push(e);
|
|
1263
|
+
}, Pe = new Set([
|
|
1127
1264
|
"image/jpeg",
|
|
1128
1265
|
"image/png",
|
|
1129
1266
|
"image/gif",
|
|
1130
1267
|
"image/svg+xml",
|
|
1131
1268
|
"image/webp",
|
|
1132
1269
|
"image/bmp"
|
|
1133
|
-
]),
|
|
1270
|
+
]), Fe = new Set([
|
|
1134
1271
|
"text/plain",
|
|
1135
1272
|
"text/markdown",
|
|
1136
1273
|
"text/x-markdown",
|
|
1137
1274
|
"application/json"
|
|
1138
1275
|
]);
|
|
1139
|
-
|
|
1276
|
+
H({
|
|
1140
1277
|
appId: "pdf",
|
|
1141
1278
|
mimeTypes: ["application/pdf"],
|
|
1142
1279
|
transformContentData: (e) => ({ src: e.url ?? e.name })
|
|
1143
|
-
}),
|
|
1280
|
+
}), H({
|
|
1144
1281
|
appId: "image-viewer",
|
|
1145
|
-
mimeTypes: (e) =>
|
|
1282
|
+
mimeTypes: (e) => Pe.has(e) || e.startsWith("image/"),
|
|
1146
1283
|
transformContentData: (e) => ({ src: e.url ?? e.name })
|
|
1147
|
-
}),
|
|
1284
|
+
}), H({
|
|
1148
1285
|
appId: "notepad",
|
|
1149
|
-
mimeTypes: (e) =>
|
|
1286
|
+
mimeTypes: (e) => Fe.has(e) || e.startsWith("text/"),
|
|
1150
1287
|
transformContentData: (e) => ({
|
|
1151
1288
|
url: e.url,
|
|
1152
1289
|
initialName: e.name,
|
|
1153
1290
|
fileId: e.id
|
|
1154
1291
|
})
|
|
1155
|
-
}),
|
|
1292
|
+
}), H({
|
|
1156
1293
|
appId: "dos-emulator",
|
|
1157
1294
|
mimeTypes: [
|
|
1158
1295
|
"application/jsdos",
|
|
@@ -1164,14 +1301,14 @@ V({
|
|
|
1164
1301
|
name: e.name
|
|
1165
1302
|
} })
|
|
1166
1303
|
});
|
|
1167
|
-
function
|
|
1304
|
+
function Ie(e) {
|
|
1168
1305
|
if (!e) return null;
|
|
1169
|
-
for (let t of
|
|
1306
|
+
for (let t of Ne) if (typeof t.mimeTypes == "function" ? t.mimeTypes(e) : t.mimeTypes.includes(e)) return t;
|
|
1170
1307
|
return null;
|
|
1171
1308
|
}
|
|
1172
1309
|
function U(e) {
|
|
1173
|
-
if (typeof e == "string" || e === void 0) return
|
|
1174
|
-
let t =
|
|
1310
|
+
if (typeof e == "string" || e === void 0) return Ie(e)?.appId ?? "files";
|
|
1311
|
+
let t = Ie(e.mimeType);
|
|
1175
1312
|
return t ? {
|
|
1176
1313
|
appId: t.appId,
|
|
1177
1314
|
contentData: t.transformContentData(e)
|
|
@@ -1253,11 +1390,11 @@ var W = {
|
|
|
1253
1390
|
setDevServerOffline: (t) => e({ devServerOffline: t }),
|
|
1254
1391
|
incrementHmrRetry: () => e((e) => ({ hmrRetryCount: e.hmrRetryCount + 1 })),
|
|
1255
1392
|
resetHmrRetry: () => e({ hmrRetryCount: 0 })
|
|
1256
|
-
})),
|
|
1257
|
-
function
|
|
1393
|
+
})), Le = "/", K = null, q = null;
|
|
1394
|
+
function Re(e) {
|
|
1258
1395
|
q = e, K = null;
|
|
1259
1396
|
}
|
|
1260
|
-
function
|
|
1397
|
+
function ze() {
|
|
1261
1398
|
if (K !== null) return K;
|
|
1262
1399
|
if (q !== null) return K = q, K;
|
|
1263
1400
|
let e = document.querySelector("base[href]");
|
|
@@ -1265,44 +1402,44 @@ function Me() {
|
|
|
1265
1402
|
let t = e.getAttribute("href");
|
|
1266
1403
|
if (t) return K = t, t;
|
|
1267
1404
|
}
|
|
1268
|
-
return K =
|
|
1405
|
+
return K = Le, K;
|
|
1269
1406
|
}
|
|
1270
|
-
function
|
|
1407
|
+
function Be() {
|
|
1271
1408
|
K = null;
|
|
1272
1409
|
}
|
|
1273
|
-
function
|
|
1410
|
+
function Ve(e) {
|
|
1274
1411
|
if (!e || e.startsWith("http://") || e.startsWith("https://") || e.startsWith("idb://") || e.startsWith("blob:") || e.startsWith("/")) return e;
|
|
1275
|
-
let t =
|
|
1412
|
+
let t = ze();
|
|
1276
1413
|
return (t.endsWith("/") ? t : `${t}/`) + e;
|
|
1277
1414
|
}
|
|
1278
1415
|
//#endregion
|
|
1279
1416
|
//#region src/constants/breakpoints.ts
|
|
1280
|
-
var
|
|
1417
|
+
var He = {
|
|
1281
1418
|
MOBILE: 768,
|
|
1282
1419
|
TABLET: 1024,
|
|
1283
1420
|
DESKTOP: 1280
|
|
1284
|
-
},
|
|
1421
|
+
}, J = {
|
|
1285
1422
|
WIDTH: 1280,
|
|
1286
1423
|
HEIGHT: 800
|
|
1287
|
-
},
|
|
1288
|
-
let e = await fetch(
|
|
1424
|
+
}, Ue = 48, We = 80, Ge = 80, Ke = 20, qe = J.WIDTH, Je = J.HEIGHT, Ye = async () => {
|
|
1425
|
+
let e = await fetch(Ve("fs-manifest.json")), t = e.headers.get("content-type")?.includes("application/json");
|
|
1289
1426
|
return e.ok && t ? await e.json() : null;
|
|
1290
|
-
},
|
|
1291
|
-
function
|
|
1292
|
-
return e() ? (console.log("[FileSystem] Using DockerFileSystemAdapter"), new
|
|
1427
|
+
}, Y = new re();
|
|
1428
|
+
function Xe() {
|
|
1429
|
+
return e() ? (console.log("[FileSystem] Using DockerFileSystemAdapter"), new fe()) : (console.log("[FileSystem] Using IndexedDBFileSystem"), new T());
|
|
1293
1430
|
}
|
|
1294
|
-
var
|
|
1295
|
-
|
|
1296
|
-
},
|
|
1297
|
-
async function
|
|
1431
|
+
var X = Xe(), Ze = () => {
|
|
1432
|
+
X.clearAll().catch(() => {});
|
|
1433
|
+
}, Qe = () => Y.reset();
|
|
1434
|
+
async function $e(e, t) {
|
|
1298
1435
|
if (e.startsWith("idb://")) {
|
|
1299
|
-
let t = await
|
|
1436
|
+
let t = await X.getBlob(e);
|
|
1300
1437
|
return t ? t.text() : "";
|
|
1301
1438
|
}
|
|
1302
1439
|
let n = e.startsWith("http") || e.startsWith("/") ? e : `/${e}`, r = await fetch(n, { signal: t });
|
|
1303
1440
|
return r.ok ? r.text() : "";
|
|
1304
1441
|
}
|
|
1305
|
-
var
|
|
1442
|
+
var Z = () => X.getRootNodes().find((e) => e.type === "folder" && e.name === "Desktop")?.id ?? null, et = (e, t) => {
|
|
1306
1443
|
let n = new Set(e.map((e) => `${e.x},${e.y}`)), r = Math.max(1, Math.floor((t - 20) / 80));
|
|
1307
1444
|
for (let e = 0;; e++) {
|
|
1308
1445
|
let t = 20 + e * 80;
|
|
@@ -1314,22 +1451,22 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1314
1451
|
};
|
|
1315
1452
|
}
|
|
1316
1453
|
}
|
|
1317
|
-
},
|
|
1454
|
+
}, tt = (e, t) => {
|
|
1318
1455
|
let n = Math.max(1, Math.floor((t - 20) / 80)), r = Math.floor(e / n), i = e % n;
|
|
1319
1456
|
return {
|
|
1320
1457
|
x: 20 + r * 80,
|
|
1321
1458
|
y: 20 + i * 80
|
|
1322
1459
|
};
|
|
1323
|
-
},
|
|
1324
|
-
let r =
|
|
1325
|
-
return [...e,
|
|
1460
|
+
}, Q = (e, t, n) => {
|
|
1461
|
+
let r = et(e, n);
|
|
1462
|
+
return [...e, g({
|
|
1326
1463
|
...t,
|
|
1327
1464
|
...r
|
|
1328
1465
|
})];
|
|
1329
|
-
},
|
|
1330
|
-
let e =
|
|
1331
|
-
if (!e || !
|
|
1332
|
-
let t =
|
|
1466
|
+
}, nt = () => {
|
|
1467
|
+
let e = Z();
|
|
1468
|
+
if (!e || !X.isReady()) return;
|
|
1469
|
+
let t = X.getChildren(e), n = new Set(t.map((e) => e.id)), r = new Set(t.map((e) => e.name)), { icons: i, viewportHeight: a } = $.getState(), o = i.filter((e) => !e.nodeId || n.has(e.nodeId) || r.has(e.name));
|
|
1333
1470
|
for (let e of t) {
|
|
1334
1471
|
let t = o.find((t) => t.name === e.name);
|
|
1335
1472
|
if (t) t.nodeId !== e.id && (o = o.map((t) => t.name === e.name ? {
|
|
@@ -1338,7 +1475,7 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1338
1475
|
} : t));
|
|
1339
1476
|
else {
|
|
1340
1477
|
let t = e.type === "folder", n = t ? e : null, r = t ? null : e, i = t ? "files" : r ? U(r)?.appId ?? "" : "";
|
|
1341
|
-
o =
|
|
1478
|
+
o = Q(o, {
|
|
1342
1479
|
name: e.name,
|
|
1343
1480
|
icon: t ? "📁" : "📄",
|
|
1344
1481
|
iconName: n?.iconName,
|
|
@@ -1348,52 +1485,52 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1348
1485
|
}, a);
|
|
1349
1486
|
}
|
|
1350
1487
|
}
|
|
1351
|
-
let s =
|
|
1488
|
+
let s = I(o);
|
|
1352
1489
|
$.setState({ icons: s.map((e, t) => ({
|
|
1353
1490
|
...e,
|
|
1354
|
-
...
|
|
1491
|
+
...tt(t, a)
|
|
1355
1492
|
})) });
|
|
1356
|
-
}, $ = n()(
|
|
1493
|
+
}, $ = n()(a((e, n) => ({
|
|
1357
1494
|
windows: [],
|
|
1358
1495
|
openWindow: (t) => {
|
|
1359
|
-
let n =
|
|
1496
|
+
let n = Y.open(t);
|
|
1360
1497
|
e((e) => ({ windows: [...e.windows, n] }));
|
|
1361
1498
|
},
|
|
1362
1499
|
closeWindow: (t) => {
|
|
1363
|
-
|
|
1500
|
+
Y.close(t), e((e) => ({ windows: e.windows.filter((e) => e.id !== t) }));
|
|
1364
1501
|
},
|
|
1365
1502
|
minimizeWindow: (t) => {
|
|
1366
|
-
|
|
1503
|
+
Y.minimize(t), e((e) => ({ windows: e.windows.map((e) => e.id === t ? {
|
|
1367
1504
|
...e,
|
|
1368
1505
|
state: "minimized"
|
|
1369
1506
|
} : e) }));
|
|
1370
1507
|
},
|
|
1371
1508
|
maximizeWindow: (t) => {
|
|
1372
|
-
|
|
1509
|
+
Y.maximize(t), e((e) => ({ windows: e.windows.map((e) => e.id === t ? {
|
|
1373
1510
|
...e,
|
|
1374
1511
|
state: "maximized"
|
|
1375
1512
|
} : e) }));
|
|
1376
1513
|
},
|
|
1377
1514
|
restoreWindow: (t) => {
|
|
1378
|
-
|
|
1515
|
+
Y.restore(t), e((e) => ({ windows: e.windows.map((e) => e.id === t ? {
|
|
1379
1516
|
...e,
|
|
1380
1517
|
state: "normal"
|
|
1381
1518
|
} : e) }));
|
|
1382
1519
|
},
|
|
1383
1520
|
focusWindow: (t) => {
|
|
1384
|
-
|
|
1385
|
-
let n =
|
|
1521
|
+
Y.focus(t);
|
|
1522
|
+
let n = Y.getById(t);
|
|
1386
1523
|
n && e((e) => ({ windows: e.windows.map((e) => e.id === t ? n : e) }));
|
|
1387
1524
|
},
|
|
1388
1525
|
moveWindow: (t, n, r) => {
|
|
1389
|
-
|
|
1526
|
+
Y.move(t, n, r), e((e) => ({ windows: e.windows.map((e) => e.id === t ? {
|
|
1390
1527
|
...e,
|
|
1391
1528
|
x: n,
|
|
1392
1529
|
y: r
|
|
1393
1530
|
} : e) }));
|
|
1394
1531
|
},
|
|
1395
1532
|
resizeWindow: (t, n, r) => {
|
|
1396
|
-
|
|
1533
|
+
Y.resize(t, n, r), e((e) => ({ windows: e.windows.map((e) => e.id === t ? {
|
|
1397
1534
|
...e,
|
|
1398
1535
|
width: n,
|
|
1399
1536
|
height: r
|
|
@@ -1401,7 +1538,7 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1401
1538
|
},
|
|
1402
1539
|
icons: [],
|
|
1403
1540
|
addIcon: (t) => {
|
|
1404
|
-
let n =
|
|
1541
|
+
let n = g(t);
|
|
1405
1542
|
e((e) => ({ icons: [...e.icons, n] }));
|
|
1406
1543
|
},
|
|
1407
1544
|
removeIcon: (t) => {
|
|
@@ -1412,24 +1549,24 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1412
1549
|
isFsReady: !1,
|
|
1413
1550
|
initFs: async () => {
|
|
1414
1551
|
try {
|
|
1415
|
-
|
|
1416
|
-
let r = await
|
|
1552
|
+
X.isReady() && X.reinitialize ? await X.reinitialize() : X.isReady() || await X.initialize();
|
|
1553
|
+
let r = await Ye();
|
|
1417
1554
|
if (r) {
|
|
1418
|
-
let e = r.sha ?? null, t = await
|
|
1419
|
-
|
|
1555
|
+
let e = r.sha ?? null, t = await X.getManifestSha();
|
|
1556
|
+
X.isEmpty() ? (await X.seed(r), e && await X.saveManifestSha(e)) : t !== e && e !== null && (await X.mergeSeed(r), await X.saveManifestSha(e));
|
|
1420
1557
|
}
|
|
1421
1558
|
if (e({
|
|
1422
|
-
fsNodes:
|
|
1423
|
-
desktopFolderId:
|
|
1559
|
+
fsNodes: X.getAllNodes(),
|
|
1560
|
+
desktopFolderId: Z(),
|
|
1424
1561
|
isFsReady: !0
|
|
1425
1562
|
}), !t()) {
|
|
1426
1563
|
let t = null;
|
|
1427
1564
|
try {
|
|
1428
|
-
if (t = await
|
|
1565
|
+
if (t = await j(), t?.apps?.length) {
|
|
1429
1566
|
e({ customApps: t.apps });
|
|
1430
1567
|
for (let e of t.apps) G.getState().registerApp(e);
|
|
1431
1568
|
}
|
|
1432
|
-
let r = new Set(t?.apps?.map((e) => e.id) ?? []), i = n().icons.filter((e) => e.appId && !
|
|
1569
|
+
let r = new Set(t?.apps?.map((e) => e.id) ?? []), i = n().icons.filter((e) => e.appId && !B.find((t) => t.id === e.appId) && !r.has(e.appId)).map((e) => e.appId);
|
|
1433
1570
|
i.length > 0 && e((e) => ({
|
|
1434
1571
|
icons: e.icons.filter((e) => !i.includes(e.appId)),
|
|
1435
1572
|
customApps: e.customApps.filter((e) => !i.includes(e.id))
|
|
@@ -1438,9 +1575,9 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1438
1575
|
console.warn("[DesktopStore] Failed to load custom apps manifest:", e);
|
|
1439
1576
|
}
|
|
1440
1577
|
}
|
|
1441
|
-
for (let t of
|
|
1442
|
-
let r =
|
|
1443
|
-
r && (n().icons.some((e) => e.appId === t) || e({ icons:
|
|
1578
|
+
for (let t of V) {
|
|
1579
|
+
let r = B.find((e) => e.id === t);
|
|
1580
|
+
r && (n().icons.some((e) => e.appId === t) || e({ icons: Q(n().icons, {
|
|
1444
1581
|
name: r.name,
|
|
1445
1582
|
icon: r.icon,
|
|
1446
1583
|
appId: t
|
|
@@ -1448,45 +1585,45 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1448
1585
|
}
|
|
1449
1586
|
if (!t()) {
|
|
1450
1587
|
let t = n().customApps;
|
|
1451
|
-
if (t.length) for (let r of t) n().icons.some((e) => e.appId === r.id) || e({ icons:
|
|
1588
|
+
if (t.length) for (let r of t) n().icons.some((e) => e.appId === r.id) || e({ icons: Q(n().icons, {
|
|
1452
1589
|
name: r.name,
|
|
1453
1590
|
icon: r.icon,
|
|
1454
1591
|
appId: r.id
|
|
1455
1592
|
}, n().viewportHeight) });
|
|
1456
1593
|
}
|
|
1457
|
-
let i =
|
|
1594
|
+
let i = Z();
|
|
1458
1595
|
if (!i) return;
|
|
1459
|
-
|
|
1596
|
+
X.getChildren(i).forEach((t) => {
|
|
1460
1597
|
if (t.type !== "file") return;
|
|
1461
1598
|
let r = n().icons.find((e) => e.name === t.name);
|
|
1462
1599
|
r ? r.nodeId || e({ icons: n().icons.map((e) => e.name === t.name ? {
|
|
1463
1600
|
...e,
|
|
1464
1601
|
nodeId: t.id
|
|
1465
|
-
} : e) }) : e({ icons:
|
|
1602
|
+
} : e) }) : e({ icons: Q(n().icons, {
|
|
1466
1603
|
name: t.name,
|
|
1467
1604
|
icon: "📄",
|
|
1468
1605
|
appId: U(t.mimeType),
|
|
1469
1606
|
nodeId: t.id
|
|
1470
1607
|
}, n().viewportHeight) });
|
|
1471
|
-
}),
|
|
1608
|
+
}), nt();
|
|
1472
1609
|
} catch (t) {
|
|
1473
1610
|
console.error("Failed to initialize filesystem:", t), e({ isFsReady: !0 });
|
|
1474
1611
|
}
|
|
1475
1612
|
},
|
|
1476
1613
|
createFile: async (t, r, i, a) => {
|
|
1477
|
-
let o = await
|
|
1614
|
+
let o = await X.createFile(t, r, i, a), s = Z(), { icons: c, viewportHeight: l } = n(), u = i && i === s && !c.some((e) => e.name === o.name) ? Q(c, {
|
|
1478
1615
|
name: o.name,
|
|
1479
1616
|
icon: "📄",
|
|
1480
1617
|
appId: U(o.mimeType),
|
|
1481
1618
|
nodeId: o.id
|
|
1482
1619
|
}, l) : c;
|
|
1483
1620
|
return e({
|
|
1484
|
-
fsNodes:
|
|
1621
|
+
fsNodes: X.getAllNodes(),
|
|
1485
1622
|
icons: u
|
|
1486
1623
|
}), o;
|
|
1487
1624
|
},
|
|
1488
1625
|
createFolder: async (t, r, i, a) => {
|
|
1489
|
-
let o = await
|
|
1626
|
+
let o = await X.createFolder(t, r, i, a), s = Z(), { icons: c, viewportHeight: l } = n(), u = r && r === s && !c.some((e) => e.name === o.name) ? Q(c, {
|
|
1490
1627
|
name: o.name,
|
|
1491
1628
|
icon: "📁",
|
|
1492
1629
|
iconName: o.iconName,
|
|
@@ -1495,28 +1632,28 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1495
1632
|
nodeId: o.id
|
|
1496
1633
|
}, l) : c;
|
|
1497
1634
|
return e({
|
|
1498
|
-
fsNodes:
|
|
1635
|
+
fsNodes: X.getAllNodes(),
|
|
1499
1636
|
icons: u
|
|
1500
1637
|
}), o;
|
|
1501
1638
|
},
|
|
1502
1639
|
updateFile: async (t, n) => {
|
|
1503
|
-
await
|
|
1640
|
+
await X.updateFile(t, n), e({ fsNodes: X.getAllNodes() });
|
|
1504
1641
|
},
|
|
1505
1642
|
deleteNode: async (t) => {
|
|
1506
|
-
let n =
|
|
1507
|
-
if (await
|
|
1508
|
-
let t =
|
|
1643
|
+
let n = X.getNode(t);
|
|
1644
|
+
if (await X.delete(t), e({ fsNodes: X.getAllNodes() }), n?.type === "file" || n?.type === "folder") {
|
|
1645
|
+
let t = Z();
|
|
1509
1646
|
n.parentId && n.parentId === t && e((e) => ({ icons: e.icons.filter((e) => e.name !== n.name) }));
|
|
1510
1647
|
}
|
|
1511
1648
|
},
|
|
1512
1649
|
moveNode: async (t, n) => {
|
|
1513
|
-
await
|
|
1650
|
+
await X.move(t, n), e({ fsNodes: X.getAllNodes() });
|
|
1514
1651
|
},
|
|
1515
1652
|
setFsNodes: (t) => {
|
|
1516
1653
|
e({ fsNodes: t });
|
|
1517
1654
|
},
|
|
1518
1655
|
syncIcons: () => {
|
|
1519
|
-
|
|
1656
|
+
nt();
|
|
1520
1657
|
},
|
|
1521
1658
|
clipboard: {
|
|
1522
1659
|
content: [],
|
|
@@ -1566,22 +1703,22 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1566
1703
|
} });
|
|
1567
1704
|
},
|
|
1568
1705
|
mergeSeed: async (t) => {
|
|
1569
|
-
await
|
|
1570
|
-
fsNodes:
|
|
1571
|
-
desktopFolderId:
|
|
1706
|
+
await X.mergeSeed(t), e({
|
|
1707
|
+
fsNodes: X.getAllNodes(),
|
|
1708
|
+
desktopFolderId: Z()
|
|
1572
1709
|
});
|
|
1573
1710
|
},
|
|
1574
1711
|
mergeDesktopApps: (t) => {
|
|
1575
1712
|
for (let r of t) {
|
|
1576
|
-
let t =
|
|
1577
|
-
t && (n().icons.some((e) => e.appId === r) || e({ icons:
|
|
1713
|
+
let t = B.find((e) => e.id === r);
|
|
1714
|
+
t && (n().icons.some((e) => e.appId === r) || e({ icons: Q(n().icons, {
|
|
1578
1715
|
name: t.name,
|
|
1579
1716
|
icon: t.icon,
|
|
1580
1717
|
appId: r
|
|
1581
1718
|
}, n().viewportHeight) }));
|
|
1582
1719
|
}
|
|
1583
|
-
let r =
|
|
1584
|
-
if (r) for (let t of
|
|
1720
|
+
let r = Z();
|
|
1721
|
+
if (r) for (let t of X.getChildren(r)) t.type === "file" && (n().icons.some((e) => e.name === t.name) || e({ icons: Q(n().icons, {
|
|
1585
1722
|
name: t.name,
|
|
1586
1723
|
icon: "📄",
|
|
1587
1724
|
appId: U(t.mimeType),
|
|
@@ -1615,8 +1752,8 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1615
1752
|
removeNotification: (t) => {
|
|
1616
1753
|
e((e) => ({ notifications: e.notifications.filter((e) => e.id !== t) }));
|
|
1617
1754
|
},
|
|
1618
|
-
viewportWidth:
|
|
1619
|
-
viewportHeight:
|
|
1755
|
+
viewportWidth: qe,
|
|
1756
|
+
viewportHeight: Je,
|
|
1620
1757
|
isViewportInitialized: !1,
|
|
1621
1758
|
setViewportSize: (t, r) => {
|
|
1622
1759
|
let i = n().viewportWidth, a = n().viewportHeight, o = n().isViewportInitialized;
|
|
@@ -1659,32 +1796,32 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1659
1796
|
height: d
|
|
1660
1797
|
};
|
|
1661
1798
|
});
|
|
1662
|
-
for (let e of c)
|
|
1799
|
+
for (let e of c) Y.move(e.id, e.x, e.y), Y.resize(e.id, e.width, e.height);
|
|
1663
1800
|
e({ windows: c });
|
|
1664
1801
|
},
|
|
1665
1802
|
desktopSortMode: "default",
|
|
1666
1803
|
filesSortMode: "default",
|
|
1667
1804
|
setDesktopSortMode: (t) => {
|
|
1668
1805
|
e({ desktopSortMode: t });
|
|
1669
|
-
let r = n().icons, i =
|
|
1806
|
+
let r = n().icons, i = De(r, t), a = n().viewportHeight;
|
|
1670
1807
|
e({ icons: i.map((e, t) => ({
|
|
1671
1808
|
...e,
|
|
1672
|
-
...
|
|
1809
|
+
...tt(t, a)
|
|
1673
1810
|
})) });
|
|
1674
1811
|
},
|
|
1675
1812
|
setFilesSortMode: (t) => {
|
|
1676
1813
|
e({ filesSortMode: t });
|
|
1677
1814
|
},
|
|
1678
|
-
launcherFolders:
|
|
1815
|
+
launcherFolders: D,
|
|
1679
1816
|
setLauncherFolders: (t) => {
|
|
1680
1817
|
e({ launcherFolders: t });
|
|
1681
1818
|
},
|
|
1682
1819
|
createLauncherFolder: (t) => {
|
|
1683
|
-
let n =
|
|
1820
|
+
let n = _(t);
|
|
1684
1821
|
return e((e) => ({ launcherFolders: [...e.launcherFolders, n].sort((e, t) => e.order - t.order) })), n;
|
|
1685
1822
|
},
|
|
1686
1823
|
updateLauncherFolder: (t, n) => {
|
|
1687
|
-
e((e) => ({ launcherFolders: e.launcherFolders.map((e) => e.id === t ?
|
|
1824
|
+
e((e) => ({ launcherFolders: e.launcherFolders.map((e) => e.id === t ? te(e, n) : e) }));
|
|
1688
1825
|
},
|
|
1689
1826
|
deleteLauncherFolder: (t) => {
|
|
1690
1827
|
e((e) => ({ launcherFolders: e.launcherFolders.filter((e) => e.id !== t || e.isPredefined) }));
|
|
@@ -1712,7 +1849,7 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1712
1849
|
e({ customApps: t });
|
|
1713
1850
|
},
|
|
1714
1851
|
handleCustomAppRegistered: (t) => {
|
|
1715
|
-
e((e) => ({ customApps: e.customApps.some((e) => e.id === t.id) ? e.customApps.map((e) => e.id === t.id ? t : e) : [...e.customApps, t] })), n().icons.find((e) => e.appId === t.id) || e((e) => ({ icons:
|
|
1852
|
+
e((e) => ({ customApps: e.customApps.some((e) => e.id === t.id) ? e.customApps.map((e) => e.id === t.id ? t : e) : [...e.customApps, t] })), n().icons.find((e) => e.appId === t.id) || e((e) => ({ icons: Q(e.icons, {
|
|
1716
1853
|
name: t.name,
|
|
1717
1854
|
icon: t.icon || "FcDataSheet",
|
|
1718
1855
|
appId: t.id
|
|
@@ -1736,7 +1873,7 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1736
1873
|
}),
|
|
1737
1874
|
merge: (e, t) => {
|
|
1738
1875
|
let n = e, r = ["createItem"], i = (n.windows ?? []).filter((e) => !r.includes(e.content)).map((e) => {
|
|
1739
|
-
let r =
|
|
1876
|
+
let r = B.find((t) => t.id === e.content), i = (n.customApps ?? t.customApps)?.find((t) => t.id === e.content);
|
|
1740
1877
|
return {
|
|
1741
1878
|
...e,
|
|
1742
1879
|
icon: e.icon ?? r?.icon ?? i?.icon,
|
|
@@ -1744,12 +1881,12 @@ var X = () => Y.getRootNodes().find((e) => e.type === "folder" && e.name === "De
|
|
|
1744
1881
|
iconUrl: e.iconUrl ?? r?.iconUrl,
|
|
1745
1882
|
iconColor: r?.iconColor,
|
|
1746
1883
|
canMaximize: r?.canMaximize ?? i?.window?.canMaximize,
|
|
1747
|
-
minWidth: r?.minWidth === !1 || i?.window?.minWidth === !1 ? void 0 : r?.minWidth ?? i?.window?.minWidth ??
|
|
1748
|
-
minHeight: r?.minHeight === !1 || i?.window?.minHeight === !1 ? void 0 : r?.minHeight ?? i?.window?.minHeight ??
|
|
1884
|
+
minWidth: r?.minWidth === !1 || i?.window?.minWidth === !1 ? void 0 : r?.minWidth ?? i?.window?.minWidth ?? L.minWidth,
|
|
1885
|
+
minHeight: r?.minHeight === !1 || i?.window?.minHeight === !1 ? void 0 : r?.minHeight ?? i?.window?.minHeight ?? L.minHeight
|
|
1749
1886
|
};
|
|
1750
1887
|
});
|
|
1751
|
-
|
|
1752
|
-
let a = new Set(
|
|
1888
|
+
Y.loadWindows(i);
|
|
1889
|
+
let a = new Set(D.map((e) => e.id)), o = (n.launcherFolders ?? []).filter((e) => !a.has(e.id)), s = [...D, ...o].sort((e, t) => e.order - t.order), c = n.viewportWidth != null && n.viewportHeight != null;
|
|
1753
1890
|
return {
|
|
1754
1891
|
...t,
|
|
1755
1892
|
...n,
|
|
@@ -1765,4 +1902,4 @@ typeof window < "u" && (window.__DESKTOP_STATE__ = $.getState(), $.subscribe((e)
|
|
|
1765
1902
|
window.__DESKTOP_STATE__ = e;
|
|
1766
1903
|
}));
|
|
1767
1904
|
//#endregion
|
|
1768
|
-
export {
|
|
1905
|
+
export { T as $, ke as A, _e as B, B as C, z as D, Me as E, N as F, be as G, M as H, Oe as I, pe as J, Te as K, ve as L, Ee as M, I as N, Ae as O, De as P, de as Q, Ce as R, H as S, je as T, Se as U, xe as V, we as W, me as X, D as Y, fe as Z, Re as _, $e as a, _ as at, Fe as b, qe as c, g as ct, Ge as d, p as dt, x as et, Ue as f, r as ft, Ve as g, Be as h, Qe as i, v as it, L as j, R as k, We as l, h as lt, ze as m, X as n, re as nt, $ as o, ee as ot, He as p, a as pt, ye as q, Ze as r, y as rt, Je as s, te as st, Ye as t, b as tt, Ke as u, m as ut, G as v, V as w, U as x, Pe as y, j as z };
|