@fde-desktop/fde-core 0.4.7 → 0.4.9
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 +26 -0
- package/dist/AccordionChevron-kn5kSrEc.cjs +1 -0
- package/dist/ActionIcon-Drh4p6Fv.js +145 -0
- package/dist/ActionIcon-alk2zZD6.cjs +1 -0
- package/dist/AppEmptyState-BWCUbf-B.cjs +1 -0
- package/dist/AppEmptyState-Bxpit0JV.js +49 -0
- package/dist/AppIcon-BU7a3ZNH.cjs +1 -0
- package/dist/AppIcon-XumS3bIG.js +80 -0
- package/dist/AppMenuBar-B9U0n1Vv.cjs +1 -0
- package/dist/AppMenuBar-CnIEVjr8.js +2049 -0
- package/dist/Box-DSKR_qaa.js +1579 -0
- package/dist/Box-zW6Twge8.cjs +1 -0
- package/dist/Button-DMlnrqyx.cjs +1 -0
- package/dist/Button-wTOTQKxF.js +178 -0
- package/dist/CalendarApp-B_e1B1Yn.cjs +1 -0
- package/dist/CalendarApp-C-l9D6nd.cjs +1 -0
- package/dist/CalendarApp-D0ftTCTG.js +1399 -0
- package/dist/Center-CmxXB9ql.js +25 -0
- package/dist/Center-DKUE2pER.cjs +1 -0
- package/dist/CheckIcon-CZhtJD1O.cjs +1 -0
- package/dist/CheckIcon-N5qBqXQJ.js +25 -0
- package/dist/CodeServerApp-BOoGwZ7r.cjs +1 -0
- package/dist/CodeServerApp-Be3I5EGg.cjs +1 -0
- package/dist/CodeServerApp-DW18EZxa.js +150 -0
- package/dist/ColorPicker-BCNqi02x.js +997 -0
- package/dist/ColorPicker-BrDE7tMO.cjs +1 -0
- package/dist/Colors-ClnDxnyA.js +15 -0
- package/dist/Colors-zP2AFgU3.cjs +1 -0
- package/dist/CreateItemApp-B12M1E_1.cjs +1 -0
- package/dist/CreateItemApp-TAAprby3.js +400 -0
- package/dist/CreateItemApp-ePB6ujNl.cjs +1 -0
- package/dist/DeviceInfoApp-BMF18BGo.cjs +1 -0
- package/dist/DeviceInfoApp-DRy0H3aT.cjs +1 -0
- package/dist/DeviceInfoApp-lgpwkeRR.js +223 -0
- package/dist/DownloadProgress-EoyCaD5O.js +174 -0
- package/dist/DownloadProgress-VNdj22U8.cjs +1 -0
- package/dist/FileIcon-7JaSR3Gn.js +89 -0
- package/dist/FileIcon-CIXopWLv.cjs +1 -0
- package/dist/FilePickerApp-DaMgEqKh.js +409 -0
- package/dist/FilePickerApp-DjmuSFqa.cjs +1 -0
- package/dist/FilesApp-Bp7wfrBZ.cjs +1 -0
- package/dist/FilesApp-BpJJRKhi.cjs +1 -0
- package/dist/FilesApp-Cj94QG5o.js +225 -0
- package/dist/Group-CtBJSfCo.js +48 -0
- package/dist/Group-Dsrf6lEK.cjs +1 -0
- package/dist/ImageViewerApp-BaLP3gkO.js +69 -0
- package/dist/ImageViewerApp-DlHGeB3S.cjs +1 -0
- package/dist/ImageViewerApp-DoXd_Swu.cjs +1 -0
- package/dist/ImageViewerMenuBar-CabGSi9r.js +87 -0
- package/dist/ImageViewerMenuBar-SAI7UNz7.cjs +1 -0
- package/dist/ImageViewerMenuBar-_Jr29gii.cjs +1 -0
- package/dist/MenuEditApp-BJjlPTOa.cjs +1 -0
- package/dist/MenuEditApp-BTRppYnD.js +497 -0
- package/dist/MenuEditApp-JPsGT-S3.cjs +1 -0
- package/dist/MenuEditMenuBar-BydGkqMw.cjs +1 -0
- package/dist/MenuEditMenuBar-DptlwVPQ.cjs +1 -0
- package/dist/MenuEditMenuBar-x1IQrHP2.js +60 -0
- package/dist/NotesApp-BOcRGO7w.cjs +1 -0
- package/dist/NotesApp-CQe7UfBC.js +364 -0
- package/dist/NotesApp-OL07JXRE.cjs +1 -0
- package/dist/NotesMenuBar-BSI_2Y7p.cjs +1 -0
- package/dist/NotesMenuBar-Df6aW85J.cjs +1 -0
- package/dist/NotesMenuBar-VhpIe68v.js +62 -0
- package/dist/Paper-BX_9odR6.js +30 -0
- package/dist/Paper-D8-BaBx2.cjs +1 -0
- package/dist/PdfApp-CNEbty5v.cjs +1 -0
- package/dist/PdfApp-CVv3ZCaM.cjs +1 -0
- package/dist/PdfApp-DL_R9-Nc.js +39 -0
- package/dist/PdfMenuBar--E6kDyrT.cjs +1 -0
- package/dist/PdfMenuBar-DZCLSOpR.js +39 -0
- package/dist/PdfMenuBar-Dj5cJUkg.cjs +1 -0
- package/dist/SettingsApp-BlmHuAjT.js +1831 -0
- package/dist/SettingsApp-CNvIgf5B.cjs +1 -0
- package/dist/SettingsApp-DWxanNE4.cjs +1 -0
- package/dist/SettingsMenuBar-CBoOBCfx.cjs +1 -0
- package/dist/SettingsMenuBar-DQooFkZN.cjs +1 -0
- package/dist/SettingsMenuBar-YWiJHaxq.js +42 -0
- package/dist/Slider-BUiHxjKO.cjs +1 -0
- package/dist/Slider-t-NcD60t.js +1176 -0
- package/dist/Stack-Bp1Ek2Gp.js +34 -0
- package/dist/Stack-D4jAiRfc.cjs +1 -0
- package/dist/StorybookApp-CDLV_kja.cjs +1 -0
- package/dist/StorybookApp-DKwlPCmo.js +10 -0
- package/dist/TerminalApp-BCB7i1lR.cjs +1 -0
- package/dist/TerminalApp-BYc_gHLe.js +326 -0
- package/dist/TerminalApp-Dviz6aP2.cjs +1 -0
- package/dist/TerminalMenuBar-D5tPmgR_.js +113 -0
- package/dist/TerminalMenuBar-DNshPmCa.cjs +1 -0
- package/dist/TerminalMenuBar-HzMSR7XP.cjs +1 -0
- package/dist/TextInput-C-JtGWn1.js +981 -0
- package/dist/TextInput-CrsmcOip.cjs +1 -0
- package/dist/Tooltip-D5Cd9wtz.cjs +1 -0
- package/dist/Tooltip-DOeIvhrO.js +1142 -0
- package/dist/UnstyledButton-DGaG-e_G.js +25 -0
- package/dist/UnstyledButton-DX2pTahr.cjs +1 -0
- package/dist/UploaderApp-C6xA5Rrf2.cjs +1 -0
- package/dist/UploaderApp-DnHIRxB_.cjs +1 -0
- package/dist/UploaderApp-qBfpukR_.js +488 -0
- package/dist/VscIcon-CcMdrFoJ.cjs +1 -0
- package/dist/VscIcon-DBfVnArE.js +8 -0
- package/dist/create-safe-context-Bboj0GWC.cjs +1 -0
- package/dist/create-safe-context-XT2cxc14.js +12 -0
- package/dist/desktopStore-CZoA9VHO.cjs +1 -0
- package/dist/desktopStore-F8bgLqFl.js +1768 -0
- package/dist/getRuntime-BFK0-8R1.cjs +1 -0
- package/dist/getRuntime-DAPqFH2W.js +63 -0
- package/dist/imageViewerStore-BB_tssZR.cjs +1 -0
- package/dist/imageViewerStore-C5kWz0o7.js +50 -0
- package/dist/index.cjs +1 -5642
- package/dist/index.css +2 -9192
- package/dist/index.d.ts +2258 -2019
- package/dist/index.js +4826 -4798
- package/dist/is-element-Bu_JY8Qy.js +7 -0
- package/dist/is-element-CdV0xajp.cjs +1 -0
- package/dist/menuEditStore-CTeM_dns.cjs +1 -0
- package/dist/menuEditStore-Cj1zAwxQ.js +38 -0
- package/dist/notesStore-BCEl1D_v.cjs +1 -0
- package/dist/notesStore-BPyRTHEc.js +36 -0
- package/dist/rolldown-runtime-CAFD8bLK.js +11 -0
- package/dist/settingsAppStore-BDQ3ts1y.js +29 -0
- package/dist/settingsAppStore-CMBc13VU.cjs +1 -0
- package/dist/terminalStore-IWdf4Mm6.js +30 -0
- package/dist/terminalStore-iIuyodfK.cjs +1 -0
- package/dist/use-merged-ref-BT8_u6vW.js +25 -0
- package/dist/use-merged-ref-n9Gw9LNn.cjs +1 -0
- package/dist/use-resolved-styles-api-8OXE2oRq.cjs +1 -0
- package/dist/use-resolved-styles-api-DNUlJJZf.js +21 -0
- package/dist/use-uncontrolled-A4hm9ATM.js +23 -0
- package/dist/use-uncontrolled-DDJVQiM_.cjs +1 -0
- package/dist/useAdaptiveDimensions-AVDc_qPa.js +40 -0
- package/dist/useAdaptiveDimensions-CfITBJ_m.cjs +1 -0
- package/dist/useCloseInterceptor-BZd3VILp.js +51 -0
- package/dist/useCloseInterceptor-yntBEzNc.cjs +1 -0
- package/dist/useDynamicIcon-Bf0t2foA.js +22 -0
- package/dist/useDynamicIcon-DJ_il30E.cjs +1 -0
- package/dist/useMenuBarUtils-nJIPJGIQ.cjs +1 -0
- package/dist/useMenuBarUtils-nmu9yehT.js +6 -0
- package/dist/useOpenApp-CBIm7Gzl.js +279 -0
- package/dist/useOpenApp-DW4x79Zg.cjs +1 -0
- package/dist/useResolvedUrl-BkMPM1fM.cjs +1 -0
- package/dist/useResolvedUrl-DQpLqOoL.js +30 -0
- package/package.json +7 -3
- package/dist/CalendarApp-CHLUCAI7.css +0 -744
- package/dist/CalendarApp-K7ZOUZ6C.js +0 -2
- package/dist/CalendarApp-OTGEERSS.cjs +0 -8
- package/dist/CodeServerApp-5KZGO7HL.css +0 -75
- package/dist/CodeServerApp-LUZFCQBI.js +0 -3
- package/dist/CodeServerApp-P3TMJPLY.cjs +0 -9
- package/dist/CreateItemApp-ESQ42VHH.js +0 -8
- package/dist/CreateItemApp-PQB5GTFG.css +0 -107
- package/dist/CreateItemApp-RFE3REWZ.cjs +0 -14
- package/dist/DeviceInfoApp-XNIS6ZY6.js +0 -5
- package/dist/DeviceInfoApp-ZNLQNOKI.cjs +0 -11
- package/dist/DeviceInfoApp-ZSMRSITP.css +0 -7
- package/dist/FilesApp-4GEU64QN.js +0 -8
- package/dist/FilesApp-E6L5W3T2.css +0 -1817
- package/dist/FilesApp-QSLB5IWR.cjs +0 -14
- package/dist/ImageViewerApp-N2Q7E7WZ.css +0 -215
- package/dist/ImageViewerApp-NCVDKLB3.js +0 -11
- package/dist/ImageViewerApp-QB373H5Z.cjs +0 -17
- package/dist/ImageViewerMenuBar-I3TFKQPS.cjs +0 -14
- package/dist/ImageViewerMenuBar-TV5C6TM2.js +0 -5
- package/dist/ImageViewerMenuBar-XLK4LIHW.css +0 -56
- package/dist/MenuEditApp-5EFYAPFC.cjs +0 -15
- package/dist/MenuEditApp-V5XOPIHX.js +0 -9
- package/dist/MenuEditApp-YA6HSAMJ.css +0 -94
- package/dist/MenuEditMenuBar-7VHMZNRM.css +0 -56
- package/dist/MenuEditMenuBar-GF6L4PGZ.cjs +0 -15
- package/dist/MenuEditMenuBar-IUXFPZE5.js +0 -6
- package/dist/NotesApp-2YNT7Y3D.js +0 -10
- package/dist/NotesApp-IAEE7YHU.cjs +0 -16
- package/dist/NotesApp-TQ6IHDNX.css +0 -302
- package/dist/NotesMenuBar-25LKN3SE.cjs +0 -15
- package/dist/NotesMenuBar-MXLOX7OT.css +0 -56
- package/dist/NotesMenuBar-SRV3AIAL.js +0 -6
- package/dist/PdfApp-67XIX6AM.js +0 -10
- package/dist/PdfApp-BUIC5U5H.css +0 -206
- package/dist/PdfApp-GZ6RHTBR.cjs +0 -16
- package/dist/PdfMenuBar-NLZC6JHS.js +0 -4
- package/dist/PdfMenuBar-QUM72EE4.css +0 -56
- package/dist/PdfMenuBar-WBRTKMLN.cjs +0 -13
- package/dist/SettingsApp-BPLMGPNK.cjs +0 -20
- package/dist/SettingsApp-JVOSEFH3.css +0 -283
- package/dist/SettingsApp-LUDIXCYY.js +0 -14
- package/dist/SettingsMenuBar-5CBSSMVM.css +0 -56
- package/dist/SettingsMenuBar-VLT6TTCM.js +0 -6
- package/dist/SettingsMenuBar-Y5QEXDEO.cjs +0 -15
- package/dist/StorybookApp-NQ244BER.css +0 -7
- package/dist/StorybookApp-NZDV4X3Y.js +0 -1
- package/dist/StorybookApp-VF3KIMU3.cjs +0 -7
- package/dist/TerminalApp-CDGWRBFJ.cjs +0 -10
- package/dist/TerminalApp-EAATMIMX.css +0 -77
- package/dist/TerminalApp-GCKJCM55.js +0 -4
- package/dist/TerminalMenuBar-3J26O26Q.css +0 -56
- package/dist/TerminalMenuBar-7BH7MGNJ.cjs +0 -14
- package/dist/TerminalMenuBar-7JAEQUZ4.js +0 -5
- package/dist/UploaderApp-6KV3TGCT.css +0 -1817
- package/dist/UploaderApp-FJC2J4I5.js +0 -10
- package/dist/UploaderApp-HLXJYJZQ.cjs +0 -16
- package/dist/chunk-2PSTHGTD.cjs +0 -42
- package/dist/chunk-2RQX7QBP.cjs +0 -148
- package/dist/chunk-43W6UDUZ.cjs +0 -19
- package/dist/chunk-4E45FBAH.js +0 -223
- package/dist/chunk-4E4U2A25.cjs +0 -237
- package/dist/chunk-4QHX7CMN.cjs +0 -38
- package/dist/chunk-4XURSNM4.js +0 -43
- package/dist/chunk-4ZCRYHL6.js +0 -407
- package/dist/chunk-5C6IQE42.cjs +0 -35
- package/dist/chunk-5HUYQDQF.js +0 -36
- package/dist/chunk-5NOHYJNH.js +0 -84
- package/dist/chunk-5QFZW6HW.js +0 -2241
- package/dist/chunk-5YH6AKEO.js +0 -146
- package/dist/chunk-756GPSPM.js +0 -283
- package/dist/chunk-7WUYUTPN.js +0 -2293
- package/dist/chunk-7XCMBW64.js +0 -162
- package/dist/chunk-7Y7HB7FB.cjs +0 -53
- package/dist/chunk-ABIAPZ6S.cjs +0 -45
- package/dist/chunk-ACHGJKCI.cjs +0 -286
- package/dist/chunk-BQCD5RAF.cjs +0 -48
- package/dist/chunk-BQL3YXMV.js +0 -17429
- package/dist/chunk-C3XER4N3.js +0 -442
- package/dist/chunk-C6BEZNAM.cjs +0 -45
- package/dist/chunk-CILU6BWC.cjs +0 -548
- package/dist/chunk-CV5PUHAE.cjs +0 -86
- package/dist/chunk-D5MVFFID.js +0 -42
- package/dist/chunk-D7R55WWT.js +0 -1601
- package/dist/chunk-DFYDUXWP.cjs +0 -34
- package/dist/chunk-DWP2SYF7.js +0 -55
- package/dist/chunk-E55VXNLK.cjs +0 -17498
- package/dist/chunk-E5FW77FG.js +0 -77
- package/dist/chunk-EAELL43F.js +0 -42
- package/dist/chunk-EX5V2ZTU.js +0 -40
- package/dist/chunk-FD7QZCTN.cjs +0 -2329
- package/dist/chunk-FH4ILMKF.js +0 -38
- package/dist/chunk-FRHBM2U7.js +0 -33
- package/dist/chunk-FX2TPX3L.cjs +0 -45
- package/dist/chunk-GPXNLTPI.cjs +0 -451
- package/dist/chunk-GRYCUBJZ.js +0 -9
- package/dist/chunk-HPHHS7FJ.cjs +0 -49
- package/dist/chunk-HWHBSAUC.js +0 -40
- package/dist/chunk-IDHP3R4I.js +0 -31
- package/dist/chunk-IHWGT3DL.js +0 -86
- package/dist/chunk-JEBKLIMU.cjs +0 -123
- package/dist/chunk-KDZLBI6F.cjs +0 -324
- package/dist/chunk-KQHICFX3.js +0 -121
- package/dist/chunk-LMJE6V4N.cjs +0 -42
- package/dist/chunk-MCHPDWVH.js +0 -444
- package/dist/chunk-MVDGM5Y4.js +0 -68
- package/dist/chunk-N36HBL53.cjs +0 -165
- package/dist/chunk-NV5GNFA3.js +0 -541
- package/dist/chunk-NVEGEK3N.js +0 -31
- package/dist/chunk-OJIDKDKF.js +0 -68
- package/dist/chunk-PGGNSLM7.js +0 -215
- package/dist/chunk-PKPQA5NR.js +0 -15
- package/dist/chunk-PNDBLFJW.cjs +0 -50
- package/dist/chunk-Q3WA72BF.cjs +0 -70
- package/dist/chunk-RDIDAZ3S.cjs +0 -9
- package/dist/chunk-RGJPRXYY.js +0 -48
- package/dist/chunk-RPSYXORB.cjs +0 -219
- package/dist/chunk-RQ6OZRUW.cjs +0 -41
- package/dist/chunk-SBE4SZAN.cjs +0 -226
- package/dist/chunk-TAFNCDUI.js +0 -234
- package/dist/chunk-TFIDSENE.cjs +0 -88
- package/dist/chunk-TGWMOHAO.js +0 -17
- package/dist/chunk-UA6XSTW6.js +0 -48
- package/dist/chunk-UIQCTAVM.cjs +0 -59
- package/dist/chunk-UKYESVDS.cjs +0 -50
- package/dist/chunk-V4N255NL.cjs +0 -2309
- package/dist/chunk-VO6KXO2I.js +0 -32
- package/dist/chunk-WXSTSC3D.cjs +0 -83
- package/dist/chunk-XSK7BWYO.js +0 -47
- package/dist/chunk-XVAPJ4PP.cjs +0 -449
- package/dist/chunk-XVASHRCE.cjs +0 -70
- package/dist/chunk-XYSMVQQD.cjs +0 -1608
- package/dist/chunk-YAIWI4Z5.js +0 -7
- package/dist/chunk-YGYOLDKR.js +0 -280
- package/dist/chunk-YP2PLNOF.cjs +0 -34
- package/dist/chunk-YSOLW4FS.cjs +0 -11
- package/dist/chunk-YY6OUR2U.js +0 -44
- package/dist/chunk-YZWS7FDT.cjs +0 -409
- package/dist/chunk-Z5YGWL65.cjs +0 -39
- package/dist/chunk-ZHNDXNL4.js +0 -45
- package/dist/chunk-ZX3EDZ5C.cjs +0 -17
- package/dist/index.d.cts +0 -2019
|
@@ -0,0 +1,34 @@
|
|
|
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 };
|
|
@@ -0,0 +1 @@
|
|
|
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}});
|
|
@@ -0,0 +1 @@
|
|
|
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}});
|
|
@@ -0,0 +1,10 @@
|
|
|
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 };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./TerminalApp-Dviz6aP2.cjs`);exports.default=e.t;
|
|
@@ -0,0 +1,326 @@
|
|
|
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 };
|
|
@@ -0,0 +1 @@
|
|
|
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 _}});
|
|
@@ -0,0 +1,113 @@
|
|
|
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 };
|
|
@@ -0,0 +1 @@
|
|
|
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}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./TerminalMenuBar-DNshPmCa.cjs`);exports.TerminalMenuBar=e.t;
|