@fde-desktop/fde-core 0.4.8 → 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-CJXAq5o5.js → AccordionChevron-DxpOyInK.js} +1 -1
- package/dist/AccordionChevron-kn5kSrEc.cjs +1 -0
- package/dist/{ActionIcon-CtVbYlGY.js → ActionIcon-Drh4p6Fv.js} +32 -32
- 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-DCDuaU-t.js → AppIcon-XumS3bIG.js} +4 -4
- package/dist/AppMenuBar-B9U0n1Vv.cjs +1 -0
- package/dist/AppMenuBar-CnIEVjr8.js +2049 -0
- package/dist/{Box-DRm8EabO.js → Box-DSKR_qaa.js} +257 -271
- package/dist/Box-zW6Twge8.cjs +1 -0
- package/dist/Button-DMlnrqyx.cjs +1 -0
- package/dist/{Button-k7SxX1Xl.js → Button-wTOTQKxF.js} +38 -38
- 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-CyryG5zn.js → Center-CmxXB9ql.js} +1 -1
- package/dist/Center-DKUE2pER.cjs +1 -0
- package/dist/CheckIcon-CZhtJD1O.cjs +1 -0
- package/dist/{CheckIcon-C3WjIR2i.js → CheckIcon-N5qBqXQJ.js} +1 -1
- package/dist/CodeServerApp-BOoGwZ7r.cjs +1 -0
- package/dist/CodeServerApp-Be3I5EGg.cjs +1 -0
- package/dist/{CodeServerApp-DY94cy1a.js → CodeServerApp-DW18EZxa.js} +48 -47
- package/dist/{ColorPicker-DvRR-wlQ.js → ColorPicker-BCNqi02x.js} +364 -364
- package/dist/ColorPicker-BrDE7tMO.cjs +1 -0
- package/dist/CreateItemApp-B12M1E_1.cjs +1 -0
- package/dist/{CreateItemApp-CtdH1K1g.js → CreateItemApp-TAAprby3.js} +13 -13
- package/dist/CreateItemApp-ePB6ujNl.cjs +1 -0
- package/dist/DeviceInfoApp-BMF18BGo.cjs +1 -0
- package/dist/DeviceInfoApp-DRy0H3aT.cjs +1 -0
- package/dist/{DeviceInfoApp-C306YvtZ.js → DeviceInfoApp-lgpwkeRR.js} +7 -7
- package/dist/{DownloadProgress-hdupSUBT.js → DownloadProgress-EoyCaD5O.js} +15 -15
- package/dist/DownloadProgress-VNdj22U8.cjs +1 -0
- package/dist/{FileIcon-BCpGMI5U.js → FileIcon-7JaSR3Gn.js} +26 -25
- package/dist/FileIcon-CIXopWLv.cjs +1 -0
- package/dist/{FilePickerApp-DMGuvahM.js → FilePickerApp-DaMgEqKh.js} +115 -115
- package/dist/FilePickerApp-DjmuSFqa.cjs +1 -0
- package/dist/FilesApp-Bp7wfrBZ.cjs +1 -0
- package/dist/FilesApp-BpJJRKhi.cjs +1 -0
- package/dist/{FilesApp-VXrmtt63.js → FilesApp-Cj94QG5o.js} +21 -21
- package/dist/{Group-BzwlMeob.js → Group-CtBJSfCo.js} +1 -1
- package/dist/Group-Dsrf6lEK.cjs +1 -0
- package/dist/{ImageViewerApp-CWiP6zx-.js → ImageViewerApp-BaLP3gkO.js} +18 -17
- package/dist/ImageViewerApp-DlHGeB3S.cjs +1 -0
- package/dist/ImageViewerApp-DoXd_Swu.cjs +1 -0
- package/dist/{ImageViewerMenuBar-BULkh_Ku.js → ImageViewerMenuBar-CabGSi9r.js} +15 -14
- 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-B94z4Umw.js → MenuEditMenuBar-x1IQrHP2.js} +13 -12
- 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-BB4NkKGf.js → NotesMenuBar-VhpIe68v.js} +10 -9
- package/dist/{Paper-DtUYKmYn.js → Paper-BX_9odR6.js} +3 -3
- 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-BNO-vDFn.js → Slider-t-NcD60t.js} +148 -147
- package/dist/{Stack-CuDEaP7e.js → Stack-Bp1Ek2Gp.js} +1 -1
- package/dist/Stack-D4jAiRfc.cjs +1 -0
- package/dist/StorybookApp-CDLV_kja.cjs +1 -0
- package/dist/{StorybookApp-WYninkJo.js → StorybookApp-DKwlPCmo.js} +1 -1
- 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-iKLydNda.js → TerminalMenuBar-D5tPmgR_.js} +15 -14
- package/dist/TerminalMenuBar-DNshPmCa.cjs +1 -0
- package/dist/TerminalMenuBar-HzMSR7XP.cjs +1 -0
- package/dist/{TextInput-C3qfxxWI.js → TextInput-C-JtGWn1.js} +264 -263
- package/dist/TextInput-CrsmcOip.cjs +1 -0
- package/dist/Tooltip-D5Cd9wtz.cjs +1 -0
- package/dist/Tooltip-DOeIvhrO.js +1142 -0
- package/dist/{UnstyledButton-CI3kyRck.js → UnstyledButton-DGaG-e_G.js} +1 -1
- package/dist/UnstyledButton-DX2pTahr.cjs +1 -0
- package/dist/UploaderApp-C6xA5Rrf2.cjs +1 -0
- package/dist/UploaderApp-DnHIRxB_.cjs +1 -0
- package/dist/{UploaderApp-C9W_yCT-.js → UploaderApp-qBfpukR_.js} +118 -117
- package/dist/VscIcon-CcMdrFoJ.cjs +1 -0
- package/dist/{VscIcon-DueRJVTe.js → VscIcon-DBfVnArE.js} +1 -1
- package/dist/create-safe-context-Bboj0GWC.cjs +1 -0
- package/dist/desktopStore-CZoA9VHO.cjs +1 -0
- package/dist/{desktopStore-B0R1-BeA.js → desktopStore-F8bgLqFl.js} +256 -393
- package/dist/getRuntime-BFK0-8R1.cjs +1 -0
- package/dist/{getRuntime-CCRXVzJH.js → getRuntime-DAPqFH2W.js} +5 -5
- package/dist/imageViewerStore-BB_tssZR.cjs +1 -0
- package/dist/{imageViewerStore-CJMRXaQh.js → imageViewerStore-C5kWz0o7.js} +1 -1
- package/dist/index.cjs +1 -53
- package/dist/index.css +1 -1
- package/dist/index.js +1293 -5468
- package/dist/is-element-CdV0xajp.cjs +1 -0
- package/dist/menuEditStore-CTeM_dns.cjs +1 -0
- package/dist/{menuEditStore-C8S_EedM.js → menuEditStore-Cj1zAwxQ.js} +1 -1
- package/dist/notesStore-BCEl1D_v.cjs +1 -0
- package/dist/{notesStore-DKRgTTFn.js → notesStore-BPyRTHEc.js} +1 -1
- package/dist/rolldown-runtime-CAFD8bLK.js +11 -0
- package/dist/{settingsAppStore-KOeWRO6h.js → settingsAppStore-BDQ3ts1y.js} +1 -1
- package/dist/settingsAppStore-CMBc13VU.cjs +1 -0
- package/dist/{terminalStore-LWWjCvCe.js → terminalStore-IWdf4Mm6.js} +1 -1
- package/dist/terminalStore-iIuyodfK.cjs +1 -0
- package/dist/use-merged-ref-n9Gw9LNn.cjs +1 -0
- package/dist/{use-resolved-styles-api-AVDygMKo.cjs → use-resolved-styles-api-8OXE2oRq.cjs} +1 -1
- package/dist/{use-resolved-styles-api-pEOi2wiK.js → use-resolved-styles-api-DNUlJJZf.js} +1 -1
- package/dist/use-uncontrolled-DDJVQiM_.cjs +1 -0
- package/dist/{useAdaptiveDimensions-CunsU0mn.js → useAdaptiveDimensions-AVDc_qPa.js} +1 -1
- package/dist/useAdaptiveDimensions-CfITBJ_m.cjs +1 -0
- package/dist/{useCloseInterceptor-CuKAAFnj.js → useCloseInterceptor-BZd3VILp.js} +12 -12
- package/dist/useCloseInterceptor-yntBEzNc.cjs +1 -0
- package/dist/{useDynamicIcon-GJg3vWsJ.js → useDynamicIcon-Bf0t2foA.js} +1 -1
- package/dist/useDynamicIcon-DJ_il30E.cjs +1 -0
- package/dist/{useOpenApp-JHCPTBWa.js → useOpenApp-CBIm7Gzl.js} +3 -3
- package/dist/useOpenApp-DW4x79Zg.cjs +1 -0
- package/dist/useResolvedUrl-BkMPM1fM.cjs +1 -0
- package/dist/{useResolvedUrl-DFKXq598.js → useResolvedUrl-DQpLqOoL.js} +2 -2
- package/package.json +1 -1
- package/dist/AccordionChevron-DBXp38Lm.cjs +0 -1
- package/dist/ActionIcon-C_SfdBfx.cjs +0 -1
- package/dist/AppEmptyState-BTujnL_b.js +0 -4962
- package/dist/AppEmptyState-Dc4GaDfu.cjs +0 -1
- package/dist/AppIcon--qzR4sgf.cjs +0 -1
- package/dist/AppMenuBar-BiHbNg9V.cjs +0 -9
- package/dist/AppMenuBar-CHJy8OF0.js +0 -2639
- package/dist/Box-D_64wv6n.cjs +0 -1
- package/dist/Button-D0FXpkur.cjs +0 -1
- package/dist/CalendarApp-C1HvuJoa.cjs +0 -1
- package/dist/CalendarApp-DBEQqsS_.js +0 -1721
- package/dist/Center-T4No_FAa.cjs +0 -1
- package/dist/CheckIcon-CBMLR6Gc.cjs +0 -1
- package/dist/CodeServerApp-B3l5QPuG.cjs +0 -1
- package/dist/CodeServerApp-BpeALSaX.js +0 -2
- package/dist/CodeServerApp-CRjCngFv.cjs +0 -1
- package/dist/ColorPicker-BL4UbKCV.cjs +0 -1
- package/dist/CreateItemApp-BU9wmjKM.cjs +0 -1
- package/dist/CreateItemApp-t9F-a6wD.cjs +0 -1
- package/dist/DeviceInfoApp-Cdju_LIB.cjs +0 -1
- package/dist/DeviceInfoApp-CyB01v4D.cjs +0 -1
- package/dist/DownloadProgress-IRw1dzLX.cjs +0 -1
- package/dist/FileIcon-BCrsxmtt.cjs +0 -1
- package/dist/FilePickerApp-Eu0cr2Cm.cjs +0 -1
- package/dist/FilesApp-30OjnOuP.cjs +0 -1
- package/dist/FilesApp-BvlzPNuO.cjs +0 -1
- package/dist/Group-DhwePB84.cjs +0 -1
- package/dist/ImageViewerApp-BOz59TGc.cjs +0 -1
- package/dist/ImageViewerApp-BeqY6voE.cjs +0 -1
- package/dist/ImageViewerApp-DBAfJPSo.js +0 -2
- package/dist/ImageViewerMenuBar-Cb0Nr5-M.js +0 -2
- package/dist/ImageViewerMenuBar-CoEp0RxK.cjs +0 -1
- package/dist/ImageViewerMenuBar-zOkJtqKo.cjs +0 -1
- package/dist/MenuEditApp-BoKtj2GH.js +0 -2
- package/dist/MenuEditApp-D21sEp86.js +0 -2615
- package/dist/MenuEditApp-k3cPfTG9.cjs +0 -1
- package/dist/MenuEditApp-sz9GlLVH.cjs +0 -5
- package/dist/MenuEditMenuBar-6QxlIDpl.cjs +0 -1
- package/dist/MenuEditMenuBar-Bv6R42lf.js +0 -2
- package/dist/MenuEditMenuBar-CBsmH_-T.cjs +0 -1
- package/dist/NotesApp-BtR55Hva.cjs +0 -207
- package/dist/NotesApp-C59exz_9.js +0 -16154
- package/dist/NotesApp-D47I5LS_.js +0 -2
- package/dist/NotesApp-lOwsi2sg.cjs +0 -1
- package/dist/NotesMenuBar-BZITC74y.cjs +0 -1
- package/dist/NotesMenuBar-Bp0sPqyR.cjs +0 -1
- package/dist/NotesMenuBar-xlfODmMA.js +0 -2
- package/dist/Paper-DwCpwWwH.cjs +0 -1
- package/dist/PdfApp-1XbFGfoY.cjs +0 -1
- package/dist/PdfApp-BhIoJWeK.cjs +0 -1
- package/dist/PdfApp-C5Rt1Zaw.js +0 -2
- package/dist/PdfApp-C8Hwxxqh.js +0 -38
- package/dist/PdfMenuBar-BA9rKuMP.cjs +0 -1
- package/dist/PdfMenuBar-JXHqwxhZ.cjs +0 -1
- package/dist/PdfMenuBar-R0fu7oYF.js +0 -2
- package/dist/PdfMenuBar-sd-9Vk3h.js +0 -38
- package/dist/SettingsApp-BA-5B4RA.cjs +0 -1
- package/dist/SettingsApp-B_rev1xh.cjs +0 -1
- package/dist/SettingsApp-Ck4aUXs5.js +0 -2
- package/dist/SettingsApp-DUMKSA3K.js +0 -2425
- package/dist/SettingsMenuBar-BPwv8JQK.js +0 -41
- package/dist/SettingsMenuBar-D8R7hOik.js +0 -2
- package/dist/SettingsMenuBar-DDrjZLmg.cjs +0 -1
- package/dist/SettingsMenuBar-DQjUa8g1.cjs +0 -1
- package/dist/Slider-Bg_EIBg6.cjs +0 -1
- package/dist/Stack-BOaJgV3N.cjs +0 -1
- package/dist/StorybookApp-Bkr-7mXp.cjs +0 -1
- package/dist/TerminalApp-8XbsKAWa.js +0 -10041
- package/dist/TerminalApp-Bq2e7QQu.cjs +0 -1
- package/dist/TerminalApp-CVu3Axc9.js +0 -2
- package/dist/TerminalApp-b7_d0jRO.cjs +0 -36
- package/dist/TerminalMenuBar-Cb8x9laS.js +0 -2
- package/dist/TerminalMenuBar-De-FH5AE.cjs +0 -1
- package/dist/TerminalMenuBar-yOaWd-hn.cjs +0 -1
- package/dist/TextInput-DcYns3hz.cjs +0 -1
- package/dist/Tooltip-CAOO-qdx.js +0 -3185
- package/dist/Tooltip-DDh_x-CB.cjs +0 -1
- package/dist/UnstyledButton-Cl5RuIid.cjs +0 -1
- package/dist/UploaderApp-BZXW75A0.cjs +0 -1
- package/dist/UploaderApp-CPpStgP5.cjs +0 -1
- package/dist/UploaderApp-DHsMQN-f.js +0 -2
- package/dist/VscIcon-CxEmqD80.cjs +0 -1
- package/dist/chunk-BQCxAhux.js +0 -23
- package/dist/chunk-CiTBaPhY.cjs +0 -1
- package/dist/create-safe-context-95P-Bfg3.cjs +0 -1
- package/dist/desktopStore-Cox-Og1z.cjs +0 -1
- package/dist/fc-DejOsQyD.cjs +0 -1
- package/dist/fc-kd8WzIER.js +0 -20536
- package/dist/fc-xJ_v2ayq.cjs +0 -184
- package/dist/fi-BahYsbim.js +0 -9993
- package/dist/fi-BkhyTcZo.cjs +0 -1
- package/dist/getRuntime-BLXyQZBB.cjs +0 -1
- package/dist/iconBase-B4UCuSvv.cjs +0 -1
- package/dist/iconBase-D7iPes7B.js +0 -108
- package/dist/imageViewerStore-CH1qW6md.cjs +0 -1
- package/dist/is-element-BocgicRg.cjs +0 -1
- package/dist/menuEditStore-CU7IAg3L.cjs +0 -1
- package/dist/notesStore-zKmChTfF.cjs +0 -1
- package/dist/react-DYmzHD0X.js +0 -27
- package/dist/react-Dldg32sN.cjs +0 -1
- package/dist/settingsAppStore-BrlImdAH.cjs +0 -1
- package/dist/terminalStore-fZe5t7Ty.cjs +0 -1
- package/dist/use-merged-ref-BI9n1hUK.cjs +0 -1
- package/dist/use-uncontrolled-BPrfGv0W.cjs +0 -1
- package/dist/useAdaptiveDimensions-Btp0m5Pm.cjs +0 -1
- package/dist/useCloseInterceptor-a_6Lcuqj.cjs +0 -1
- package/dist/useDynamicIcon-SytdL1Tu.cjs +0 -1
- package/dist/useOpenApp-BdarhIgl.cjs +0 -1
- package/dist/useResolvedUrl-Be5ZlCX7.cjs +0 -1
- package/dist/useTranslation-DMRGdqZi.js +0 -279
- package/dist/useTranslation-D_O7S4RJ.cjs +0 -1
- package/dist/vsc-Ciibqbxo.cjs +0 -1
- package/dist/vsc-DGKSpOAR.js +0 -9574
- /package/dist/{Colors-hca6raEG.js → Colors-ClnDxnyA.js} +0 -0
- /package/dist/{Colors-BxX4G8kX.cjs → Colors-zP2AFgU3.cjs} +0 -0
- /package/dist/{useMenuBarUtils-Bp5PiztD.cjs → useMenuBarUtils-nJIPJGIQ.cjs} +0 -0
- /package/dist/{useMenuBarUtils-ChmpZjwu.js → useMenuBarUtils-nmu9yehT.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
2
|
import { jsx as o } from "react/jsx-runtime";
|
|
3
3
|
//#region ../../node_modules/.bun/@mantine+core@9.0.0+9dd69a0af178a974/node_modules/@mantine/core/esm/components/Stack/Stack.module.mjs
|
|
4
4
|
var s = { root: "m_6d731127" }, c = {
|
|
@@ -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}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as e } from "./rolldown-runtime-CAFD8bLK.js";
|
|
2
2
|
import { jsx as t } from "react/jsx-runtime";
|
|
3
3
|
var n = { frame: "_frame_13ufi_1" }, r = /* @__PURE__ */ e({ default: () => a }), i = "https://frannunpal.github.io/storybook/", a = () => /* @__PURE__ */ t("iframe", {
|
|
4
4
|
src: i,
|
|
@@ -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 _}});
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import { t as e } from "./
|
|
2
|
-
import { t } from "./
|
|
3
|
-
import { n, r, t as i } from "./terminalStore-
|
|
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
4
|
import { memo as a, useCallback as o, useMemo as s } from "react";
|
|
5
5
|
import { jsx as c } from "react/jsx-runtime";
|
|
6
|
+
import { useTranslation as l } from "react-i18next";
|
|
6
7
|
//#region src/components/Apps/TerminalApp/useTerminalMenuBar.ts
|
|
7
|
-
var
|
|
8
|
+
var u = [{
|
|
8
9
|
value: "/bin/sh",
|
|
9
10
|
label: "sh"
|
|
10
11
|
}, {
|
|
11
12
|
value: "/bin/zsh",
|
|
12
13
|
label: "zsh"
|
|
13
14
|
}];
|
|
14
|
-
function
|
|
15
|
-
let { windowId:
|
|
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";
|
|
16
17
|
return s(() => {
|
|
17
18
|
let e = [
|
|
18
19
|
{
|
|
@@ -34,7 +35,7 @@ function u(e) {
|
|
|
34
35
|
type: "item",
|
|
35
36
|
label: _("terminal.menu.clear"),
|
|
36
37
|
icon: "FcClear",
|
|
37
|
-
onClick:
|
|
38
|
+
onClick: c ?? (() => {}),
|
|
38
39
|
disabled: !w
|
|
39
40
|
},
|
|
40
41
|
{
|
|
@@ -54,7 +55,7 @@ function u(e) {
|
|
|
54
55
|
type: "item",
|
|
55
56
|
label: g("actions.exit"),
|
|
56
57
|
icon: "FcLeave",
|
|
57
|
-
onClick:
|
|
58
|
+
onClick: a
|
|
58
59
|
}), [
|
|
59
60
|
{
|
|
60
61
|
type: "menu",
|
|
@@ -74,7 +75,7 @@ function u(e) {
|
|
|
74
75
|
{
|
|
75
76
|
type: "select",
|
|
76
77
|
label: _("terminal.shell"),
|
|
77
|
-
options:
|
|
78
|
+
options: u,
|
|
78
79
|
value: y,
|
|
79
80
|
onChange: C
|
|
80
81
|
}
|
|
@@ -82,8 +83,8 @@ function u(e) {
|
|
|
82
83
|
}, [
|
|
83
84
|
g,
|
|
84
85
|
_,
|
|
86
|
+
a,
|
|
85
87
|
c,
|
|
86
|
-
u,
|
|
87
88
|
d,
|
|
88
89
|
f,
|
|
89
90
|
p,
|
|
@@ -97,8 +98,8 @@ function u(e) {
|
|
|
97
98
|
}
|
|
98
99
|
//#endregion
|
|
99
100
|
//#region src/components/Apps/TerminalApp/TerminalMenuBar.tsx
|
|
100
|
-
var
|
|
101
|
-
windowId:
|
|
101
|
+
var f = /* @__PURE__ */ e({ TerminalMenuBar: () => p }), p = a(({ windowId: e, contentData: n, onExit: r }) => /* @__PURE__ */ c(t, { elements: d({
|
|
102
|
+
windowId: e,
|
|
102
103
|
onExit: r,
|
|
103
104
|
clear: n?.clear,
|
|
104
105
|
reset: n?.reset,
|
|
@@ -107,6 +108,6 @@ var d = a(({ windowId: t, contentData: n, onExit: r }) => /* @__PURE__ */ c(e, {
|
|
|
107
108
|
reconnect: n?.reconnect,
|
|
108
109
|
connectionStatus: n?.connectionStatus
|
|
109
110
|
}) }));
|
|
110
|
-
|
|
111
|
+
p.displayName = "TerminalMenuBar";
|
|
111
112
|
//#endregion
|
|
112
|
-
export {
|
|
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;
|