@band-app/server 0.12.0 → 0.13.1
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/client/assets/{DockviewTerminalContainer-B6ls12RP.js → DockviewTerminalContainer-DY9YDc8o.js} +2 -2
- package/dist/client/assets/TerminalPanel-TQGgFc5g.js +4 -0
- package/dist/client/assets/{_basePickBy-D4ggI4i0.js → _basePickBy-CvS-VtsR.js} +1 -1
- package/dist/client/assets/{_baseUniq-E0-L58sh.js → _baseUniq-DFCKF5vj.js} +1 -1
- package/dist/client/assets/{arc-Cd0JgGvM.js → arc-BatjPjaN.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-BngJQDkI.js → architectureDiagram-VXUJARFQ-Cnb8SKvZ.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-dcYRXfph.js → blockDiagram-VD42YOAC-B6-qvfYN.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-B_8XfvfL.js → c4Diagram-YG6GDRKO-DAjB1VyY.js} +1 -1
- package/dist/client/assets/channel-DSgmIANq.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-CFd2iELe.js → chunk-4BX2VUAB-vjmc3quM.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-ZI-o1tfy.js → chunk-55IACEB6-DDZjRfYY.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-GcKh0u0t.js → chunk-B4BG7PRW-CKceWukV.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-asFoohq8.js → chunk-DI55MBZ5-CRnRm2L0.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-GmvgLSQe.js → chunk-FMBD7UC4-Cogf-yAQ.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-CbSPviK8.js → chunk-QN33PNHL-D72Zq7QV.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-C5_8IhWQ.js → chunk-QZHKN3VN-HUKu5hjd.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-CvwKA6rf.js → chunk-TZMSLE5B-I8YlhesW.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-D57JPCVZ.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-D57JPCVZ.js +1 -0
- package/dist/client/assets/clone-DAQJfloD.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-CFOKjm00.js → cose-bilkent-S5V4N54A-CEay61-1.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-XkiKAfAP.js → dagre-6UL2VRFP-BcAohjbk.js} +2 -2
- package/dist/client/assets/{diagram-PSM6KHXK-D7OJGDF1.js → diagram-PSM6KHXK-DdrIOdqS.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-CNDqB5ur.js → diagram-QEK2KX5R-Bn79GyS6.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-DHWhfYWy.js → diagram-S2PKOQOG-g66OM_Vs.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-DlhzEgw7.js → erDiagram-Q2GNP2WA-BD0geyEq.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-BabYr6zd.js → flowDiagram-NV44I4VS-B2LLnQ89.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-CUHxh1TA.js → ganttDiagram-JELNMOA3-DsMjiqCd.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DSDd-EJ_.js → gitGraphDiagram-V2S2FVAM-BXAPNFr2.js} +1 -1
- package/dist/client/assets/{graph-DXNVnA6H.js → graph-CWoXix-C.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-B79dTSwx.js → highlighted-body-B3W2YXNL-DAdM8cs5.js} +1 -1
- package/dist/client/assets/{index-4srNURyv.js → index-6eC517Nz.js} +1 -1
- package/dist/client/assets/{index-D-7FXjIA.js → index-B-RxFKXA.js} +1 -1
- package/dist/client/assets/{index-EdY6fqdn.js → index-B9fPtAFu.js} +2 -2
- package/dist/client/assets/{index-Cu2rqq8f.js → index-BSQYe-ie.js} +1 -1
- package/dist/client/assets/{index-_J9aGl-d.js → index-B_aLrZ9l.js} +1 -1
- package/dist/client/assets/{index-CPo0kKmX.js → index-BcC597Ty.js} +1 -1
- package/dist/client/assets/{index-DktZbpGM.js → index-Bu7btU1P.js} +1 -1
- package/dist/client/assets/{index-Bvony7H7.js → index-C8jQlbkH.js} +1 -1
- package/dist/client/assets/{index-DRS8jN52.js → index-D-NVfOaX.js} +1 -1
- package/dist/client/assets/{index-CjixM2mV.js → index-D4Gbu0g1.js} +1 -1
- package/dist/client/assets/{index-okqFBuO9.js → index-DeUgVu9X.js} +1 -1
- package/dist/client/assets/{index-BVLYlk0y.js → index-DgRC8NQ1.js} +1 -1
- package/dist/client/assets/{index-5jOljAlc.js → index-Dkltc6JL.js} +1 -1
- package/dist/client/assets/{index-BNkxX-BD.js → index-GgiGfqqJ.js} +1 -1
- package/dist/client/assets/{index-DutxFSic.js → index-HueLRLHI.js} +1 -1
- package/dist/client/assets/{index-BqDdB0tU.js → index-U42qt8_H.js} +1 -1
- package/dist/client/assets/{index-BQU-JREs.js → index-W_gE5gc5.js} +1 -1
- package/dist/client/assets/{index-CTR_yHqa.js → index-iloqZ__Z.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP-tDVIKvh1.js → infoDiagram-HS3SLOUP-DwKN27-C.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-cFY68TOP.js → journeyDiagram-XKPGCS4Q-BAhwB5gg.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-CTQ8WBzj.js → kanban-definition-3W4ZIXB7-OI1AHf6B.js} +1 -1
- package/dist/client/assets/{layout-BDsby01A.js → layout-CC7J3tBc.js} +1 -1
- package/dist/client/assets/{linear-B321DwjU.js → linear-CVYb-eZl.js} +1 -1
- package/dist/client/assets/main-4FaYQ5DQ.css +1 -0
- package/dist/client/assets/{main-gKX_m5Ko.js → main-CYVBBY3m.js} +217 -210
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-CMbXBgve.js → mindmap-definition-VGOIOE7T-BPKIWA4L.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-pTHsfneI.js → pieDiagram-ADFJNKIX-DeHQukcp.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DNGhzaPi.js → quadrantDiagram-AYHSOK5B-DIA0izdW.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-E5dChVU-.js → requirementDiagram-UZGBJVZJ-DsiZI-w_.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-B858cwBV.js → sankeyDiagram-TZEHDZUN-B3Rxgvvo.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-Clbop1Lh.js → sequenceDiagram-WL72ISMW-CdnagSZH.js} +1 -1
- package/dist/client/assets/{square-terminal-zBRLwN9m.js → square-terminal-BA_DN1Fj.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-BRIoi38Z.js → stateDiagram-FKZM4ZOC-C9HYyYWO.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-Jpp4ZnR3.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-C26dPldo.js → timeline-definition-IT6M3QCI-BQXhdJ4l.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-l9jcKCpW.js → treemap-GDKQZRPO-DbtL6I-E.js} +1 -1
- package/dist/client/assets/{useSessionListContext-MLsp0tQx.js → useSessionListContext-BDhxj2sp.js} +1 -1
- package/dist/client/assets/workspace._workspaceId-DrdBQ3ad.js +1 -0
- package/dist/client/assets/{workspace._workspaceId.changes-sSj8FhGC.js → workspace._workspaceId.changes-CV01j_RF.js} +1 -1
- package/dist/client/assets/workspace._workspaceId.code-Di11hnHW.js +1 -0
- package/dist/client/assets/{workspace._workspaceId.code._-BVzwjj6w.js → workspace._workspaceId.code._-4eyD4Vu7.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.code.index-V90FWX2z.js → workspace._workspaceId.code.index-BazGXzJC.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.index-Cczg6N56.js → workspace._workspaceId.index-CpmZsM_r.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.terminal-CFJVgZLo.js → workspace._workspaceId.terminal-Sx7Ov6J4.js} +2 -2
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-Cwsp2BWQ.js → xychartDiagram-PRI3JC2R-B9LSl0HQ.js} +1 -1
- package/dist/server/assets/{DockviewTerminalContainer-B5lZSZ8Y.js → DockviewTerminalContainer-DVzWSMti.js} +3 -3
- package/dist/server/assets/TerminalPanel-BlWVFHNT.js +1016 -0
- package/dist/server/assets/{_basePickBy-CD1u5dYZ.js → _basePickBy-CTVBF0Kh.js} +2 -2
- package/dist/server/assets/{_baseUniq-BdmRs4hY.js → _baseUniq-BF3qFyKL.js} +1 -1
- package/dist/server/assets/{_tanstack-start-manifest_v-D4xipytj.js → _tanstack-start-manifest_v-sqmMCsD8.js} +1 -1
- package/dist/server/assets/{arc-CbjxAGh2.js → arc-CKzdlSDJ.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-PvoHywyl.js → architecture-7HQA4BMR-C4KC3q3z.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-CYVR-HeO.js → architectureDiagram-VXUJARFQ-ARkeTUdc.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-oFwYjSKc.js → blockDiagram-VD42YOAC-lsOOO08K.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-BRcTuK4Y.js → c4Diagram-YG6GDRKO-CrZA0PWP.js} +2 -2
- package/dist/server/assets/{channel-DkpUIvTk.js → channel-Dd6dv_cn.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-Db1P5ZKT.js → chunk-4BX2VUAB-CfcFinva.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-CgF3c_s9.js → chunk-55IACEB6-C_zn3X68.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-C4lPp_gR.js → chunk-B4BG7PRW-WqOdzIwb.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-DBc5FE0O.js → chunk-DI55MBZ5-BazpEGnL.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-BmyVhHTD.js → chunk-FMBD7UC4-abFXQK9X.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-MEMc-HV1.js → chunk-QN33PNHL-mQORkMwR.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-D0s55-ob.js → chunk-QZHKN3VN-W_mObo75.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-CHLAtcyP.js → chunk-TZMSLE5B-f9JxfLrS.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-D_KqC8CP.js → classDiagram-2ON5EDUG-D9B26ZaP.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-D_KqC8CP.js → classDiagram-v2-WZHVMYZB-D9B26ZaP.js} +5 -5
- package/dist/server/assets/{clone-pAcegSV_.js → clone-dm3Dgnj4.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-I5bimXZO.js → cose-bilkent-S5V4N54A-FP17KwdC.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-BFEXHp44.js → dagre-6UL2VRFP-D3G7rpV5.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-B4UG8ra3.js → diagram-PSM6KHXK-CblBgzmP.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-B65vkBbU.js → diagram-QEK2KX5R-GC4Djt9A.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-DUV65VxH.js → diagram-S2PKOQOG-5B6KDW-y.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-eEKIOvT3.js → erDiagram-Q2GNP2WA-Be8xw8rI.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-B0GxfKRu.js → flowDiagram-NV44I4VS-jzmSul5A.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-etJ_j_I0.js → ganttDiagram-JELNMOA3-DWzYYJJD.js} +2 -2
- package/dist/server/assets/{gitGraph-G5XIXVHT-DE59sCs-.js → gitGraph-G5XIXVHT-DBh_B9aL.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BZuXPjR3.js → gitGraphDiagram-V2S2FVAM-DtVbt-rt.js} +7 -7
- package/dist/server/assets/{graph-HlbQNgKh.js → graph-DX5yyy2e.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-CGZmJ48I.js → highlighted-body-B3W2YXNL-jVL8aR3Z.js} +1 -1
- package/dist/server/assets/{index-DfuZ1SKx.js → index-B5nFl_AI.js} +2 -2
- package/dist/server/assets/{index-KO85K6gg.js → index-BAdVYDyw.js} +2 -2
- package/dist/server/assets/{index-oAvn7Kbw.js → index-BhOjaygO.js} +2 -2
- package/dist/server/assets/{index-BquoD96E.js → index-BirnOPeb.js} +2 -2
- package/dist/server/assets/{index-kEUC1eer.js → index-BjR3sOAq.js} +2 -2
- package/dist/server/assets/{index-DsW29Azb.js → index-BoxcvdZf.js} +4 -4
- package/dist/server/assets/{index-DoEmUqp6.js → index-BsKQIZIq.js} +2 -2
- package/dist/server/assets/{index-Cq-S8ocb.js → index-CBiZXyl4.js} +1 -1
- package/dist/server/assets/{index-0Vp2EuiF.js → index-CD24s2ge.js} +3 -3
- package/dist/server/assets/{index-B2NbB5n_.js → index-CJFioIPI.js} +2 -2
- package/dist/server/assets/{index-BYATJkV0.js → index-CVpPQcdL.js} +1 -1
- package/dist/server/assets/{index-CqJMMgyN.js → index-CeFUhbU-.js} +2 -2
- package/dist/server/assets/{index-DVIqYu1B.js → index-DHKWIWry.js} +5 -5
- package/dist/server/assets/{index-CozxyE6F.js → index-DYzy4J8Y.js} +2 -2
- package/dist/server/assets/{index-CcRwhNJ0.js → index-DiZw5Slc.js} +3 -3
- package/dist/server/assets/{index-B_gLaw5q.js → index-fJ18TF5w.js} +5 -5
- package/dist/server/assets/{index-CReShbyg.js → index-icISvAHb.js} +2 -2
- package/dist/server/assets/{index-BggD7xEz.js → index-x1PcD09R.js} +2 -2
- package/dist/server/assets/{info-VBDWY6EO-DFb5bmEE.js → info-VBDWY6EO-CgGw-KWo.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-DUDXdFYe.js → infoDiagram-HS3SLOUP-Bm300kuC.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-BnEH3kK2.js → journeyDiagram-XKPGCS4Q-i8WJyl2v.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-BPnM08KT.js → kanban-definition-3W4ZIXB7-BxqtaaIr.js} +2 -2
- package/dist/server/assets/{layout-CnirhobE.js → layout-C81zgoUj.js} +4 -4
- package/dist/server/assets/{linear-CLJDiqhJ.js → linear-dyZZUN6P.js} +1 -1
- package/dist/server/assets/{mermaid-3ZIDBTTL-Dyndt6u2.js → mermaid-3ZIDBTTL-bTD72h2_.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-DxDjr9RA.js → mermaid-parser.core-BpodyVoJ.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-CPnGCXl9.js → mindmap-definition-VGOIOE7T-CGVjAsWC.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-Bt7VjiqG.js → packet-DYOGHKS2-BeHd7ss_.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-CpD4BgbA.js → pie-VRWISCQL-CtMn8fFZ.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-BSx8zl8i.js → pieDiagram-ADFJNKIX-CS0mGgZR.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-B08pRdHD.js → quadrantDiagram-AYHSOK5B-C0QMIITK.js} +2 -2
- package/dist/server/assets/{radar-ZZBFDIW7-BeHVWQbv.js → radar-ZZBFDIW7-DIYuMHay.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-BtjVtNFU.js → requirementDiagram-UZGBJVZJ-Cu_xdr4s.js} +3 -3
- package/dist/server/assets/{router-VlIt4cC5.js → router-emaiBwQ1.js} +377 -240
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-CG6DECc6.js → sankeyDiagram-TZEHDZUN-sK1eHAYK.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-DEfVJQli.js → sequenceDiagram-WL72ISMW-BxdrIxsT.js} +3 -3
- package/dist/server/assets/{square-terminal-DTO02O7S.js → square-terminal-DaamWbdC.js} +1 -1
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-DblYyAIC.js → stateDiagram-FKZM4ZOC-YKAev_OI.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-YhMCeOsH.js → stateDiagram-v2-4FDKWEC3-WXMNfM85.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-CDEJSclA.js → timeline-definition-IT6M3QCI-DrdVpYke.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-Tg2S6NSt.js → treemap-GDKQZRPO-DZHSpt06.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-CVnwrhnX.js → workspace._workspaceId-KpmCwO8V.js} +10 -4
- package/dist/server/assets/{workspace._workspaceId.changes-CsJMr9Ve.js → workspace._workspaceId.changes-DF6oupkK.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code._-CjSLVs7D.js → workspace._workspaceId.code._-fbsbn7Pa.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code.index-BhUZuUX-.js → workspace._workspaceId.code.index-D2dHFGQr.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.index-CmBIxfCl.js → workspace._workspaceId.index-DpLhp52B.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.terminal-BehWU5SY.js → workspace._workspaceId.terminal-Dk3GXgkq.js} +2 -2
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-DAT7FXvH.js → xychartDiagram-PRI3JC2R-BXCdvcf7.js} +2 -2
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +662 -636
- package/package.json +6 -5
- package/dist/client/assets/TerminalPanel-CTjPLr1l.js +0 -4
- package/dist/client/assets/channel-BN9rr7kd.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-f-3sWSXi.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-f-3sWSXi.js +0 -1
- package/dist/client/assets/clone-DyjKoDMl.js +0 -1
- package/dist/client/assets/main-7lUOPiu0.css +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BXdrXPzW.js +0 -1
- package/dist/client/assets/workspace._workspaceId-CKxw1xn1.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code-CTG7u893.js +0 -1
- package/dist/server/assets/TerminalPanel-_8vdN94i.js +0 -442
|
@@ -1,442 +0,0 @@
|
|
|
1
|
-
import { r as reactExports, j as jsxRuntimeExports } from "../server.js";
|
|
2
|
-
import { b as useSettingsQuery, bb as openExternalUrl, bc as SearchBar } from "./router-VlIt4cC5.js";
|
|
3
|
-
import "node:async_hooks";
|
|
4
|
-
import "node:stream";
|
|
5
|
-
import "util";
|
|
6
|
-
import "crypto";
|
|
7
|
-
import "async_hooks";
|
|
8
|
-
import "stream";
|
|
9
|
-
import "node:stream/web";
|
|
10
|
-
import "node:process";
|
|
11
|
-
import "node:path";
|
|
12
|
-
import "node:url";
|
|
13
|
-
const SEARCH_DECORATIONS = {
|
|
14
|
-
matchBackground: "#515c6a",
|
|
15
|
-
activeMatchBackground: "#a9913680",
|
|
16
|
-
matchOverviewRuler: "#a9913680",
|
|
17
|
-
activeMatchColorOverviewRuler: "#a99136"
|
|
18
|
-
};
|
|
19
|
-
const DEFAULT_SEARCH_OPTIONS = {
|
|
20
|
-
caseSensitive: false,
|
|
21
|
-
wholeWord: false,
|
|
22
|
-
regex: false
|
|
23
|
-
};
|
|
24
|
-
function toXtermSearchOptions(opts) {
|
|
25
|
-
return {
|
|
26
|
-
caseSensitive: opts.caseSensitive,
|
|
27
|
-
wholeWord: opts.wholeWord,
|
|
28
|
-
regex: opts.regex,
|
|
29
|
-
decorations: SEARCH_DECORATIONS
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const DARK_TERMINAL_THEME = {
|
|
33
|
-
background: "#1e1e1e",
|
|
34
|
-
foreground: "#e8e8e8",
|
|
35
|
-
cursor: "#e8e8e8",
|
|
36
|
-
selectionBackground: "rgba(255, 255, 255, 0.2)"
|
|
37
|
-
};
|
|
38
|
-
const LIGHT_TERMINAL_THEME = {
|
|
39
|
-
background: "#ffffff",
|
|
40
|
-
foreground: "#1e1e1e",
|
|
41
|
-
cursor: "#1e1e1e",
|
|
42
|
-
cursorAccent: "#ffffff",
|
|
43
|
-
selectionBackground: "rgba(0, 0, 0, 0.15)",
|
|
44
|
-
// Tweak ANSI colors so they remain readable on a white background. The default
|
|
45
|
-
// bright-yellow / bright-green xterm palette washes out badly in light mode.
|
|
46
|
-
black: "#000000",
|
|
47
|
-
red: "#cd3131",
|
|
48
|
-
green: "#0a8043",
|
|
49
|
-
yellow: "#946800",
|
|
50
|
-
blue: "#0451a5",
|
|
51
|
-
magenta: "#bc05bc",
|
|
52
|
-
cyan: "#0598bc",
|
|
53
|
-
white: "#555555",
|
|
54
|
-
brightBlack: "#666666",
|
|
55
|
-
brightRed: "#cd3131",
|
|
56
|
-
brightGreen: "#0a8043",
|
|
57
|
-
brightYellow: "#946800",
|
|
58
|
-
brightBlue: "#0451a5",
|
|
59
|
-
brightMagenta: "#bc05bc",
|
|
60
|
-
brightCyan: "#0598bc",
|
|
61
|
-
brightWhite: "#1e1e1e"
|
|
62
|
-
};
|
|
63
|
-
function isDarkMode() {
|
|
64
|
-
return document.documentElement.classList.contains("dark");
|
|
65
|
-
}
|
|
66
|
-
function getTerminalTheme() {
|
|
67
|
-
return isDarkMode() ? DARK_TERMINAL_THEME : LIGHT_TERMINAL_THEME;
|
|
68
|
-
}
|
|
69
|
-
function TerminalPanel({
|
|
70
|
-
workspaceId,
|
|
71
|
-
terminalId,
|
|
72
|
-
visible,
|
|
73
|
-
paneMetadata,
|
|
74
|
-
autoFocus,
|
|
75
|
-
onTitleChange
|
|
76
|
-
}) {
|
|
77
|
-
const containerRef = reactExports.useRef(null);
|
|
78
|
-
const terminalRef = reactExports.useRef(null);
|
|
79
|
-
const fitAddonRef = reactExports.useRef(null);
|
|
80
|
-
const searchAddonRef = reactExports.useRef(null);
|
|
81
|
-
const webglAddonRef = reactExports.useRef(null);
|
|
82
|
-
const wsRef = reactExports.useRef(null);
|
|
83
|
-
const onTitleChangeRef = reactExports.useRef(onTitleChange);
|
|
84
|
-
onTitleChangeRef.current = onTitleChange;
|
|
85
|
-
const { settings } = useSettingsQuery();
|
|
86
|
-
const useWebGLRenderer = settings.useWebGLTerminalRenderer ?? true;
|
|
87
|
-
const useWebGLRendererRef = reactExports.useRef(useWebGLRenderer);
|
|
88
|
-
useWebGLRendererRef.current = useWebGLRenderer;
|
|
89
|
-
const [searchOpen, setSearchOpen] = reactExports.useState(false);
|
|
90
|
-
const [searchQuery, setSearchQuery] = reactExports.useState("");
|
|
91
|
-
const [searchOptions, setSearchOptions] = reactExports.useState(DEFAULT_SEARCH_OPTIONS);
|
|
92
|
-
const [matchInfo, setMatchInfo] = reactExports.useState({
|
|
93
|
-
total: 0,
|
|
94
|
-
current: 0
|
|
95
|
-
});
|
|
96
|
-
const searchBarRef = reactExports.useRef(null);
|
|
97
|
-
const openSearchRef = reactExports.useRef(() => {
|
|
98
|
-
});
|
|
99
|
-
reactExports.useEffect(() => {
|
|
100
|
-
if (!containerRef.current) return;
|
|
101
|
-
let cancelled = false;
|
|
102
|
-
let cleanup;
|
|
103
|
-
Promise.all([
|
|
104
|
-
import("./xterm-CkV9CBvP.js"),
|
|
105
|
-
import("./addon-fit-D89xfLfG.js"),
|
|
106
|
-
import("./addon-web-links-CzLDtFWc.js"),
|
|
107
|
-
import("./addon-search-BS53_-cp.js"),
|
|
108
|
-
import("./addon-webgl-BeO2q2vc.js")
|
|
109
|
-
]).then(([xtermMod, fitMod, webLinksMod, searchMod, webglMod]) => {
|
|
110
|
-
const { Terminal: XTerm } = xtermMod;
|
|
111
|
-
const { FitAddon: XFitAddon } = fitMod;
|
|
112
|
-
const { WebLinksAddon: XWebLinksAddon } = webLinksMod;
|
|
113
|
-
const { SearchAddon: XSearchAddon } = searchMod;
|
|
114
|
-
const { WebglAddon: XWebglAddon } = webglMod;
|
|
115
|
-
if (cancelled || !containerRef.current) return;
|
|
116
|
-
const wantsWebGL = useWebGLRendererRef.current;
|
|
117
|
-
Promise.resolve({ });
|
|
118
|
-
const terminal = new XTerm({
|
|
119
|
-
// Opt in to addon-only APIs (decorations, markers, etc.) that
|
|
120
|
-
// xterm.js 6.1-beta gates behind this flag. Without it, the search
|
|
121
|
-
// addon's `findNext` throws "You must set the allowProposedApi
|
|
122
|
-
// option to true to use proposed API" the first time the user
|
|
123
|
-
// types in the find bar. The addons we ship (search, webgl) are
|
|
124
|
-
// first-party xterm.js addons that depend on these APIs.
|
|
125
|
-
allowProposedApi: true,
|
|
126
|
-
cursorBlink: true,
|
|
127
|
-
fontSize: 13,
|
|
128
|
-
fontFamily: "'SF Mono', Menlo, Monaco, 'Courier New', monospace",
|
|
129
|
-
// iTerm-style row spacing — only safe with the WebGL renderer.
|
|
130
|
-
// The WebGL addon redraws box-drawing (U+2500-U+257F), block
|
|
131
|
-
// elements (U+2580-U+259F), powerline separators, and other
|
|
132
|
-
// continuous glyphs at the full cell rect (via its `customGlyphs`
|
|
133
|
-
// option, default true) so a 1.2 lineHeight doesn't slice horizontal
|
|
134
|
-
// gaps through the opencode banner, claude-code's powerline
|
|
135
|
-
// statusline, or other ASCII art. xterm.js's DOM renderer does
|
|
136
|
-
// NOT do this — falling back to it means we have to revert to
|
|
137
|
-
// lineHeight: 1.0 to keep block art continuous.
|
|
138
|
-
// See https://github.com/band-app/band/issues/391 for history.
|
|
139
|
-
lineHeight: wantsWebGL ? 1.2 : 1,
|
|
140
|
-
macOptionIsMeta: true,
|
|
141
|
-
// Alt+Left/Right → word navigation on macOS
|
|
142
|
-
scrollback: 1e4,
|
|
143
|
-
theme: getTerminalTheme()
|
|
144
|
-
});
|
|
145
|
-
const themeObserver = new MutationObserver(() => {
|
|
146
|
-
terminal.options.theme = getTerminalTheme();
|
|
147
|
-
});
|
|
148
|
-
themeObserver.observe(document.documentElement, {
|
|
149
|
-
attributes: true,
|
|
150
|
-
attributeFilter: ["class"]
|
|
151
|
-
});
|
|
152
|
-
const fitAddon = new XFitAddon();
|
|
153
|
-
terminal.loadAddon(fitAddon);
|
|
154
|
-
terminal.loadAddon(new XWebLinksAddon((_event, uri) => openExternalUrl(uri)));
|
|
155
|
-
terminal.open(containerRef.current);
|
|
156
|
-
let webglContextLossDisposable;
|
|
157
|
-
const attachWebGL = () => {
|
|
158
|
-
try {
|
|
159
|
-
const addon = new XWebglAddon({ customGlyphs: true });
|
|
160
|
-
terminal.loadAddon(addon);
|
|
161
|
-
const screenEl = containerRef.current?.querySelector(
|
|
162
|
-
".xterm-screen"
|
|
163
|
-
);
|
|
164
|
-
const webglCanvas = screenEl?.querySelector(
|
|
165
|
-
":scope > canvas:last-of-type"
|
|
166
|
-
);
|
|
167
|
-
if (webglCanvas) {
|
|
168
|
-
webglCanvas.style.pointerEvents = "none";
|
|
169
|
-
webglCanvas.style.touchAction = "none";
|
|
170
|
-
}
|
|
171
|
-
webglAddonRef.current = addon;
|
|
172
|
-
webglContextLossDisposable?.dispose();
|
|
173
|
-
webglContextLossDisposable = addon.onContextLoss(() => {
|
|
174
|
-
console.warn("[TerminalPanel] WebGL context lost, reattaching addon");
|
|
175
|
-
addon.dispose();
|
|
176
|
-
webglAddonRef.current = null;
|
|
177
|
-
attachWebGL();
|
|
178
|
-
});
|
|
179
|
-
return true;
|
|
180
|
-
} catch (err) {
|
|
181
|
-
console.warn("[TerminalPanel] WebGL renderer unavailable, falling back to DOM", err);
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
if (wantsWebGL) attachWebGL();
|
|
186
|
-
const searchAddon = new XSearchAddon();
|
|
187
|
-
terminal.loadAddon(searchAddon);
|
|
188
|
-
const searchResultsDisposable = searchAddon.onDidChangeResults((event) => {
|
|
189
|
-
setMatchInfo({
|
|
190
|
-
total: event.resultCount,
|
|
191
|
-
current: event.resultIndex >= 0 ? event.resultIndex + 1 : 0
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
terminal.attachCustomKeyEventHandler((e) => {
|
|
195
|
-
if (e.type === "keydown") {
|
|
196
|
-
if ((e.metaKey || e.ctrlKey) && !e.shiftKey && !e.altKey && e.key.toLowerCase() === "f") {
|
|
197
|
-
e.preventDefault();
|
|
198
|
-
openSearchRef.current();
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
if (e.key === "Enter" && e.shiftKey && !e.altKey && !e.metaKey && !e.ctrlKey) {
|
|
202
|
-
terminal.input("\x1B[13;2u");
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
|
-
if (e.altKey && !e.metaKey && !e.ctrlKey) {
|
|
206
|
-
if (e.key === "ArrowLeft") {
|
|
207
|
-
terminal.input("\x1Bb");
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
if (e.key === "ArrowRight") {
|
|
211
|
-
terminal.input("\x1Bf");
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
return true;
|
|
217
|
-
});
|
|
218
|
-
terminalRef.current = terminal;
|
|
219
|
-
fitAddonRef.current = fitAddon;
|
|
220
|
-
searchAddonRef.current = searchAddon;
|
|
221
|
-
const containerEl = containerRef.current;
|
|
222
|
-
let lastTouchY = null;
|
|
223
|
-
const onTouchStart = (e) => {
|
|
224
|
-
lastTouchY = e.touches.length === 1 ? e.touches[0].clientY : null;
|
|
225
|
-
};
|
|
226
|
-
const onTouchMove = (e) => {
|
|
227
|
-
if (e.touches.length !== 1 || lastTouchY === null) return;
|
|
228
|
-
const currentY = e.touches[0].clientY;
|
|
229
|
-
const deltaY = lastTouchY - currentY;
|
|
230
|
-
const viewport = containerEl.querySelector(".xterm-viewport");
|
|
231
|
-
const cellHeight = viewport && terminal.rows > 0 ? viewport.clientHeight / terminal.rows : 17;
|
|
232
|
-
const lineDelta = Math.trunc(deltaY / cellHeight);
|
|
233
|
-
if (lineDelta !== 0) {
|
|
234
|
-
terminal.scrollLines(lineDelta);
|
|
235
|
-
lastTouchY = currentY + (deltaY - lineDelta * cellHeight);
|
|
236
|
-
e.preventDefault();
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
const onTouchEnd = () => {
|
|
240
|
-
lastTouchY = null;
|
|
241
|
-
};
|
|
242
|
-
containerEl.addEventListener("touchstart", onTouchStart, { passive: true });
|
|
243
|
-
containerEl.addEventListener("touchmove", onTouchMove, { passive: false });
|
|
244
|
-
containerEl.addEventListener("touchend", onTouchEnd, { passive: true });
|
|
245
|
-
containerEl.addEventListener("touchcancel", onTouchEnd, { passive: true });
|
|
246
|
-
let tapStartX = null;
|
|
247
|
-
let tapStartY = null;
|
|
248
|
-
const onTapStart = (e) => {
|
|
249
|
-
if (e.touches.length === 1) {
|
|
250
|
-
tapStartX = e.touches[0].clientX;
|
|
251
|
-
tapStartY = e.touches[0].clientY;
|
|
252
|
-
} else {
|
|
253
|
-
tapStartX = null;
|
|
254
|
-
tapStartY = null;
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
const onTapEnd = (e) => {
|
|
258
|
-
const startX = tapStartX;
|
|
259
|
-
const startY = tapStartY;
|
|
260
|
-
tapStartX = null;
|
|
261
|
-
tapStartY = null;
|
|
262
|
-
if (startX === null || startY === null || e.changedTouches.length !== 1) return;
|
|
263
|
-
const dx = Math.abs(e.changedTouches[0].clientX - startX);
|
|
264
|
-
const dy = Math.abs(e.changedTouches[0].clientY - startY);
|
|
265
|
-
if (dx < 10 && dy < 10) {
|
|
266
|
-
terminal.focus();
|
|
267
|
-
}
|
|
268
|
-
};
|
|
269
|
-
const onTapCancel = () => {
|
|
270
|
-
tapStartX = null;
|
|
271
|
-
tapStartY = null;
|
|
272
|
-
};
|
|
273
|
-
containerEl.addEventListener("touchstart", onTapStart, { passive: true });
|
|
274
|
-
containerEl.addEventListener("touchend", onTapEnd, { passive: true });
|
|
275
|
-
containerEl.addEventListener("touchcancel", onTapCancel, { passive: true });
|
|
276
|
-
const proto = location.protocol === "https:" ? "wss:" : "ws:";
|
|
277
|
-
const ws = new WebSocket(
|
|
278
|
-
`${proto}//${location.host}/terminal?workspaceId=${encodeURIComponent(workspaceId)}&terminalId=${encodeURIComponent(terminalId)}`
|
|
279
|
-
);
|
|
280
|
-
wsRef.current = ws;
|
|
281
|
-
ws.binaryType = "arraybuffer";
|
|
282
|
-
ws.onopen = () => {
|
|
283
|
-
if (paneMetadata && (paneMetadata.command || paneMetadata.cwd || paneMetadata.env)) {
|
|
284
|
-
const initMsg = { type: "init" };
|
|
285
|
-
if (paneMetadata.command) initMsg.command = paneMetadata.command;
|
|
286
|
-
if (paneMetadata.cwd) initMsg.cwd = paneMetadata.cwd;
|
|
287
|
-
if (paneMetadata.env) initMsg.env = paneMetadata.env;
|
|
288
|
-
ws.send(JSON.stringify(initMsg));
|
|
289
|
-
}
|
|
290
|
-
fitAddon.fit();
|
|
291
|
-
ws.send(
|
|
292
|
-
JSON.stringify({
|
|
293
|
-
type: "resize",
|
|
294
|
-
cols: terminal.cols,
|
|
295
|
-
rows: terminal.rows
|
|
296
|
-
})
|
|
297
|
-
);
|
|
298
|
-
if (autoFocus) {
|
|
299
|
-
terminal.focus();
|
|
300
|
-
}
|
|
301
|
-
};
|
|
302
|
-
ws.onmessage = (event) => {
|
|
303
|
-
if (event.data instanceof ArrayBuffer) {
|
|
304
|
-
terminal.write(new Uint8Array(event.data));
|
|
305
|
-
} else {
|
|
306
|
-
try {
|
|
307
|
-
const msg = JSON.parse(event.data);
|
|
308
|
-
if (msg.type === "title" && typeof msg.title === "string") {
|
|
309
|
-
onTitleChangeRef.current?.(msg.title);
|
|
310
|
-
}
|
|
311
|
-
} catch {
|
|
312
|
-
terminal.write(event.data);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
};
|
|
316
|
-
ws.onclose = () => {
|
|
317
|
-
terminal.write("\r\n\x1B[90m[Terminal disconnected]\x1B[0m\r\n");
|
|
318
|
-
};
|
|
319
|
-
terminal.onData((data) => {
|
|
320
|
-
if (ws.readyState === WebSocket.OPEN) {
|
|
321
|
-
ws.send(data);
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
terminal.onTitleChange((title) => {
|
|
325
|
-
onTitleChangeRef.current?.(title);
|
|
326
|
-
});
|
|
327
|
-
const resizeObserver = new ResizeObserver((entries) => {
|
|
328
|
-
const entry = entries[0];
|
|
329
|
-
if (!entry || entry.contentRect.width === 0 || entry.contentRect.height === 0) return;
|
|
330
|
-
fitAddon.fit();
|
|
331
|
-
if (ws.readyState === WebSocket.OPEN && terminal.cols > 0 && terminal.rows > 0) {
|
|
332
|
-
ws.send(
|
|
333
|
-
JSON.stringify({
|
|
334
|
-
type: "resize",
|
|
335
|
-
cols: terminal.cols,
|
|
336
|
-
rows: terminal.rows
|
|
337
|
-
})
|
|
338
|
-
);
|
|
339
|
-
}
|
|
340
|
-
});
|
|
341
|
-
resizeObserver.observe(containerRef.current);
|
|
342
|
-
cleanup = () => {
|
|
343
|
-
themeObserver.disconnect();
|
|
344
|
-
resizeObserver.disconnect();
|
|
345
|
-
searchResultsDisposable.dispose();
|
|
346
|
-
webglContextLossDisposable?.dispose();
|
|
347
|
-
containerEl.removeEventListener("touchstart", onTouchStart);
|
|
348
|
-
containerEl.removeEventListener("touchmove", onTouchMove);
|
|
349
|
-
containerEl.removeEventListener("touchend", onTouchEnd);
|
|
350
|
-
containerEl.removeEventListener("touchcancel", onTouchEnd);
|
|
351
|
-
containerEl.removeEventListener("touchstart", onTapStart);
|
|
352
|
-
containerEl.removeEventListener("touchend", onTapEnd);
|
|
353
|
-
containerEl.removeEventListener("touchcancel", onTapCancel);
|
|
354
|
-
ws.close();
|
|
355
|
-
terminal.dispose();
|
|
356
|
-
terminalRef.current = null;
|
|
357
|
-
fitAddonRef.current = null;
|
|
358
|
-
searchAddonRef.current = null;
|
|
359
|
-
webglAddonRef.current = null;
|
|
360
|
-
wsRef.current = null;
|
|
361
|
-
};
|
|
362
|
-
});
|
|
363
|
-
return () => {
|
|
364
|
-
cancelled = true;
|
|
365
|
-
cleanup?.();
|
|
366
|
-
};
|
|
367
|
-
}, [terminalId, workspaceId, paneMetadata, autoFocus]);
|
|
368
|
-
reactExports.useEffect(() => {
|
|
369
|
-
if (visible && fitAddonRef.current) {
|
|
370
|
-
requestAnimationFrame(() => {
|
|
371
|
-
fitAddonRef.current?.fit();
|
|
372
|
-
const term = terminalRef.current;
|
|
373
|
-
const ws = wsRef.current;
|
|
374
|
-
if (term && ws?.readyState === WebSocket.OPEN && term.cols > 0 && term.rows > 0) {
|
|
375
|
-
ws.send(JSON.stringify({ type: "resize", cols: term.cols, rows: term.rows }));
|
|
376
|
-
}
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
}, [visible]);
|
|
380
|
-
reactExports.useEffect(() => {
|
|
381
|
-
const handler = () => {
|
|
382
|
-
if (!visible) return;
|
|
383
|
-
terminalRef.current?.focus();
|
|
384
|
-
};
|
|
385
|
-
window.addEventListener("band:focus-terminal", handler);
|
|
386
|
-
return () => window.removeEventListener("band:focus-terminal", handler);
|
|
387
|
-
}, [visible]);
|
|
388
|
-
const handleOpenSearch = reactExports.useCallback(() => {
|
|
389
|
-
setSearchOpen(true);
|
|
390
|
-
requestAnimationFrame(() => {
|
|
391
|
-
searchBarRef.current?.focus();
|
|
392
|
-
searchBarRef.current?.select();
|
|
393
|
-
});
|
|
394
|
-
}, []);
|
|
395
|
-
openSearchRef.current = handleOpenSearch;
|
|
396
|
-
const handleCloseSearch = reactExports.useCallback(() => {
|
|
397
|
-
searchAddonRef.current?.clearDecorations();
|
|
398
|
-
setSearchOpen(false);
|
|
399
|
-
setSearchQuery("");
|
|
400
|
-
setMatchInfo({ total: 0, current: 0 });
|
|
401
|
-
terminalRef.current?.focus();
|
|
402
|
-
}, []);
|
|
403
|
-
const handleNext = reactExports.useCallback(() => {
|
|
404
|
-
if (!searchQuery) return;
|
|
405
|
-
searchAddonRef.current?.findNext(searchQuery, toXtermSearchOptions(searchOptions));
|
|
406
|
-
}, [searchQuery, searchOptions]);
|
|
407
|
-
const handlePrevious = reactExports.useCallback(() => {
|
|
408
|
-
if (!searchQuery) return;
|
|
409
|
-
searchAddonRef.current?.findPrevious(searchQuery, toXtermSearchOptions(searchOptions));
|
|
410
|
-
}, [searchQuery, searchOptions]);
|
|
411
|
-
reactExports.useEffect(() => {
|
|
412
|
-
const addon = searchAddonRef.current;
|
|
413
|
-
if (!addon) return;
|
|
414
|
-
if (!searchQuery) {
|
|
415
|
-
addon.clearDecorations();
|
|
416
|
-
setMatchInfo({ total: 0, current: 0 });
|
|
417
|
-
return;
|
|
418
|
-
}
|
|
419
|
-
addon.findNext(searchQuery, toXtermSearchOptions(searchOptions));
|
|
420
|
-
}, [searchQuery, searchOptions]);
|
|
421
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-full w-full flex-col", children: [
|
|
422
|
-
searchOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
423
|
-
SearchBar,
|
|
424
|
-
{
|
|
425
|
-
ref: searchBarRef,
|
|
426
|
-
query: searchQuery,
|
|
427
|
-
onQueryChange: setSearchQuery,
|
|
428
|
-
options: searchOptions,
|
|
429
|
-
onOptionsChange: setSearchOptions,
|
|
430
|
-
placeholder: "Find in terminal...",
|
|
431
|
-
matchInfo,
|
|
432
|
-
onNext: handleNext,
|
|
433
|
-
onPrevious: handlePrevious,
|
|
434
|
-
onClose: handleCloseSearch
|
|
435
|
-
}
|
|
436
|
-
),
|
|
437
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative min-h-0 flex-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: containerRef, className: "absolute inset-2 overflow-hidden" }) })
|
|
438
|
-
] });
|
|
439
|
-
}
|
|
440
|
-
export {
|
|
441
|
-
TerminalPanel
|
|
442
|
-
};
|