@fde-desktop/fde-core 0.4.9 → 0.4.11
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-Bxpit0JV.js → AppEmptyState-Boej96TB.js} +1 -1
- package/dist/AppEmptyState-CLc00OOG.cjs +1 -0
- package/dist/AppIcon-C8vHUVcb.cjs +1 -0
- package/dist/AppIcon-mtEoyzOb.js +22 -0
- package/dist/AppMenuBar-CAlkNHjj.cjs +1 -0
- package/dist/AppMenuBar-DmSfQRXU.js +197 -0
- package/dist/CalendarApp-DOmjWbpl.js +10 -0
- package/dist/CalendarApp-Z0bCCYsK.cjs +1 -0
- package/dist/ColorPicker-CQRRwY-y.cjs +1 -0
- package/dist/ColorPicker-WCeD3Wjf.js +35 -0
- package/dist/CreateItemApp-BkFFFdX1.cjs +1 -0
- package/dist/CreateItemApp-DR8Y4bwo.js +202 -0
- package/dist/DeviceInfoApp-BXQ9uOwF.cjs +1 -0
- package/dist/DeviceInfoApp-I63mJRWy.js +195 -0
- package/dist/DownloadProgress-CkTGTf0z.cjs +1 -0
- package/dist/DownloadProgress-DnVASsv5.js +39 -0
- package/dist/FilePickerApp-By6-vbag.cjs +1 -0
- package/dist/FilePickerApp-ClHuhm6Z.js +390 -0
- package/dist/FilesApp-BC4UPNuw.cjs +1 -0
- package/dist/FilesApp-D8MqvC5X.js +210 -0
- package/dist/ImageViewerApp-B1niWF75.cjs +1 -0
- package/dist/{ImageViewerApp-BaLP3gkO.js → ImageViewerApp-iojtyFEf.js} +5 -5
- package/dist/{ImageViewerMenuBar-CabGSi9r.js → ImageViewerMenuBar-BIsUokxV.js} +2 -2
- package/dist/ImageViewerMenuBar-BgzgSF3v.cjs +1 -0
- package/dist/MenuEditApp-BHptoJbz.cjs +1 -0
- package/dist/{MenuEditApp-BTRppYnD.js → MenuEditApp-CJUbJaqh.js} +138 -143
- package/dist/MenuEditMenuBar-CCOSPAUe.cjs +1 -0
- package/dist/{MenuEditMenuBar-x1IQrHP2.js → MenuEditMenuBar-DnCL-kaZ.js} +3 -3
- package/dist/NotesApp-BmQIBtJ2.cjs +1 -0
- package/dist/{NotesApp-CQe7UfBC.js → NotesApp-DJ2dGt4-.js} +5 -5
- package/dist/NotesMenuBar-BzojwMtH.cjs +1 -0
- package/dist/{NotesMenuBar-VhpIe68v.js → NotesMenuBar-DILZTjnT.js} +3 -3
- package/dist/{PdfApp-DL_R9-Nc.js → PdfApp-IjY_GtnW.js} +3 -3
- package/dist/PdfApp-krW8UI97.cjs +1 -0
- package/dist/{PdfMenuBar-DZCLSOpR.js → PdfMenuBar-Bd5MTZcZ.js} +1 -1
- package/dist/PdfMenuBar-DWD0Qa3F.cjs +1 -0
- package/dist/SettingsApp-BE22l5UP.cjs +1 -0
- package/dist/SettingsApp-BTFtTFY_.js +1228 -0
- package/dist/SettingsMenuBar-CZE2evG2.cjs +1 -0
- package/dist/{SettingsMenuBar-YWiJHaxq.js → SettingsMenuBar-ktC0viTd.js} +3 -3
- package/dist/UploaderApp-CbypD538.js +263 -0
- package/dist/UploaderApp-D_qD3O70.cjs +1 -0
- package/dist/{VscIcon-DBfVnArE.js → VscIcon-AEENjKOE.js} +1 -1
- package/dist/VscIcon-BYb_Soyy.cjs +1 -0
- package/dist/buildBreadcrumbs-Ccd8i11b.cjs +1 -0
- package/dist/buildBreadcrumbs-noWhu8os.js +45 -0
- package/dist/{desktopStore-F8bgLqFl.js → desktopStore-8cSZlj7s.js} +407 -477
- package/dist/desktopStore-C1jR6Fdb.cjs +1 -0
- package/dist/imageViewerStore-Dfylg59V.cjs +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +16 -6
- package/dist/index.js +1646 -1960
- package/dist/menuEditStore-CYwtfD6H.cjs +1 -0
- package/dist/notesStore-CrWTO6oB.cjs +1 -0
- package/dist/settingsAppStore-DuYZNeFf.cjs +1 -0
- package/dist/useAdaptiveDimensions-3Lz4X0Tc.cjs +1 -0
- package/dist/{useAdaptiveDimensions-AVDc_qPa.js → useAdaptiveDimensions-DxNLJ7R5.js} +1 -1
- package/dist/{useCloseInterceptor-BZd3VILp.js → useCloseInterceptor-CIxhOZx1.js} +1 -1
- package/dist/useCloseInterceptor-CdX-09Ib.cjs +1 -0
- package/dist/useDynamicIcon-CK6SjEv5.cjs +1 -0
- package/dist/useOpenApp-D-FOY88T.cjs +1 -0
- package/dist/{useOpenApp-CBIm7Gzl.js → useOpenApp-DkZLFFCH.js} +51 -67
- package/dist/{useResolvedUrl-DQpLqOoL.js → useResolvedUrl-B6x4xy0x.js} +1 -2
- package/dist/useResolvedUrl-Bb39DpVy.cjs +1 -0
- package/package.json +2 -1
- package/dist/AccordionChevron-DxpOyInK.js +0 -26
- package/dist/AccordionChevron-kn5kSrEc.cjs +0 -1
- package/dist/ActionIcon-Drh4p6Fv.js +0 -145
- package/dist/ActionIcon-alk2zZD6.cjs +0 -1
- package/dist/AppEmptyState-BWCUbf-B.cjs +0 -1
- package/dist/AppIcon-BU7a3ZNH.cjs +0 -1
- package/dist/AppIcon-XumS3bIG.js +0 -80
- package/dist/AppMenuBar-B9U0n1Vv.cjs +0 -1
- package/dist/AppMenuBar-CnIEVjr8.js +0 -2049
- package/dist/Box-DSKR_qaa.js +0 -1579
- package/dist/Box-zW6Twge8.cjs +0 -1
- package/dist/Button-DMlnrqyx.cjs +0 -1
- package/dist/Button-wTOTQKxF.js +0 -178
- 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-CmxXB9ql.js +0 -25
- package/dist/Center-DKUE2pER.cjs +0 -1
- package/dist/CheckIcon-CZhtJD1O.cjs +0 -1
- package/dist/CheckIcon-N5qBqXQJ.js +0 -25
- package/dist/CodeServerApp-BOoGwZ7r.cjs +0 -1
- package/dist/CodeServerApp-Be3I5EGg.cjs +0 -1
- package/dist/CodeServerApp-DW18EZxa.js +0 -150
- package/dist/ColorPicker-BCNqi02x.js +0 -997
- package/dist/ColorPicker-BrDE7tMO.cjs +0 -1
- package/dist/CreateItemApp-B12M1E_1.cjs +0 -1
- package/dist/CreateItemApp-TAAprby3.js +0 -400
- package/dist/CreateItemApp-ePB6ujNl.cjs +0 -1
- package/dist/DeviceInfoApp-BMF18BGo.cjs +0 -1
- package/dist/DeviceInfoApp-DRy0H3aT.cjs +0 -1
- package/dist/DeviceInfoApp-lgpwkeRR.js +0 -223
- package/dist/DownloadProgress-EoyCaD5O.js +0 -174
- package/dist/DownloadProgress-VNdj22U8.cjs +0 -1
- package/dist/FileIcon-7JaSR3Gn.js +0 -89
- package/dist/FileIcon-CIXopWLv.cjs +0 -1
- package/dist/FilePickerApp-DaMgEqKh.js +0 -409
- package/dist/FilePickerApp-DjmuSFqa.cjs +0 -1
- package/dist/FilesApp-Bp7wfrBZ.cjs +0 -1
- package/dist/FilesApp-BpJJRKhi.cjs +0 -1
- package/dist/FilesApp-Cj94QG5o.js +0 -225
- package/dist/Group-CtBJSfCo.js +0 -48
- 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-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-OL07JXRE.cjs +0 -1
- package/dist/NotesMenuBar-BSI_2Y7p.cjs +0 -1
- package/dist/NotesMenuBar-Df6aW85J.cjs +0 -1
- package/dist/Paper-BX_9odR6.js +0 -30
- package/dist/Paper-D8-BaBx2.cjs +0 -1
- package/dist/PdfApp-CNEbty5v.cjs +0 -1
- package/dist/PdfApp-CVv3ZCaM.cjs +0 -1
- package/dist/PdfMenuBar--E6kDyrT.cjs +0 -1
- package/dist/PdfMenuBar-Dj5cJUkg.cjs +0 -1
- package/dist/SettingsApp-BlmHuAjT.js +0 -1831
- 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/Slider-BUiHxjKO.cjs +0 -1
- package/dist/Slider-t-NcD60t.js +0 -1176
- package/dist/Stack-Bp1Ek2Gp.js +0 -34
- package/dist/Stack-D4jAiRfc.cjs +0 -1
- package/dist/StorybookApp-CDLV_kja.cjs +0 -1
- package/dist/StorybookApp-DKwlPCmo.js +0 -10
- 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-D5tPmgR_.js +0 -113
- package/dist/TerminalMenuBar-DNshPmCa.cjs +0 -1
- package/dist/TerminalMenuBar-HzMSR7XP.cjs +0 -1
- package/dist/TextInput-C-JtGWn1.js +0 -981
- package/dist/TextInput-CrsmcOip.cjs +0 -1
- package/dist/Tooltip-D5Cd9wtz.cjs +0 -1
- package/dist/Tooltip-DOeIvhrO.js +0 -1142
- package/dist/UnstyledButton-DGaG-e_G.js +0 -25
- package/dist/UnstyledButton-DX2pTahr.cjs +0 -1
- package/dist/UploaderApp-C6xA5Rrf2.cjs +0 -1
- package/dist/UploaderApp-DnHIRxB_.cjs +0 -1
- package/dist/UploaderApp-qBfpukR_.js +0 -488
- package/dist/VscIcon-CcMdrFoJ.cjs +0 -1
- package/dist/create-safe-context-Bboj0GWC.cjs +0 -1
- package/dist/create-safe-context-XT2cxc14.js +0 -12
- package/dist/desktopStore-CZoA9VHO.cjs +0 -1
- package/dist/getRuntime-BFK0-8R1.cjs +0 -1
- package/dist/getRuntime-DAPqFH2W.js +0 -63
- package/dist/imageViewerStore-BB_tssZR.cjs +0 -1
- package/dist/is-element-Bu_JY8Qy.js +0 -7
- 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/settingsAppStore-CMBc13VU.cjs +0 -1
- package/dist/terminalStore-IWdf4Mm6.js +0 -30
- package/dist/terminalStore-iIuyodfK.cjs +0 -1
- package/dist/use-merged-ref-BT8_u6vW.js +0 -25
- package/dist/use-merged-ref-n9Gw9LNn.cjs +0 -1
- package/dist/use-resolved-styles-api-8OXE2oRq.cjs +0 -1
- package/dist/use-resolved-styles-api-DNUlJJZf.js +0 -21
- package/dist/use-uncontrolled-A4hm9ATM.js +0 -23
- 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-CNJbU7oq.cjs} +0 -0
- /package/dist/{Colors-ClnDxnyA.js → Colors-CuABn2W4.js} +0 -0
- /package/dist/{imageViewerStore-C5kWz0o7.js → imageViewerStore-COrD02Zu.js} +0 -0
- /package/dist/{menuEditStore-Cj1zAwxQ.js → menuEditStore-CxsgLiQu.js} +0 -0
- /package/dist/{notesStore-BPyRTHEc.js → notesStore-Dgah46U5.js} +0 -0
- /package/dist/{settingsAppStore-BDQ3ts1y.js → settingsAppStore-DHZhi6Rl.js} +0 -0
- /package/dist/{useDynamicIcon-Bf0t2foA.js → useDynamicIcon-_wGeWu-b.js} +0 -0
- /package/dist/{useMenuBarUtils-nmu9yehT.js → useMenuBarUtils-ChAfI7OA.js} +0 -0
- /package/dist/{useMenuBarUtils-nJIPJGIQ.cjs → useMenuBarUtils-DAap0ukp.cjs} +0 -0
package/dist/Stack-Bp1Ek2Gp.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { D as e, N as t, c as n, l as r, r as i, t as a } from "./Box-DSKR_qaa.js";
|
|
2
|
-
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
-
//#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Stack/Stack.module.mjs
|
|
4
|
-
var s = { root: "m_6d731127" }, c = {
|
|
5
|
-
gap: "md",
|
|
6
|
-
align: "stretch",
|
|
7
|
-
justify: "flex-start"
|
|
8
|
-
}, l = e((e, { gap: n, align: r, justify: i }) => ({ root: {
|
|
9
|
-
"--stack-gap": t(n),
|
|
10
|
-
"--stack-align": r,
|
|
11
|
-
"--stack-justify": i
|
|
12
|
-
} })), u = i((e) => {
|
|
13
|
-
let t = r("Stack", c, e), { classNames: i, className: u, style: d, styles: f, unstyled: p, vars: m, align: h, justify: g, gap: _, variant: v, attributes: y, ...b } = t;
|
|
14
|
-
return /* @__PURE__ */ o(a, {
|
|
15
|
-
...n({
|
|
16
|
-
name: "Stack",
|
|
17
|
-
props: t,
|
|
18
|
-
classes: s,
|
|
19
|
-
className: u,
|
|
20
|
-
style: d,
|
|
21
|
-
classNames: i,
|
|
22
|
-
styles: f,
|
|
23
|
-
unstyled: p,
|
|
24
|
-
attributes: y,
|
|
25
|
-
vars: m,
|
|
26
|
-
varsResolver: l
|
|
27
|
-
})("root"),
|
|
28
|
-
variant: v,
|
|
29
|
-
...b
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
u.classes = s, u.varsResolver = l, u.displayName = "@mantine/core/Stack";
|
|
33
|
-
//#endregion
|
|
34
|
-
export { u as t };
|
package/dist/Stack-D4jAiRfc.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`./Box-zW6Twge8.cjs`);let t=require(`react/jsx-runtime`);var n={root:`m_6d731127`},r={gap:`md`,align:`stretch`,justify:`flex-start`},i=e.D((t,{gap:n,align:r,justify:i})=>({root:{"--stack-gap":e.N(n),"--stack-align":r,"--stack-justify":i}})),a=e.r(a=>{let o=e.l(`Stack`,r,a),{classNames:s,className:c,style:l,styles:u,unstyled:d,vars:f,align:p,justify:m,gap:h,variant:g,attributes:_,...v}=o;return(0,t.jsx)(e.t,{...e.c({name:`Stack`,props:o,classes:n,className:c,style:l,classNames:s,styles:u,unstyled:d,attributes:_,vars:f,varsResolver:i})(`root`),variant:g,...v})});a.classes=n,a.varsResolver=i,a.displayName=`@mantine/core/Stack`,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`./Box-zW6Twge8.cjs`);let t=require(`react/jsx-runtime`);var n={frame:`_frame_13ufi_1`},r=e.z({default:()=>a}),i=`https://frannunpal.github.io/storybook/`,a=()=>(0,t.jsx)(`iframe`,{src:i,className:n.frame,title:`Storybook`,"aria-label":`Storybook component explorer`});Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./rolldown-runtime-CAFD8bLK.js";
|
|
2
|
-
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
-
var n = { frame: "_frame_13ufi_1" }, r = /* @__PURE__ */ e({ default: () => a }), i = "https://frannunpal.github.io/storybook/", a = () => /* @__PURE__ */ t("iframe", {
|
|
4
|
-
src: i,
|
|
5
|
-
className: n.frame,
|
|
6
|
-
title: "Storybook",
|
|
7
|
-
"aria-label": "Storybook component explorer"
|
|
8
|
-
});
|
|
9
|
-
//#endregion
|
|
10
|
-
export { r as n, a as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`./TerminalApp-Dviz6aP2.cjs`);exports.default=e.t;
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./rolldown-runtime-CAFD8bLK.js";
|
|
2
|
-
import { o as t, t as n } from "./getRuntime-DAPqFH2W.js";
|
|
3
|
-
import { t as r } from "./Center-CmxXB9ql.js";
|
|
4
|
-
import { t as i } from "./Stack-Bp1Ek2Gp.js";
|
|
5
|
-
import { n as a, r as o, t as s } from "./terminalStore-IWdf4Mm6.js";
|
|
6
|
-
import { useCallback as c, useEffect as l, useRef as u, useState as d } from "react";
|
|
7
|
-
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
8
|
-
import { useTranslation as m } from "react-i18next";
|
|
9
|
-
import { FcInfo as h } from "react-icons/fc";
|
|
10
|
-
import { Terminal as g } from "@xterm/xterm";
|
|
11
|
-
import { FitAddon as _ } from "@xterm/addon-fit";
|
|
12
|
-
import { ClipboardAddon as v } from "@xterm/addon-clipboard";
|
|
13
|
-
import "@xterm/xterm/css/xterm.css";
|
|
14
|
-
var y = {
|
|
15
|
-
terminalContainer: "_terminalContainer_15s96_1",
|
|
16
|
-
terminalWrapper: "_terminalWrapper_15s96_9",
|
|
17
|
-
terminal: "_terminal_15s96_1",
|
|
18
|
-
statusBar: "_statusBar_15s96_33",
|
|
19
|
-
statusIndicator: "_statusIndicator_15s96_45",
|
|
20
|
-
statusText: "_statusText_15s96_70",
|
|
21
|
-
reconnectButton: "_reconnectButton_15s96_74"
|
|
22
|
-
}, b = 5, x = 1e3, S = ({ shell: e, scrollback: t, onTerminalReady: n, onConnectionChange: r }) => {
|
|
23
|
-
let i = u(null), a = u(null), o = u(null), s = u(null), m = u(null), h = u(0), S = u(!1), w = u(!1), T = u(e), E = u(null), D = u(!1), [O, k] = d("idle"), [A, j] = d(!1), M = u(n), N = u(r);
|
|
24
|
-
l(() => {
|
|
25
|
-
M.current = n;
|
|
26
|
-
}, [n]), l(() => {
|
|
27
|
-
N.current = r;
|
|
28
|
-
}, [r]), l(() => {
|
|
29
|
-
T.current = e;
|
|
30
|
-
}, [e]);
|
|
31
|
-
let P = c((e) => {
|
|
32
|
-
S.current && (k(e), N.current?.(e));
|
|
33
|
-
}, []), F = c(() => {
|
|
34
|
-
E.current?.abort(), E.current = null;
|
|
35
|
-
let e = m.current;
|
|
36
|
-
if (e && (m.current = null, e.readyState === WebSocket.OPEN || e.readyState === WebSocket.CONNECTING)) {
|
|
37
|
-
try {
|
|
38
|
-
e.send(JSON.stringify({ type: "kill" }));
|
|
39
|
-
} catch {}
|
|
40
|
-
e.close();
|
|
41
|
-
}
|
|
42
|
-
w.current = !1;
|
|
43
|
-
}, []), I = c(() => {
|
|
44
|
-
if (!S.current || w.current || m.current?.readyState === WebSocket.OPEN) return;
|
|
45
|
-
w.current = !0;
|
|
46
|
-
let e = new AbortController();
|
|
47
|
-
E.current = e;
|
|
48
|
-
let t = `${window.location.protocol === "https:" ? "wss:" : "ws:"}//${window.location.host}/api/pty`;
|
|
49
|
-
console.log(`[XTermTerminal] Connecting (attempt ${h.current + 1}/${b})`), P("connecting");
|
|
50
|
-
let n = new WebSocket(t);
|
|
51
|
-
m.current = n, n.onopen = () => {
|
|
52
|
-
S.current && console.log("[XTermTerminal] WebSocket opened");
|
|
53
|
-
}, n.onmessage = (e) => {
|
|
54
|
-
if (S.current && typeof e.data == "string") try {
|
|
55
|
-
let t = JSON.parse(e.data);
|
|
56
|
-
switch (t.type) {
|
|
57
|
-
case "ready":
|
|
58
|
-
console.log("[XTermTerminal] Server ready, sending start"), n.send(JSON.stringify({
|
|
59
|
-
type: "start",
|
|
60
|
-
shell: T.current,
|
|
61
|
-
cwd: "/app/workspace",
|
|
62
|
-
cols: a.current?.cols || 80,
|
|
63
|
-
rows: a.current?.rows || 24
|
|
64
|
-
}));
|
|
65
|
-
break;
|
|
66
|
-
case "started":
|
|
67
|
-
console.log("[XTermTerminal] PTY started"), h.current = 0, w.current = !1, j(!1), P("connected");
|
|
68
|
-
break;
|
|
69
|
-
case "exit":
|
|
70
|
-
console.log("[XTermTerminal] PTY exited:", t.code), m.current = null, w.current = !1, P("disconnected"), j(!0);
|
|
71
|
-
break;
|
|
72
|
-
case "error":
|
|
73
|
-
console.error("[XTermTerminal] Server error:", t.message), w.current = !1, P("error"), j(!0);
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
} catch {
|
|
77
|
-
a.current && a.current.write(e.data);
|
|
78
|
-
}
|
|
79
|
-
}, n.onclose = () => {
|
|
80
|
-
if (!(!S.current || e.signal.aborted)) if (console.log("[XTermTerminal] WebSocket closed"), m.current = null, w.current = !1, h.current < b) {
|
|
81
|
-
h.current++;
|
|
82
|
-
let t = x * 2 ** (h.current - 1);
|
|
83
|
-
console.log(`[XTermTerminal] Retrying in ${t}ms`), setTimeout(() => {
|
|
84
|
-
S.current && !m.current && !e.signal.aborted && I();
|
|
85
|
-
}, t);
|
|
86
|
-
} else P("disconnected"), j(!0);
|
|
87
|
-
}, n.onerror = () => {
|
|
88
|
-
S.current && (console.error("[XTermTerminal] WebSocket error"), w.current = !1, n.close(), P("error"), j(!0));
|
|
89
|
-
};
|
|
90
|
-
}, [P]);
|
|
91
|
-
l(() => {
|
|
92
|
-
if (D.current || (D.current = !0, S.current = !0, !i.current)) return;
|
|
93
|
-
let e = new g({
|
|
94
|
-
fontFamily: "'Operator Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace",
|
|
95
|
-
fontSize: 14,
|
|
96
|
-
theme: {
|
|
97
|
-
background: "#1e1e1e",
|
|
98
|
-
foreground: "#d4d4d4",
|
|
99
|
-
cursor: "#ffffff",
|
|
100
|
-
selectionBackground: "#264f78"
|
|
101
|
-
},
|
|
102
|
-
cursorStyle: "underline",
|
|
103
|
-
cursorBlink: !0,
|
|
104
|
-
scrollback: t
|
|
105
|
-
}), n = new _(), r = new v();
|
|
106
|
-
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) => {
|
|
107
|
-
m.current?.readyState === WebSocket.OPEN && m.current.send(JSON.stringify({
|
|
108
|
-
type: "input",
|
|
109
|
-
data: e
|
|
110
|
-
}));
|
|
111
|
-
}), e.onResize(({ cols: e, rows: t }) => {
|
|
112
|
-
m.current?.readyState === WebSocket.OPEN && m.current.send(JSON.stringify({
|
|
113
|
-
type: "resize",
|
|
114
|
-
cols: e,
|
|
115
|
-
rows: t
|
|
116
|
-
}));
|
|
117
|
-
}), M.current?.({
|
|
118
|
-
clear: () => e.clear(),
|
|
119
|
-
reset: () => e.reset(),
|
|
120
|
-
write: (t) => e.write(t),
|
|
121
|
-
copy: async () => {
|
|
122
|
-
let t = e.getSelection();
|
|
123
|
-
if (console.log("[XTermTerminal] Copy called, selection length:", t?.length ?? 0), !t) {
|
|
124
|
-
console.log("[XTermTerminal] No selection to copy");
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
try {
|
|
128
|
-
if (!navigator.clipboard) {
|
|
129
|
-
console.warn("[XTermTerminal] Clipboard API not available (non-secure context?)"), C(t);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
await navigator.clipboard.writeText(t), console.log("[XTermTerminal] Copied to clipboard successfully");
|
|
133
|
-
} catch (e) {
|
|
134
|
-
console.error("[XTermTerminal] Clipboard write failed:", e), C(t);
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
paste: async () => {
|
|
138
|
-
console.log("[XTermTerminal] Paste called");
|
|
139
|
-
try {
|
|
140
|
-
if (!navigator.clipboard) {
|
|
141
|
-
console.warn("[XTermTerminal] Clipboard API not available");
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
let t = await navigator.clipboard.readText();
|
|
145
|
-
console.log("[XTermTerminal] Paste text length:", t.length), e.paste(t);
|
|
146
|
-
} catch (e) {
|
|
147
|
-
console.error("[XTermTerminal] Paste failed:", e);
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
reconnect: L
|
|
151
|
-
}), requestAnimationFrame(() => {
|
|
152
|
-
S.current && I();
|
|
153
|
-
}), () => {
|
|
154
|
-
console.log("[XTermTerminal] Cleanup"), S.current = !1, E.current?.abort(), E.current = null, a.current && a.current.clear(), F(), e.dispose(), a.current = null, o.current = null;
|
|
155
|
-
};
|
|
156
|
-
}, []);
|
|
157
|
-
let L = c(() => {
|
|
158
|
-
console.log("[XTermTerminal] Reconnect triggered"), h.current = 0, j(!1), F(), setTimeout(() => I(), 100);
|
|
159
|
-
}, [F, I]);
|
|
160
|
-
return l(() => {
|
|
161
|
-
a.current && (a.current.options.scrollback = t);
|
|
162
|
-
}, [t]), l(() => {
|
|
163
|
-
if (!i.current) return;
|
|
164
|
-
let e = new ResizeObserver(() => {
|
|
165
|
-
o.current?.fit();
|
|
166
|
-
});
|
|
167
|
-
return e.observe(i.current), () => e.disconnect();
|
|
168
|
-
}, []), /* @__PURE__ */ p("div", {
|
|
169
|
-
className: y.terminalContainer,
|
|
170
|
-
children: [/* @__PURE__ */ f("div", {
|
|
171
|
-
className: y.terminalWrapper,
|
|
172
|
-
children: /* @__PURE__ */ f("div", {
|
|
173
|
-
ref: i,
|
|
174
|
-
className: y.terminal,
|
|
175
|
-
"data-testid": "xterm-terminal"
|
|
176
|
-
})
|
|
177
|
-
}), /* @__PURE__ */ p("div", {
|
|
178
|
-
className: y.statusBar,
|
|
179
|
-
children: [
|
|
180
|
-
/* @__PURE__ */ p("span", {
|
|
181
|
-
className: y.statusIndicator,
|
|
182
|
-
"data-status": O,
|
|
183
|
-
children: [
|
|
184
|
-
O === "idle" && "○",
|
|
185
|
-
O === "connecting" && "●",
|
|
186
|
-
O === "connected" && "●",
|
|
187
|
-
O === "disconnected" && "○",
|
|
188
|
-
O === "error" && "●"
|
|
189
|
-
]
|
|
190
|
-
}),
|
|
191
|
-
/* @__PURE__ */ p("span", {
|
|
192
|
-
className: y.statusText,
|
|
193
|
-
children: [
|
|
194
|
-
O === "idle" && "Idle",
|
|
195
|
-
O === "connecting" && "Connecting...",
|
|
196
|
-
O === "connected" && "Connected",
|
|
197
|
-
O === "disconnected" && "Disconnected",
|
|
198
|
-
O === "error" && "Error"
|
|
199
|
-
]
|
|
200
|
-
}),
|
|
201
|
-
A && /* @__PURE__ */ f("button", {
|
|
202
|
-
onClick: L,
|
|
203
|
-
className: y.reconnectButton,
|
|
204
|
-
children: "Reconnect"
|
|
205
|
-
})
|
|
206
|
-
]
|
|
207
|
-
})]
|
|
208
|
-
});
|
|
209
|
-
};
|
|
210
|
-
function C(e) {
|
|
211
|
-
let t = document.createElement("textarea");
|
|
212
|
-
t.value = e, t.style.position = "fixed", t.style.left = "-9999px", t.style.opacity = "0", document.body.appendChild(t), t.select(), t.setSelectionRange(0, e.length);
|
|
213
|
-
try {
|
|
214
|
-
let e = document.execCommand("copy");
|
|
215
|
-
console.log("[XTermTerminal] Fallback copy result:", e ? "success" : "failed");
|
|
216
|
-
} catch (e) {
|
|
217
|
-
console.error("[XTermTerminal] Fallback copy failed:", e);
|
|
218
|
-
} finally {
|
|
219
|
-
document.body.removeChild(t);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
//#endregion
|
|
223
|
-
//#region src/components/Apps/TerminalApp/TerminalNotSupported.tsx
|
|
224
|
-
var w = () => {
|
|
225
|
-
let { t: e } = m("apps");
|
|
226
|
-
return /* @__PURE__ */ f(r, {
|
|
227
|
-
"data-testid": "terminal-not-supported",
|
|
228
|
-
style: {
|
|
229
|
-
width: "100%",
|
|
230
|
-
height: "100%"
|
|
231
|
-
},
|
|
232
|
-
children: /* @__PURE__ */ p(i, {
|
|
233
|
-
align: "center",
|
|
234
|
-
gap: "lg",
|
|
235
|
-
p: "xl",
|
|
236
|
-
maw: 400,
|
|
237
|
-
children: [
|
|
238
|
-
/* @__PURE__ */ f(t, {
|
|
239
|
-
size: "3rem",
|
|
240
|
-
children: /* @__PURE__ */ f(h, {})
|
|
241
|
-
}),
|
|
242
|
-
/* @__PURE__ */ f(t, {
|
|
243
|
-
size: "lg",
|
|
244
|
-
fw: 700,
|
|
245
|
-
ta: "center",
|
|
246
|
-
children: e("terminal.notAvailable")
|
|
247
|
-
}),
|
|
248
|
-
/* @__PURE__ */ f(t, {
|
|
249
|
-
size: "sm",
|
|
250
|
-
c: "dimmed",
|
|
251
|
-
ta: "center",
|
|
252
|
-
children: e("terminal.notAvailableMessage")
|
|
253
|
-
}),
|
|
254
|
-
/* @__PURE__ */ f(t, {
|
|
255
|
-
size: "sm",
|
|
256
|
-
c: "dimmed",
|
|
257
|
-
ta: "center",
|
|
258
|
-
children: e("terminal.dockerRequired")
|
|
259
|
-
})
|
|
260
|
-
]
|
|
261
|
-
})
|
|
262
|
-
});
|
|
263
|
-
}, T = /* @__PURE__ */ e({ default: () => E }), E = ({ window: e, notifyReady: t }) => {
|
|
264
|
-
let r = e, i = r?.id ?? "", p = n(), m = s(i), h = a(i), { setScrollback: g, setShell: _, reset: v } = o(), y = u(null), b = u(!1), x = u(!1), [C, T] = d("idle"), [E, D] = d(null);
|
|
265
|
-
l(() => {
|
|
266
|
-
p !== "docker" || x.current || (x.current = !0, (async () => {
|
|
267
|
-
try {
|
|
268
|
-
let e = await fetch("/api/shell");
|
|
269
|
-
if (e.ok) {
|
|
270
|
-
let t = await e.json();
|
|
271
|
-
D(t), (!h || h === "/bin/zsh") && _(i, t.default);
|
|
272
|
-
}
|
|
273
|
-
} catch (e) {
|
|
274
|
-
console.error("[TerminalApp] Failed to fetch shell info:", e), h || _(i, "/bin/zsh");
|
|
275
|
-
}
|
|
276
|
-
})());
|
|
277
|
-
}, [
|
|
278
|
-
p,
|
|
279
|
-
h,
|
|
280
|
-
_,
|
|
281
|
-
i
|
|
282
|
-
]), l(() => {
|
|
283
|
-
v(i);
|
|
284
|
-
}, [i, v]);
|
|
285
|
-
let O = c((e) => {
|
|
286
|
-
y.current = e;
|
|
287
|
-
}, []), k = c((e) => {
|
|
288
|
-
T(e);
|
|
289
|
-
}, []);
|
|
290
|
-
return l(() => {
|
|
291
|
-
!b.current && t && (b.current = !0, t({
|
|
292
|
-
...r?.contentData ?? {},
|
|
293
|
-
clear: () => y.current?.clear(),
|
|
294
|
-
reset: () => y.current?.reset(),
|
|
295
|
-
copy: () => y.current?.copy(),
|
|
296
|
-
paste: () => y.current?.paste(),
|
|
297
|
-
reconnect: () => y.current?.reconnect(),
|
|
298
|
-
setScrollback: (e) => g(i, e),
|
|
299
|
-
setShell: (e) => _(i, e),
|
|
300
|
-
connectionStatus: C
|
|
301
|
-
}));
|
|
302
|
-
}, [
|
|
303
|
-
t,
|
|
304
|
-
g,
|
|
305
|
-
_,
|
|
306
|
-
i,
|
|
307
|
-
r?.contentData,
|
|
308
|
-
C
|
|
309
|
-
]), l(() => {
|
|
310
|
-
b.current && t && t({
|
|
311
|
-
...r?.contentData ?? {},
|
|
312
|
-
connectionStatus: C
|
|
313
|
-
});
|
|
314
|
-
}, [
|
|
315
|
-
C,
|
|
316
|
-
t,
|
|
317
|
-
r?.contentData
|
|
318
|
-
]), p === "docker" ? /* @__PURE__ */ f(S, {
|
|
319
|
-
shell: h || E?.default || "/bin/zsh",
|
|
320
|
-
scrollback: m,
|
|
321
|
-
onTerminalReady: O,
|
|
322
|
-
onConnectionChange: k
|
|
323
|
-
}) : /* @__PURE__ */ f(w, {});
|
|
324
|
-
};
|
|
325
|
-
//#endregion
|
|
326
|
-
export { T as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./Box-zW6Twge8.cjs`);const e=require(`./getRuntime-BFK0-8R1.cjs`),t=require(`./Center-DKUE2pER.cjs`),n=require(`./Stack-D4jAiRfc.cjs`),r=require(`./terminalStore-iIuyodfK.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`),o=require(`react-i18next`),s=require(`react-icons/fc`),c=require(`@xterm/xterm`),l=require(`@xterm/addon-fit`),u=require(`@xterm/addon-clipboard`);require(`@xterm/xterm/css/xterm.css`);var d={terminalContainer:`_terminalContainer_15s96_1`,terminalWrapper:`_terminalWrapper_15s96_9`,terminal:`_terminal_15s96_1`,statusBar:`_statusBar_15s96_33`,statusIndicator:`_statusIndicator_15s96_45`,statusText:`_statusText_15s96_70`,reconnectButton:`_reconnectButton_15s96_74`},f=5,p=1e3,m=({shell:e,scrollback:t,onTerminalReady:n,onConnectionChange:r})=>{let o=(0,i.useRef)(null),s=(0,i.useRef)(null),m=(0,i.useRef)(null),g=(0,i.useRef)(null),_=(0,i.useRef)(null),v=(0,i.useRef)(0),y=(0,i.useRef)(!1),b=(0,i.useRef)(!1),x=(0,i.useRef)(e),S=(0,i.useRef)(null),C=(0,i.useRef)(!1),[w,T]=(0,i.useState)(`idle`),[E,D]=(0,i.useState)(!1),O=(0,i.useRef)(n),k=(0,i.useRef)(r);(0,i.useEffect)(()=>{O.current=n},[n]),(0,i.useEffect)(()=>{k.current=r},[r]),(0,i.useEffect)(()=>{x.current=e},[e]);let A=(0,i.useCallback)(e=>{y.current&&(T(e),k.current?.(e))},[]),j=(0,i.useCallback)(()=>{S.current?.abort(),S.current=null;let e=_.current;if(e&&(_.current=null,e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)){try{e.send(JSON.stringify({type:`kill`}))}catch{}e.close()}b.current=!1},[]),M=(0,i.useCallback)(()=>{if(!y.current||b.current||_.current?.readyState===WebSocket.OPEN)return;b.current=!0;let e=new AbortController;S.current=e;let t=`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}/api/pty`;console.log(`[XTermTerminal] Connecting (attempt ${v.current+1}/${f})`),A(`connecting`);let n=new WebSocket(t);_.current=n,n.onopen=()=>{y.current&&console.log(`[XTermTerminal] WebSocket opened`)},n.onmessage=e=>{if(y.current&&typeof e.data==`string`)try{let t=JSON.parse(e.data);switch(t.type){case`ready`:console.log(`[XTermTerminal] Server ready, sending start`),n.send(JSON.stringify({type:`start`,shell:x.current,cwd:`/app/workspace`,cols:s.current?.cols||80,rows:s.current?.rows||24}));break;case`started`:console.log(`[XTermTerminal] PTY started`),v.current=0,b.current=!1,D(!1),A(`connected`);break;case`exit`:console.log(`[XTermTerminal] PTY exited:`,t.code),_.current=null,b.current=!1,A(`disconnected`),D(!0);break;case`error`:console.error(`[XTermTerminal] Server error:`,t.message),b.current=!1,A(`error`),D(!0);break}}catch{s.current&&s.current.write(e.data)}},n.onclose=()=>{if(!(!y.current||e.signal.aborted))if(console.log(`[XTermTerminal] WebSocket closed`),_.current=null,b.current=!1,v.current<f){v.current++;let t=p*2**(v.current-1);console.log(`[XTermTerminal] Retrying in ${t}ms`),setTimeout(()=>{y.current&&!_.current&&!e.signal.aborted&&M()},t)}else A(`disconnected`),D(!0)},n.onerror=()=>{y.current&&(console.error(`[XTermTerminal] WebSocket error`),b.current=!1,n.close(),A(`error`),D(!0))}},[A]);(0,i.useEffect)(()=>{if(C.current||(C.current=!0,y.current=!0,!o.current))return;let e=new c.Terminal({fontFamily:`'Operator Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace`,fontSize:14,theme:{background:`#1e1e1e`,foreground:`#d4d4d4`,cursor:`#ffffff`,selectionBackground:`#264f78`},cursorStyle:`underline`,cursorBlink:!0,scrollback:t}),n=new l.FitAddon,r=new u.ClipboardAddon;return e.loadAddon(n),e.loadAddon(r),e.open(o.current),n.fit(),s.current=e,m.current=n,g.current=r,e.onData(e=>{_.current?.readyState===WebSocket.OPEN&&_.current.send(JSON.stringify({type:`input`,data:e}))}),e.onResize(({cols:e,rows:t})=>{_.current?.readyState===WebSocket.OPEN&&_.current.send(JSON.stringify({type:`resize`,cols:e,rows:t}))}),O.current?.({clear:()=>e.clear(),reset:()=>e.reset(),write:t=>e.write(t),copy:async()=>{let t=e.getSelection();if(console.log(`[XTermTerminal] Copy called, selection length:`,t?.length??0),!t){console.log(`[XTermTerminal] No selection to copy`);return}try{if(!navigator.clipboard){console.warn(`[XTermTerminal] Clipboard API not available (non-secure context?)`),h(t);return}await navigator.clipboard.writeText(t),console.log(`[XTermTerminal] Copied to clipboard successfully`)}catch(e){console.error(`[XTermTerminal] Clipboard write failed:`,e),h(t)}},paste:async()=>{console.log(`[XTermTerminal] Paste called`);try{if(!navigator.clipboard){console.warn(`[XTermTerminal] Clipboard API not available`);return}let t=await navigator.clipboard.readText();console.log(`[XTermTerminal] Paste text length:`,t.length),e.paste(t)}catch(e){console.error(`[XTermTerminal] Paste failed:`,e)}},reconnect:N}),requestAnimationFrame(()=>{y.current&&M()}),()=>{console.log(`[XTermTerminal] Cleanup`),y.current=!1,S.current?.abort(),S.current=null,s.current&&s.current.clear(),j(),e.dispose(),s.current=null,m.current=null}},[]);let N=(0,i.useCallback)(()=>{console.log(`[XTermTerminal] Reconnect triggered`),v.current=0,D(!1),j(),setTimeout(()=>M(),100)},[j,M]);return(0,i.useEffect)(()=>{s.current&&(s.current.options.scrollback=t)},[t]),(0,i.useEffect)(()=>{if(!o.current)return;let e=new ResizeObserver(()=>{m.current?.fit()});return e.observe(o.current),()=>e.disconnect()},[]),(0,a.jsxs)(`div`,{className:d.terminalContainer,children:[(0,a.jsx)(`div`,{className:d.terminalWrapper,children:(0,a.jsx)(`div`,{ref:o,className:d.terminal,"data-testid":`xterm-terminal`})}),(0,a.jsxs)(`div`,{className:d.statusBar,children:[(0,a.jsxs)(`span`,{className:d.statusIndicator,"data-status":w,children:[w===`idle`&&`○`,w===`connecting`&&`●`,w===`connected`&&`●`,w===`disconnected`&&`○`,w===`error`&&`●`]}),(0,a.jsxs)(`span`,{className:d.statusText,children:[w===`idle`&&`Idle`,w===`connecting`&&`Connecting...`,w===`connected`&&`Connected`,w===`disconnected`&&`Disconnected`,w===`error`&&`Error`]}),E&&(0,a.jsx)(`button`,{onClick:N,className:d.reconnectButton,children:`Reconnect`})]})]})};function h(e){let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),t.setSelectionRange(0,e.length);try{let e=document.execCommand(`copy`);console.log(`[XTermTerminal] Fallback copy result:`,e?`success`:`failed`)}catch(e){console.error(`[XTermTerminal] Fallback copy failed:`,e)}finally{document.body.removeChild(t)}}var g=()=>{let{t:r}=(0,o.useTranslation)(`apps`);return(0,a.jsx)(t.t,{"data-testid":`terminal-not-supported`,style:{width:`100%`,height:`100%`},children:(0,a.jsxs)(n.t,{align:`center`,gap:`lg`,p:`xl`,maw:400,children:[(0,a.jsx)(e.o,{size:`3rem`,children:(0,a.jsx)(s.FcInfo,{})}),(0,a.jsx)(e.o,{size:`lg`,fw:700,ta:`center`,children:r(`terminal.notAvailable`)}),(0,a.jsx)(e.o,{size:`sm`,c:`dimmed`,ta:`center`,children:r(`terminal.notAvailableMessage`)}),(0,a.jsx)(e.o,{size:`sm`,c:`dimmed`,ta:`center`,children:r(`terminal.dockerRequired`)})]})})},_=({window:t,notifyReady:n})=>{let o=t,s=o?.id??``,c=e.t(),l=r.t(s),u=r.n(s),{setScrollback:d,setShell:f,reset:p}=r.r(),h=(0,i.useRef)(null),_=(0,i.useRef)(!1),v=(0,i.useRef)(!1),[y,b]=(0,i.useState)(`idle`),[x,S]=(0,i.useState)(null);(0,i.useEffect)(()=>{c!==`docker`||v.current||(v.current=!0,(async()=>{try{let e=await fetch(`/api/shell`);if(e.ok){let t=await e.json();S(t),(!u||u===`/bin/zsh`)&&f(s,t.default)}}catch(e){console.error(`[TerminalApp] Failed to fetch shell info:`,e),u||f(s,`/bin/zsh`)}})())},[c,u,f,s]),(0,i.useEffect)(()=>{p(s)},[s,p]);let C=(0,i.useCallback)(e=>{h.current=e},[]),w=(0,i.useCallback)(e=>{b(e)},[]);return(0,i.useEffect)(()=>{!_.current&&n&&(_.current=!0,n({...o?.contentData??{},clear:()=>h.current?.clear(),reset:()=>h.current?.reset(),copy:()=>h.current?.copy(),paste:()=>h.current?.paste(),reconnect:()=>h.current?.reconnect(),setScrollback:e=>d(s,e),setShell:e=>f(s,e),connectionStatus:y}))},[n,d,f,s,o?.contentData,y]),(0,i.useEffect)(()=>{_.current&&n&&n({...o?.contentData??{},connectionStatus:y})},[y,n,o?.contentData]),c===`docker`?(0,a.jsx)(m,{shell:u||x?.default||`/bin/zsh`,scrollback:l,onTerminalReady:C,onConnectionChange:w}):(0,a.jsx)(g,{})};Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return _}});
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./rolldown-runtime-CAFD8bLK.js";
|
|
2
|
-
import { t } from "./AppMenuBar-CnIEVjr8.js";
|
|
3
|
-
import { n, r, t as i } from "./terminalStore-IWdf4Mm6.js";
|
|
4
|
-
import { memo as a, useCallback as o, useMemo as s } from "react";
|
|
5
|
-
import { jsx as c } from "react/jsx-runtime";
|
|
6
|
-
import { useTranslation as l } from "react-i18next";
|
|
7
|
-
//#region src/components/Apps/TerminalApp/useTerminalMenuBar.ts
|
|
8
|
-
var u = [{
|
|
9
|
-
value: "/bin/sh",
|
|
10
|
-
label: "sh"
|
|
11
|
-
}, {
|
|
12
|
-
value: "/bin/zsh",
|
|
13
|
-
label: "zsh"
|
|
14
|
-
}];
|
|
15
|
-
function d(e) {
|
|
16
|
-
let { windowId: t, onExit: a, clear: c, reset: d, copy: f, paste: p, reconnect: m, connectionStatus: h = "idle" } = e, { t: g } = l("common"), { t: _ } = l("apps"), v = i(t), y = n(t), b = r((e) => e.setScrollback), x = r((e) => e.setShell), S = o((e) => b(t, e), [t, b]), C = o((e) => x(t, e), [t, x]), w = h === "connected";
|
|
17
|
-
return s(() => {
|
|
18
|
-
let e = [
|
|
19
|
-
{
|
|
20
|
-
type: "item",
|
|
21
|
-
label: _("terminal.menu.copy"),
|
|
22
|
-
icon: "FcCopy",
|
|
23
|
-
onClick: f ?? (() => {}),
|
|
24
|
-
disabled: !w
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
type: "item",
|
|
28
|
-
label: _("terminal.menu.paste"),
|
|
29
|
-
icon: "FcPaste",
|
|
30
|
-
onClick: p ?? (() => {}),
|
|
31
|
-
disabled: !w
|
|
32
|
-
},
|
|
33
|
-
{ type: "divider" },
|
|
34
|
-
{
|
|
35
|
-
type: "item",
|
|
36
|
-
label: _("terminal.menu.clear"),
|
|
37
|
-
icon: "FcClear",
|
|
38
|
-
onClick: c ?? (() => {}),
|
|
39
|
-
disabled: !w
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
type: "item",
|
|
43
|
-
label: _("terminal.menu.reset"),
|
|
44
|
-
icon: "FcSynchronize",
|
|
45
|
-
onClick: d ?? (() => {}),
|
|
46
|
-
disabled: !w
|
|
47
|
-
}
|
|
48
|
-
];
|
|
49
|
-
return !w && m && (e.push({ type: "divider" }), e.push({
|
|
50
|
-
type: "item",
|
|
51
|
-
label: _("terminal.menu.reconnect"),
|
|
52
|
-
icon: "FcSynchronize",
|
|
53
|
-
onClick: m
|
|
54
|
-
})), e.push({ type: "divider" }), e.push({
|
|
55
|
-
type: "item",
|
|
56
|
-
label: g("actions.exit"),
|
|
57
|
-
icon: "FcLeave",
|
|
58
|
-
onClick: a
|
|
59
|
-
}), [
|
|
60
|
-
{
|
|
61
|
-
type: "menu",
|
|
62
|
-
label: g("menu.edit"),
|
|
63
|
-
items: e
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
type: "number-input",
|
|
67
|
-
label: _("terminal.scrollback"),
|
|
68
|
-
value: v,
|
|
69
|
-
onChange: S,
|
|
70
|
-
min: 100,
|
|
71
|
-
max: 5e4,
|
|
72
|
-
step: 100,
|
|
73
|
-
placeholder: "5000"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
type: "select",
|
|
77
|
-
label: _("terminal.shell"),
|
|
78
|
-
options: u,
|
|
79
|
-
value: y,
|
|
80
|
-
onChange: C
|
|
81
|
-
}
|
|
82
|
-
];
|
|
83
|
-
}, [
|
|
84
|
-
g,
|
|
85
|
-
_,
|
|
86
|
-
a,
|
|
87
|
-
c,
|
|
88
|
-
d,
|
|
89
|
-
f,
|
|
90
|
-
p,
|
|
91
|
-
m,
|
|
92
|
-
w,
|
|
93
|
-
v,
|
|
94
|
-
y,
|
|
95
|
-
S,
|
|
96
|
-
C
|
|
97
|
-
]);
|
|
98
|
-
}
|
|
99
|
-
//#endregion
|
|
100
|
-
//#region src/components/Apps/TerminalApp/TerminalMenuBar.tsx
|
|
101
|
-
var f = /* @__PURE__ */ e({ TerminalMenuBar: () => p }), p = a(({ windowId: e, contentData: n, onExit: r }) => /* @__PURE__ */ c(t, { elements: d({
|
|
102
|
-
windowId: e,
|
|
103
|
-
onExit: r,
|
|
104
|
-
clear: n?.clear,
|
|
105
|
-
reset: n?.reset,
|
|
106
|
-
copy: n?.copy,
|
|
107
|
-
paste: n?.paste,
|
|
108
|
-
reconnect: n?.reconnect,
|
|
109
|
-
connectionStatus: n?.connectionStatus
|
|
110
|
-
}) }));
|
|
111
|
-
p.displayName = "TerminalMenuBar";
|
|
112
|
-
//#endregion
|
|
113
|
-
export { f as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./Box-zW6Twge8.cjs`);const e=require(`./AppMenuBar-B9U0n1Vv.cjs`),t=require(`./terminalStore-iIuyodfK.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`),i=require(`react-i18next`);var a=[{value:`/bin/sh`,label:`sh`},{value:`/bin/zsh`,label:`zsh`}];function o(e){let{windowId:r,onExit:o,clear:s,reset:c,copy:l,paste:u,reconnect:d,connectionStatus:f=`idle`}=e,{t:p}=(0,i.useTranslation)(`common`),{t:m}=(0,i.useTranslation)(`apps`),h=t.t(r),g=t.n(r),_=t.r(e=>e.setScrollback),v=t.r(e=>e.setShell),y=(0,n.useCallback)(e=>_(r,e),[r,_]),b=(0,n.useCallback)(e=>v(r,e),[r,v]),x=f===`connected`;return(0,n.useMemo)(()=>{let e=[{type:`item`,label:m(`terminal.menu.copy`),icon:`FcCopy`,onClick:l??(()=>{}),disabled:!x},{type:`item`,label:m(`terminal.menu.paste`),icon:`FcPaste`,onClick:u??(()=>{}),disabled:!x},{type:`divider`},{type:`item`,label:m(`terminal.menu.clear`),icon:`FcClear`,onClick:s??(()=>{}),disabled:!x},{type:`item`,label:m(`terminal.menu.reset`),icon:`FcSynchronize`,onClick:c??(()=>{}),disabled:!x}];return!x&&d&&(e.push({type:`divider`}),e.push({type:`item`,label:m(`terminal.menu.reconnect`),icon:`FcSynchronize`,onClick:d})),e.push({type:`divider`}),e.push({type:`item`,label:p(`actions.exit`),icon:`FcLeave`,onClick:o}),[{type:`menu`,label:p(`menu.edit`),items:e},{type:`number-input`,label:m(`terminal.scrollback`),value:h,onChange:y,min:100,max:5e4,step:100,placeholder:`5000`},{type:`select`,label:m(`terminal.shell`),options:a,value:g,onChange:b}]},[p,m,o,s,c,l,u,d,x,h,g,y,b])}var s=(0,n.memo)(({windowId:t,contentData:n,onExit:i})=>(0,r.jsx)(e.t,{elements:o({windowId:t,onExit:i,clear:n?.clear,reset:n?.reset,copy:n?.copy,paste:n?.paste,reconnect:n?.reconnect,connectionStatus:n?.connectionStatus})}));s.displayName=`TerminalMenuBar`,Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`./TerminalMenuBar-DNshPmCa.cjs`);exports.TerminalMenuBar=e.t;
|