@industry-theme/xterm-terminal-panel 0.1.9 → 0.2.0
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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +188 -104
- package/dist/src/components/ThemedTerminal.d.ts.map +1 -1
- package/dist/src/panel-types/index.d.ts +9 -1
- package/dist/src/panel-types/index.d.ts.map +1 -1
- package/dist/src/panels/TabbedTerminalPanel.d.ts.map +1 -1
- package/dist/src/types/terminal.types.d.ts +7 -1
- package/dist/src/types/terminal.types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ThemedTerminal } from './src/components/ThemedTerminal';
|
|
2
2
|
export { ThemedTerminalWithProvider } from './src/components/ThemedTerminalWithProvider';
|
|
3
|
-
export type { ThemedTerminalProps, ThemedTerminalRef, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, } from './src/types/terminal.types';
|
|
3
|
+
export type { ThemedTerminalProps, ThemedTerminalRef, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, LinkClickModifiers, } from './src/types/terminal.types';
|
|
4
4
|
export { useThemedTerminal } from './src/hooks/useThemedTerminal';
|
|
5
5
|
export type { UseThemedTerminalReturn } from './src/hooks/useThemedTerminal';
|
|
6
6
|
export { createTerminalTheme, getTerminalCSSVariables, } from './src/utils/terminalTheme';
|
|
@@ -9,7 +9,7 @@ export { TabbedTerminalPanel } from './src/panels/TabbedTerminalPanel';
|
|
|
9
9
|
export type { TerminalTabContentRef } from './src/panels/TabbedTerminalPanel';
|
|
10
10
|
export { panels, onPackageLoad, onPackageUnload } from './src/panel-exports';
|
|
11
11
|
export { terminalPanelTools, terminalPanelToolsMetadata, createTerminalSessionTool, writeToTerminalTool, closeTerminalSessionTool, clearTerminalTool, focusTerminalTool, } from './src/panel-exports';
|
|
12
|
-
export type { PanelDefinition, PanelMetadata, PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, TerminalSessionInfo, CreateTerminalSessionOptions, TerminalPanelActions, TerminalEventType, TerminalScope, TerminalPanelProps, TerminalTab, TabbedTerminalPanelProps, OwnershipStatus, OwnershipResult, PortReadyData, } from './src/panel-types';
|
|
12
|
+
export type { PanelDefinition, PanelMetadata, PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, TerminalSessionInfo, CreateTerminalSessionOptions, TerminalPanelActions, TerminalEventType, TerminalLinkClickEvent, TerminalScope, TerminalPanelProps, TerminalTab, TabbedTerminalPanelProps, OwnershipStatus, OwnershipResult, PortReadyData, } from './src/panel-types';
|
|
13
13
|
export { getTerminalSessions, getTerminalSession, isTerminalLoading, getRepositoryPath, getWorkspacePath, getTerminalDirectory, getTerminalSlice, } from './src/panel-types';
|
|
14
14
|
export type { Theme } from '@principal-ade/industry-theme';
|
|
15
15
|
export type { Terminal, ITheme as XTermTheme, ITerminalOptions } from '@xterm/xterm';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAGzF,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAGzF,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAG3D,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
// src/components/ThemedTerminal.tsx
|
|
2
|
+
import {
|
|
3
|
+
DATA_TYPES,
|
|
4
|
+
sanitizePath,
|
|
5
|
+
useDropZone
|
|
6
|
+
} from "@principal-ade/panel-framework-core";
|
|
2
7
|
import { FitAddon } from "@xterm/addon-fit";
|
|
3
8
|
import { SearchAddon } from "@xterm/addon-search";
|
|
4
9
|
import { WebLinksAddon } from "@xterm/addon-web-links";
|
|
@@ -13,6 +18,7 @@ import {
|
|
|
13
18
|
} from "lucide-react";
|
|
14
19
|
import {
|
|
15
20
|
forwardRef,
|
|
21
|
+
useCallback,
|
|
16
22
|
useEffect,
|
|
17
23
|
useImperativeHandle,
|
|
18
24
|
useRef,
|
|
@@ -98,6 +104,33 @@ var ThemedTerminal = forwardRef(({
|
|
|
98
104
|
const scrollDebounceRef = useRef(null);
|
|
99
105
|
const isVisibleRef = useRef(isVisible);
|
|
100
106
|
const isScrollLockedRef = useRef(true);
|
|
107
|
+
const handleDroppedContent = useCallback((content) => {
|
|
108
|
+
if (terminal) {
|
|
109
|
+
terminal.paste(content);
|
|
110
|
+
terminal.focus();
|
|
111
|
+
}
|
|
112
|
+
}, [terminal]);
|
|
113
|
+
const { isDragOver, ...dropZoneProps } = useDropZone({
|
|
114
|
+
handlers: [
|
|
115
|
+
{
|
|
116
|
+
dataType: [DATA_TYPES.FILE_PATH, DATA_TYPES.DIRECTORY_PATH],
|
|
117
|
+
onDrop: (data) => {
|
|
118
|
+
const safePath = sanitizePath(data.primaryData);
|
|
119
|
+
handleDroppedContent(safePath);
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
dataType: DATA_TYPES.TEXT_SELECTION,
|
|
124
|
+
onDrop: (data) => {
|
|
125
|
+
handleDroppedContent(data.primaryData);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
onPlainTextDrop: (text) => {
|
|
130
|
+
handleDroppedContent(text);
|
|
131
|
+
},
|
|
132
|
+
showVisualFeedback: true
|
|
133
|
+
});
|
|
101
134
|
useEffect(() => {
|
|
102
135
|
isVisibleRef.current = isVisible;
|
|
103
136
|
}, [isVisible]);
|
|
@@ -267,8 +300,12 @@ var ThemedTerminal = forwardRef(({
|
|
|
267
300
|
const webLinksAddon = new WebLinksAddon((event, uri) => {
|
|
268
301
|
event.preventDefault();
|
|
269
302
|
if (onLinkClick) {
|
|
270
|
-
|
|
271
|
-
|
|
303
|
+
onLinkClick(uri, {
|
|
304
|
+
shiftKey: event.shiftKey,
|
|
305
|
+
metaKey: event.metaKey,
|
|
306
|
+
ctrlKey: event.ctrlKey,
|
|
307
|
+
altKey: event.altKey
|
|
308
|
+
});
|
|
272
309
|
}
|
|
273
310
|
});
|
|
274
311
|
term.loadAddon(webLinksAddon);
|
|
@@ -575,8 +612,9 @@ var ThemedTerminal = forwardRef(({
|
|
|
575
612
|
})
|
|
576
613
|
]
|
|
577
614
|
}),
|
|
578
|
-
/* @__PURE__ */
|
|
615
|
+
/* @__PURE__ */ jsxs("div", {
|
|
579
616
|
ref: terminalRef,
|
|
617
|
+
...dropZoneProps,
|
|
580
618
|
className: `terminal-container-fix ${scrollbarStyle === "hidden" ? "hide-scrollbar" : scrollbarStyle === "thin" ? "thin-scrollbar" : scrollbarStyle === "auto-hide" ? "auto-hide-scrollbar" : ""}`,
|
|
581
619
|
style: {
|
|
582
620
|
flex: 1,
|
|
@@ -586,91 +624,118 @@ var ThemedTerminal = forwardRef(({
|
|
|
586
624
|
height: "100%",
|
|
587
625
|
minHeight: 0
|
|
588
626
|
},
|
|
589
|
-
children:
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
zIndex: 10
|
|
605
|
-
},
|
|
606
|
-
children: [
|
|
607
|
-
/* @__PURE__ */ jsx(Monitor, {
|
|
608
|
-
size: 48,
|
|
609
|
-
color: theme.colors.textSecondary
|
|
610
|
-
}),
|
|
611
|
-
/* @__PURE__ */ jsx("div", {
|
|
612
|
-
style: {
|
|
613
|
-
fontSize: "16px",
|
|
614
|
-
fontWeight: "500",
|
|
615
|
-
color: theme.colors.text,
|
|
616
|
-
textAlign: "center"
|
|
617
|
-
},
|
|
618
|
-
children: overlayState.message
|
|
619
|
-
}),
|
|
620
|
-
overlayState.subtitle && /* @__PURE__ */ jsx("div", {
|
|
621
|
-
style: {
|
|
622
|
-
fontSize: "14px",
|
|
623
|
-
color: theme.colors.textSecondary,
|
|
624
|
-
textAlign: "center",
|
|
625
|
-
maxWidth: "400px"
|
|
626
|
-
},
|
|
627
|
-
children: overlayState.subtitle
|
|
628
|
-
}),
|
|
629
|
-
overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
627
|
+
children: [
|
|
628
|
+
isDragOver && /* @__PURE__ */ jsx("div", {
|
|
629
|
+
style: {
|
|
630
|
+
position: "absolute",
|
|
631
|
+
inset: 0,
|
|
632
|
+
background: "rgba(59, 130, 246, 0.1)",
|
|
633
|
+
border: "2px dashed #3b82f6",
|
|
634
|
+
borderRadius: "4px",
|
|
635
|
+
display: "flex",
|
|
636
|
+
alignItems: "center",
|
|
637
|
+
justifyContent: "center",
|
|
638
|
+
pointerEvents: "none",
|
|
639
|
+
zIndex: 1000
|
|
640
|
+
},
|
|
641
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
630
642
|
style: {
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
643
|
+
padding: "8px 16px",
|
|
644
|
+
background: "#3b82f6",
|
|
645
|
+
color: "white",
|
|
646
|
+
borderRadius: "4px",
|
|
647
|
+
fontSize: "13px",
|
|
648
|
+
fontWeight: 500
|
|
634
649
|
},
|
|
635
|
-
children:
|
|
636
|
-
|
|
637
|
-
|
|
650
|
+
children: "Drop to insert"
|
|
651
|
+
})
|
|
652
|
+
}),
|
|
653
|
+
overlayState && /* @__PURE__ */ jsxs("div", {
|
|
654
|
+
style: {
|
|
655
|
+
position: "absolute",
|
|
656
|
+
top: 0,
|
|
657
|
+
left: 0,
|
|
658
|
+
right: 0,
|
|
659
|
+
bottom: 0,
|
|
660
|
+
display: "flex",
|
|
661
|
+
flexDirection: "column",
|
|
662
|
+
alignItems: "center",
|
|
663
|
+
justifyContent: "center",
|
|
664
|
+
backgroundColor: theme.colors.background,
|
|
665
|
+
opacity: overlayState.opacity ?? 1,
|
|
666
|
+
gap: "16px",
|
|
667
|
+
padding: "32px",
|
|
668
|
+
zIndex: 10
|
|
669
|
+
},
|
|
670
|
+
children: [
|
|
671
|
+
/* @__PURE__ */ jsx(Monitor, {
|
|
672
|
+
size: 48,
|
|
673
|
+
color: theme.colors.textSecondary
|
|
674
|
+
}),
|
|
675
|
+
/* @__PURE__ */ jsx("div", {
|
|
638
676
|
style: {
|
|
639
|
-
|
|
640
|
-
backgroundColor: action.primary ? theme.colors.primary : "transparent",
|
|
641
|
-
color: action.primary ? "#ffffff" : theme.colors.text,
|
|
642
|
-
border: action.primary ? "none" : `1px solid ${theme.colors.border}`,
|
|
643
|
-
borderRadius: "6px",
|
|
644
|
-
cursor: "pointer",
|
|
645
|
-
fontSize: "14px",
|
|
677
|
+
fontSize: "16px",
|
|
646
678
|
fontWeight: "500",
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
gap: "8px",
|
|
650
|
-
transition: "all 0.2s"
|
|
679
|
+
color: theme.colors.text,
|
|
680
|
+
textAlign: "center"
|
|
651
681
|
},
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
682
|
+
children: overlayState.message
|
|
683
|
+
}),
|
|
684
|
+
overlayState.subtitle && /* @__PURE__ */ jsx("div", {
|
|
685
|
+
style: {
|
|
686
|
+
fontSize: "14px",
|
|
687
|
+
color: theme.colors.textSecondary,
|
|
688
|
+
textAlign: "center",
|
|
689
|
+
maxWidth: "400px"
|
|
658
690
|
},
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
691
|
+
children: overlayState.subtitle
|
|
692
|
+
}),
|
|
693
|
+
overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
694
|
+
style: {
|
|
695
|
+
display: "flex",
|
|
696
|
+
gap: "12px",
|
|
697
|
+
marginTop: "8px"
|
|
665
698
|
},
|
|
666
|
-
children:
|
|
667
|
-
|
|
668
|
-
action.
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
699
|
+
children: overlayState.actions.map((action) => /* @__PURE__ */ jsxs("button", {
|
|
700
|
+
type: "button",
|
|
701
|
+
onClick: action.onClick,
|
|
702
|
+
style: {
|
|
703
|
+
padding: "8px 16px",
|
|
704
|
+
backgroundColor: action.primary ? theme.colors.primary : "transparent",
|
|
705
|
+
color: action.primary ? "#ffffff" : theme.colors.text,
|
|
706
|
+
border: action.primary ? "none" : `1px solid ${theme.colors.border}`,
|
|
707
|
+
borderRadius: "6px",
|
|
708
|
+
cursor: "pointer",
|
|
709
|
+
fontSize: "14px",
|
|
710
|
+
fontWeight: "500",
|
|
711
|
+
display: "flex",
|
|
712
|
+
alignItems: "center",
|
|
713
|
+
gap: "8px",
|
|
714
|
+
transition: "all 0.2s"
|
|
715
|
+
},
|
|
716
|
+
onMouseEnter: (e) => {
|
|
717
|
+
if (action.primary) {
|
|
718
|
+
e.currentTarget.style.opacity = "0.8";
|
|
719
|
+
} else {
|
|
720
|
+
e.currentTarget.style.backgroundColor = theme.colors.backgroundSecondary;
|
|
721
|
+
}
|
|
722
|
+
},
|
|
723
|
+
onMouseLeave: (e) => {
|
|
724
|
+
if (action.primary) {
|
|
725
|
+
e.currentTarget.style.opacity = "1";
|
|
726
|
+
} else {
|
|
727
|
+
e.currentTarget.style.backgroundColor = "transparent";
|
|
728
|
+
}
|
|
729
|
+
},
|
|
730
|
+
children: [
|
|
731
|
+
action.icon,
|
|
732
|
+
action.label
|
|
733
|
+
]
|
|
734
|
+
}, action.label))
|
|
735
|
+
})
|
|
736
|
+
]
|
|
737
|
+
})
|
|
738
|
+
]
|
|
674
739
|
})
|
|
675
740
|
]
|
|
676
741
|
});
|
|
@@ -1081,13 +1146,13 @@ import { useTheme as useTheme4 } from "@principal-ade/industry-theme";
|
|
|
1081
1146
|
import { Terminal as TerminalIcon2, X as X2, Plus, Lock as Lock2, Unlock as Unlock2, Box, Boxes } from "lucide-react";
|
|
1082
1147
|
import React, {
|
|
1083
1148
|
useState as useState3,
|
|
1084
|
-
useCallback,
|
|
1149
|
+
useCallback as useCallback2,
|
|
1085
1150
|
useEffect as useEffect3,
|
|
1086
1151
|
useRef as useRef3
|
|
1087
1152
|
} from "react";
|
|
1088
1153
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1089
1154
|
function TerminalTabContentInner(props, ref) {
|
|
1090
|
-
const { tab, sessionId, isActive, isVisible, actions, terminalContext, onSessionCreated, onScrollPositionChange, isForeign = false } = props;
|
|
1155
|
+
const { tab, sessionId, isActive, isVisible, actions, events, terminalContext, onSessionCreated, onScrollPositionChange, isForeign = false } = props;
|
|
1091
1156
|
const terminalRef = useRef3(null);
|
|
1092
1157
|
const [localSessionId, setLocalSessionId] = useState3(sessionId);
|
|
1093
1158
|
const [isInitialized, setIsInitialized] = useState3(false);
|
|
@@ -1100,7 +1165,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1100
1165
|
const [shouldRenderTerminal, setShouldRenderTerminal] = useState3(true);
|
|
1101
1166
|
const [ownerWindowId, setOwnerWindowId] = useState3(null);
|
|
1102
1167
|
const needsRefreshOnResizeRef = useRef3(false);
|
|
1103
|
-
const claimAndConnect =
|
|
1168
|
+
const claimAndConnect = useCallback2(async (targetSessionId, force = false) => {
|
|
1104
1169
|
try {
|
|
1105
1170
|
if (actions.claimTerminalOwnership) {
|
|
1106
1171
|
await actions.claimTerminalOwnership(targetSessionId, force);
|
|
@@ -1179,17 +1244,17 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1179
1244
|
unsubscribe();
|
|
1180
1245
|
};
|
|
1181
1246
|
}, [localSessionId, isInitialized, actions, shouldRenderTerminal]);
|
|
1182
|
-
const handleData =
|
|
1247
|
+
const handleData = useCallback2((data) => {
|
|
1183
1248
|
if (localSessionId && actions.writeToTerminal) {
|
|
1184
1249
|
actions.writeToTerminal(localSessionId, data);
|
|
1185
1250
|
}
|
|
1186
1251
|
}, [localSessionId, actions]);
|
|
1187
|
-
const handleResize =
|
|
1252
|
+
const handleResize = useCallback2((cols, rows) => {
|
|
1188
1253
|
if (localSessionId && actions.resizeTerminal) {
|
|
1189
1254
|
actions.resizeTerminal(localSessionId, cols, rows);
|
|
1190
1255
|
}
|
|
1191
1256
|
}, [localSessionId, actions]);
|
|
1192
|
-
const handleReady =
|
|
1257
|
+
const handleReady = useCallback2((cols, rows) => {
|
|
1193
1258
|
if (localSessionId && actions.resizeTerminal) {
|
|
1194
1259
|
const shouldForce = needsRefreshOnResizeRef.current;
|
|
1195
1260
|
if (shouldForce) {
|
|
@@ -1198,6 +1263,23 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1198
1263
|
actions.resizeTerminal(localSessionId, cols, rows, shouldForce);
|
|
1199
1264
|
}
|
|
1200
1265
|
}, [localSessionId, actions]);
|
|
1266
|
+
const handleLinkClick = useCallback2((url, modifiers) => {
|
|
1267
|
+
if (localSessionId) {
|
|
1268
|
+
events.emit({
|
|
1269
|
+
type: "terminal:link-click",
|
|
1270
|
+
source: "TabbedTerminalPanel",
|
|
1271
|
+
timestamp: Date.now(),
|
|
1272
|
+
payload: {
|
|
1273
|
+
url,
|
|
1274
|
+
sessionId: localSessionId,
|
|
1275
|
+
shiftKey: modifiers.shiftKey,
|
|
1276
|
+
metaKey: modifiers.metaKey,
|
|
1277
|
+
ctrlKey: modifiers.ctrlKey,
|
|
1278
|
+
altKey: modifiers.altKey
|
|
1279
|
+
}
|
|
1280
|
+
});
|
|
1281
|
+
}
|
|
1282
|
+
}, [localSessionId, events]);
|
|
1201
1283
|
useEffect3(() => {
|
|
1202
1284
|
if (!localSessionId || !actions.onOwnershipLost) {
|
|
1203
1285
|
return;
|
|
@@ -1212,20 +1294,20 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1212
1294
|
unsubscribe();
|
|
1213
1295
|
};
|
|
1214
1296
|
}, [localSessionId, actions]);
|
|
1215
|
-
const handleTakeControl =
|
|
1297
|
+
const handleTakeControl = useCallback2(async () => {
|
|
1216
1298
|
if (!localSessionId) {
|
|
1217
1299
|
return;
|
|
1218
1300
|
}
|
|
1219
1301
|
await claimAndConnect(localSessionId, true);
|
|
1220
1302
|
}, [localSessionId, claimAndConnect]);
|
|
1221
|
-
const handleScrollPositionChange =
|
|
1303
|
+
const handleScrollPositionChange = useCallback2((position) => {
|
|
1222
1304
|
setScrollPosition(position);
|
|
1223
1305
|
onScrollPositionChange?.(tab.id, position);
|
|
1224
1306
|
}, [tab.id, onScrollPositionChange]);
|
|
1225
|
-
const handleScrollToBottom =
|
|
1307
|
+
const handleScrollToBottom = useCallback2(() => {
|
|
1226
1308
|
terminalRef.current?.scrollToBottom();
|
|
1227
1309
|
}, []);
|
|
1228
|
-
const handleToggleScrollLock =
|
|
1310
|
+
const handleToggleScrollLock = useCallback2(() => {
|
|
1229
1311
|
if (scrollPosition.isScrollLocked) {
|
|
1230
1312
|
const terminal = terminalRef.current?.getTerminal();
|
|
1231
1313
|
if (terminal) {
|
|
@@ -1275,6 +1357,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1275
1357
|
onData: shouldRenderTerminal ? handleData : undefined,
|
|
1276
1358
|
onResize: shouldRenderTerminal ? handleResize : undefined,
|
|
1277
1359
|
onReady: shouldRenderTerminal ? handleReady : undefined,
|
|
1360
|
+
onLinkClick: shouldRenderTerminal ? handleLinkClick : undefined,
|
|
1278
1361
|
onScrollPositionChange: shouldRenderTerminal ? handleScrollPositionChange : undefined,
|
|
1279
1362
|
hideHeader: true,
|
|
1280
1363
|
autoFocus: isActive && shouldRenderTerminal,
|
|
@@ -1311,7 +1394,7 @@ TerminalTabContent.displayName = "TerminalTabContent";
|
|
|
1311
1394
|
var TabbedTerminalPanelInner = ({
|
|
1312
1395
|
context: _context,
|
|
1313
1396
|
actions,
|
|
1314
|
-
events
|
|
1397
|
+
events,
|
|
1315
1398
|
terminalContext,
|
|
1316
1399
|
directory,
|
|
1317
1400
|
hideHeader = false,
|
|
@@ -1329,7 +1412,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1329
1412
|
const [sessionIds, setSessionIds] = useState3(new Map);
|
|
1330
1413
|
const [hoveredTabId, setHoveredTabId] = useState3(null);
|
|
1331
1414
|
const [scrollPositions, setScrollPositions] = useState3(new Map);
|
|
1332
|
-
const getOwnedTabLabel =
|
|
1415
|
+
const getOwnedTabLabel = useCallback2((index, directory2) => {
|
|
1333
1416
|
if (tabLabelPrefix) {
|
|
1334
1417
|
return `${tabLabelPrefix} ${index + 1}`;
|
|
1335
1418
|
}
|
|
@@ -1345,7 +1428,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1345
1428
|
}, [ownedTabs, foreignTabs, getOwnedTabLabel]);
|
|
1346
1429
|
const tabRefsMap = useRef3(new Map);
|
|
1347
1430
|
const refCallbacksMap = useRef3(new Map);
|
|
1348
|
-
const getRefCallback =
|
|
1431
|
+
const getRefCallback = useCallback2((tabId) => {
|
|
1349
1432
|
let callback = refCallbacksMap.current.get(tabId);
|
|
1350
1433
|
if (!callback) {
|
|
1351
1434
|
callback = (ref) => {
|
|
@@ -1362,7 +1445,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1362
1445
|
const hasInitializedRef = useRef3(false);
|
|
1363
1446
|
const isCreatingTabRef = useRef3(false);
|
|
1364
1447
|
const headerRef = useRef3(null);
|
|
1365
|
-
const handleTabScrollPositionChange =
|
|
1448
|
+
const handleTabScrollPositionChange = useCallback2((tabId, position) => {
|
|
1366
1449
|
setScrollPositions((prev) => new Map(prev).set(tabId, position));
|
|
1367
1450
|
}, []);
|
|
1368
1451
|
const defaultScrollPosition = {
|
|
@@ -1370,12 +1453,12 @@ var TabbedTerminalPanelInner = ({
|
|
|
1370
1453
|
isAtBottom: true,
|
|
1371
1454
|
isScrollLocked: false
|
|
1372
1455
|
};
|
|
1373
|
-
const handleToggleScrollLock =
|
|
1456
|
+
const handleToggleScrollLock = useCallback2(() => {
|
|
1374
1457
|
if (activeTabId) {
|
|
1375
1458
|
tabRefsMap.current.get(activeTabId)?.toggleScrollLock();
|
|
1376
1459
|
}
|
|
1377
1460
|
}, [activeTabId]);
|
|
1378
|
-
const restoreOwnedSessions =
|
|
1461
|
+
const restoreOwnedSessions = useCallback2(async () => {
|
|
1379
1462
|
try {
|
|
1380
1463
|
let sessions = [];
|
|
1381
1464
|
if (actions.listTerminalSessions) {
|
|
@@ -1409,7 +1492,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1409
1492
|
console.error("[TabbedTerminalPanel] Failed to restore owned sessions:", err);
|
|
1410
1493
|
}
|
|
1411
1494
|
}, [terminalContext, initialTabs, onTabsChange, actions, directory]);
|
|
1412
|
-
const fetchForeignSessions =
|
|
1495
|
+
const fetchForeignSessions = useCallback2(async () => {
|
|
1413
1496
|
try {
|
|
1414
1497
|
if (!actions.listTerminalSessions) {
|
|
1415
1498
|
return;
|
|
@@ -1440,7 +1523,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1440
1523
|
console.error("[TabbedTerminalPanel] Failed to fetch foreign sessions:", err);
|
|
1441
1524
|
}
|
|
1442
1525
|
}, [terminalContext, actions]);
|
|
1443
|
-
const clearForeignTabs =
|
|
1526
|
+
const clearForeignTabs = useCallback2(() => {
|
|
1444
1527
|
setForeignTabs((prevForeign) => {
|
|
1445
1528
|
const foreignTabIds = new Set(prevForeign.map((t) => t.id));
|
|
1446
1529
|
setSessionIds((prev) => {
|
|
@@ -1464,7 +1547,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1464
1547
|
clearForeignTabs();
|
|
1465
1548
|
}
|
|
1466
1549
|
}, [showAllTerminals, fetchForeignSessions, clearForeignTabs]);
|
|
1467
|
-
const switchTab =
|
|
1550
|
+
const switchTab = useCallback2((tabId) => {
|
|
1468
1551
|
setOwnedTabs((prevTabs) => prevTabs.map((t) => ({
|
|
1469
1552
|
...t,
|
|
1470
1553
|
isActive: t.id === tabId
|
|
@@ -1475,7 +1558,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1475
1558
|
})));
|
|
1476
1559
|
setActiveTabId(tabId);
|
|
1477
1560
|
}, []);
|
|
1478
|
-
const addNewTab =
|
|
1561
|
+
const addNewTab = useCallback2((label, command, targetDirectory) => {
|
|
1479
1562
|
const targetDir = targetDirectory || directory;
|
|
1480
1563
|
const directoryName = targetDir.split("/").pop() || targetDir;
|
|
1481
1564
|
const newTab = {
|
|
@@ -1494,10 +1577,10 @@ var TabbedTerminalPanelInner = ({
|
|
|
1494
1577
|
setForeignTabs((prevTabs) => prevTabs.map((t) => ({ ...t, isActive: false })));
|
|
1495
1578
|
setActiveTabId(newTab.id);
|
|
1496
1579
|
}, [directory, onTabsChange]);
|
|
1497
|
-
const isForeignTab =
|
|
1580
|
+
const isForeignTab = useCallback2((tabId) => {
|
|
1498
1581
|
return tabId.startsWith("tab-foreign-");
|
|
1499
1582
|
}, []);
|
|
1500
|
-
const closeTab =
|
|
1583
|
+
const closeTab = useCallback2(async (tabId) => {
|
|
1501
1584
|
const sessionId = sessionIds.get(tabId);
|
|
1502
1585
|
const isForeign = isForeignTab(tabId);
|
|
1503
1586
|
if (!isForeign && sessionId && actions.destroyTerminalSession) {
|
|
@@ -1547,7 +1630,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1547
1630
|
});
|
|
1548
1631
|
}
|
|
1549
1632
|
}, [activeTabId, sessionIds, actions, onTabsChange, isForeignTab, ownedTabs, foreignTabs]);
|
|
1550
|
-
const handleSessionCreated =
|
|
1633
|
+
const handleSessionCreated = useCallback2((tabId, sessionId) => {
|
|
1551
1634
|
setSessionIds((prev) => new Map(prev).set(tabId, sessionId));
|
|
1552
1635
|
}, []);
|
|
1553
1636
|
const tabsRef = useRef3(tabs);
|
|
@@ -1825,6 +1908,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1825
1908
|
isActive: tab.id === activeTabId,
|
|
1826
1909
|
isVisible,
|
|
1827
1910
|
actions,
|
|
1911
|
+
events,
|
|
1828
1912
|
terminalContext,
|
|
1829
1913
|
onSessionCreated: handleSessionCreated,
|
|
1830
1914
|
onScrollPositionChange: handleTabScrollPositionChange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AA+B3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAuzB1B,CAAC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
export type { PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, PanelEvent, PanelEventType, PanelDefinition, PanelMetadata, PanelLifecycleHooks, DataSlice, RepositoryMetadata, WorkspaceMetadata, } from '@principal-ade/panel-framework-core';
|
|
2
2
|
import type { PanelActions as CorePanelActions, PanelContextValue, DataSlice } from '@principal-ade/panel-framework-core';
|
|
3
|
-
export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:created' | 'terminal:title-change' | 'terminal:cwd-change';
|
|
3
|
+
export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:created' | 'terminal:title-change' | 'terminal:cwd-change' | 'terminal:link-click';
|
|
4
|
+
export interface TerminalLinkClickEvent {
|
|
5
|
+
url: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
shiftKey: boolean;
|
|
8
|
+
metaKey: boolean;
|
|
9
|
+
ctrlKey: boolean;
|
|
10
|
+
altKey: boolean;
|
|
11
|
+
}
|
|
4
12
|
export interface TerminalSessionInfo {
|
|
5
13
|
id: string;
|
|
6
14
|
pid: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"AAQA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EACV,YAAY,IAAI,gBAAgB,EAChC,iBAAiB,EACjB,SAAS,EACV,MAAM,qCAAqC,CAAC;AAK7C,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,uBAAuB,GACvB,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,wBAAwB,EAIzB,MAAM,gBAAgB,CAAC;AAwBxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AA8jCD,eAAO,MAAM,mBAAmB,sDAmB9B,CAAC"}
|
|
@@ -20,11 +20,17 @@ export interface TerminalScrollPosition {
|
|
|
20
20
|
isAtBottom: boolean;
|
|
21
21
|
isScrollLocked: boolean;
|
|
22
22
|
}
|
|
23
|
+
export interface LinkClickModifiers {
|
|
24
|
+
shiftKey: boolean;
|
|
25
|
+
metaKey: boolean;
|
|
26
|
+
ctrlKey: boolean;
|
|
27
|
+
altKey: boolean;
|
|
28
|
+
}
|
|
23
29
|
export interface ThemedTerminalProps {
|
|
24
30
|
onData?: (data: string) => void;
|
|
25
31
|
onResize?: (cols: number, rows: number) => void;
|
|
26
32
|
onReady?: (cols: number, rows: number) => void;
|
|
27
|
-
onLinkClick?: (url: string,
|
|
33
|
+
onLinkClick?: (url: string, modifiers: LinkClickModifiers) => void;
|
|
28
34
|
onScrollPositionChange?: (position: TerminalScrollPosition) => void;
|
|
29
35
|
className?: string;
|
|
30
36
|
hideHeader?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAM7C,MAAM,WAAW,oBAAoB;IAEnC,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACxB,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,WAAW,sBAAsB;IAErC,OAAO,EAAE,OAAO,CAAC;IAEjB,UAAU,EAAE,OAAO,CAAC;IAEpB,cAAc,EAAE,OAAO,CAAC;CACzB;AAKD,MAAM,WAAW,mBAAmB;IAGlC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAGhC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAGhD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAG/C,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@industry-theme/xterm-terminal-panel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Industry-themed xterm.js terminal components with panel framework integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"license": "MIT",
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@principal-ade/industry-theme": "^0.1.3",
|
|
58
|
-
"@principal-ade/panel-framework-core": "^0.
|
|
58
|
+
"@principal-ade/panel-framework-core": "^0.2.0",
|
|
59
59
|
"@principal-ade/utcp-panel-event": "^0.1.0",
|
|
60
60
|
"clsx": "^2.1.1"
|
|
61
61
|
},
|