@industry-theme/xterm-terminal-panel 0.1.10 → 0.2.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +198 -103
- package/dist/src/components/ThemedTerminal.d.ts.map +1 -1
- package/dist/src/panel-types/index.d.ts +10 -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 +13 -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';
|
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,
|
|
@@ -80,6 +86,7 @@ var ThemedTerminal = forwardRef(({
|
|
|
80
86
|
onClose,
|
|
81
87
|
onDestroy,
|
|
82
88
|
onPopOut,
|
|
89
|
+
onShortcut,
|
|
83
90
|
overlayState,
|
|
84
91
|
cursorBlink = true,
|
|
85
92
|
cursorStyle = "block",
|
|
@@ -98,6 +105,37 @@ var ThemedTerminal = forwardRef(({
|
|
|
98
105
|
const scrollDebounceRef = useRef(null);
|
|
99
106
|
const isVisibleRef = useRef(isVisible);
|
|
100
107
|
const isScrollLockedRef = useRef(true);
|
|
108
|
+
const onShortcutRef = useRef(onShortcut);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
onShortcutRef.current = onShortcut;
|
|
111
|
+
}, [onShortcut]);
|
|
112
|
+
const handleDroppedContent = useCallback((content) => {
|
|
113
|
+
if (terminal) {
|
|
114
|
+
terminal.paste(content);
|
|
115
|
+
terminal.focus();
|
|
116
|
+
}
|
|
117
|
+
}, [terminal]);
|
|
118
|
+
const { isDragOver, ...dropZoneProps } = useDropZone({
|
|
119
|
+
handlers: [
|
|
120
|
+
{
|
|
121
|
+
dataType: [DATA_TYPES.FILE_PATH, DATA_TYPES.DIRECTORY_PATH],
|
|
122
|
+
onDrop: (data) => {
|
|
123
|
+
const safePath = sanitizePath(data.primaryData);
|
|
124
|
+
handleDroppedContent(safePath);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
dataType: DATA_TYPES.TEXT_SELECTION,
|
|
129
|
+
onDrop: (data) => {
|
|
130
|
+
handleDroppedContent(data.primaryData);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
onPlainTextDrop: (text) => {
|
|
135
|
+
handleDroppedContent(text);
|
|
136
|
+
},
|
|
137
|
+
showVisualFeedback: true
|
|
138
|
+
});
|
|
101
139
|
useEffect(() => {
|
|
102
140
|
isVisibleRef.current = isVisible;
|
|
103
141
|
}, [isVisible]);
|
|
@@ -251,6 +289,12 @@ var ThemedTerminal = forwardRef(({
|
|
|
251
289
|
});
|
|
252
290
|
term.attachCustomKeyEventHandler((event) => {
|
|
253
291
|
if (event.metaKey && event.shiftKey && event.key.toLowerCase() === "p") {
|
|
292
|
+
if (onShortcutRef.current) {
|
|
293
|
+
onShortcutRef.current({
|
|
294
|
+
shortcut: "command-palette",
|
|
295
|
+
originalEvent: event
|
|
296
|
+
});
|
|
297
|
+
}
|
|
254
298
|
return false;
|
|
255
299
|
}
|
|
256
300
|
return true;
|
|
@@ -267,7 +311,12 @@ var ThemedTerminal = forwardRef(({
|
|
|
267
311
|
const webLinksAddon = new WebLinksAddon((event, uri) => {
|
|
268
312
|
event.preventDefault();
|
|
269
313
|
if (onLinkClick) {
|
|
270
|
-
onLinkClick(uri
|
|
314
|
+
onLinkClick(uri, {
|
|
315
|
+
shiftKey: event.shiftKey,
|
|
316
|
+
metaKey: event.metaKey,
|
|
317
|
+
ctrlKey: event.ctrlKey,
|
|
318
|
+
altKey: event.altKey
|
|
319
|
+
});
|
|
271
320
|
}
|
|
272
321
|
});
|
|
273
322
|
term.loadAddon(webLinksAddon);
|
|
@@ -574,8 +623,9 @@ var ThemedTerminal = forwardRef(({
|
|
|
574
623
|
})
|
|
575
624
|
]
|
|
576
625
|
}),
|
|
577
|
-
/* @__PURE__ */
|
|
626
|
+
/* @__PURE__ */ jsxs("div", {
|
|
578
627
|
ref: terminalRef,
|
|
628
|
+
...dropZoneProps,
|
|
579
629
|
className: `terminal-container-fix ${scrollbarStyle === "hidden" ? "hide-scrollbar" : scrollbarStyle === "thin" ? "thin-scrollbar" : scrollbarStyle === "auto-hide" ? "auto-hide-scrollbar" : ""}`,
|
|
580
630
|
style: {
|
|
581
631
|
flex: 1,
|
|
@@ -585,91 +635,118 @@ var ThemedTerminal = forwardRef(({
|
|
|
585
635
|
height: "100%",
|
|
586
636
|
minHeight: 0
|
|
587
637
|
},
|
|
588
|
-
children:
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
zIndex: 10
|
|
604
|
-
},
|
|
605
|
-
children: [
|
|
606
|
-
/* @__PURE__ */ jsx(Monitor, {
|
|
607
|
-
size: 48,
|
|
608
|
-
color: theme.colors.textSecondary
|
|
609
|
-
}),
|
|
610
|
-
/* @__PURE__ */ jsx("div", {
|
|
611
|
-
style: {
|
|
612
|
-
fontSize: "16px",
|
|
613
|
-
fontWeight: "500",
|
|
614
|
-
color: theme.colors.text,
|
|
615
|
-
textAlign: "center"
|
|
616
|
-
},
|
|
617
|
-
children: overlayState.message
|
|
618
|
-
}),
|
|
619
|
-
overlayState.subtitle && /* @__PURE__ */ jsx("div", {
|
|
620
|
-
style: {
|
|
621
|
-
fontSize: "14px",
|
|
622
|
-
color: theme.colors.textSecondary,
|
|
623
|
-
textAlign: "center",
|
|
624
|
-
maxWidth: "400px"
|
|
625
|
-
},
|
|
626
|
-
children: overlayState.subtitle
|
|
627
|
-
}),
|
|
628
|
-
overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
638
|
+
children: [
|
|
639
|
+
isDragOver && /* @__PURE__ */ jsx("div", {
|
|
640
|
+
style: {
|
|
641
|
+
position: "absolute",
|
|
642
|
+
inset: 0,
|
|
643
|
+
background: "rgba(59, 130, 246, 0.1)",
|
|
644
|
+
border: "2px dashed #3b82f6",
|
|
645
|
+
borderRadius: "4px",
|
|
646
|
+
display: "flex",
|
|
647
|
+
alignItems: "center",
|
|
648
|
+
justifyContent: "center",
|
|
649
|
+
pointerEvents: "none",
|
|
650
|
+
zIndex: 1000
|
|
651
|
+
},
|
|
652
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
629
653
|
style: {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
654
|
+
padding: "8px 16px",
|
|
655
|
+
background: "#3b82f6",
|
|
656
|
+
color: "white",
|
|
657
|
+
borderRadius: "4px",
|
|
658
|
+
fontSize: "13px",
|
|
659
|
+
fontWeight: 500
|
|
633
660
|
},
|
|
634
|
-
children:
|
|
635
|
-
|
|
636
|
-
|
|
661
|
+
children: "Drop to insert"
|
|
662
|
+
})
|
|
663
|
+
}),
|
|
664
|
+
overlayState && /* @__PURE__ */ jsxs("div", {
|
|
665
|
+
style: {
|
|
666
|
+
position: "absolute",
|
|
667
|
+
top: 0,
|
|
668
|
+
left: 0,
|
|
669
|
+
right: 0,
|
|
670
|
+
bottom: 0,
|
|
671
|
+
display: "flex",
|
|
672
|
+
flexDirection: "column",
|
|
673
|
+
alignItems: "center",
|
|
674
|
+
justifyContent: "center",
|
|
675
|
+
backgroundColor: theme.colors.background,
|
|
676
|
+
opacity: overlayState.opacity ?? 1,
|
|
677
|
+
gap: "16px",
|
|
678
|
+
padding: "32px",
|
|
679
|
+
zIndex: 10
|
|
680
|
+
},
|
|
681
|
+
children: [
|
|
682
|
+
/* @__PURE__ */ jsx(Monitor, {
|
|
683
|
+
size: 48,
|
|
684
|
+
color: theme.colors.textSecondary
|
|
685
|
+
}),
|
|
686
|
+
/* @__PURE__ */ jsx("div", {
|
|
637
687
|
style: {
|
|
638
|
-
|
|
639
|
-
backgroundColor: action.primary ? theme.colors.primary : "transparent",
|
|
640
|
-
color: action.primary ? "#ffffff" : theme.colors.text,
|
|
641
|
-
border: action.primary ? "none" : `1px solid ${theme.colors.border}`,
|
|
642
|
-
borderRadius: "6px",
|
|
643
|
-
cursor: "pointer",
|
|
644
|
-
fontSize: "14px",
|
|
688
|
+
fontSize: "16px",
|
|
645
689
|
fontWeight: "500",
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
gap: "8px",
|
|
649
|
-
transition: "all 0.2s"
|
|
690
|
+
color: theme.colors.text,
|
|
691
|
+
textAlign: "center"
|
|
650
692
|
},
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
693
|
+
children: overlayState.message
|
|
694
|
+
}),
|
|
695
|
+
overlayState.subtitle && /* @__PURE__ */ jsx("div", {
|
|
696
|
+
style: {
|
|
697
|
+
fontSize: "14px",
|
|
698
|
+
color: theme.colors.textSecondary,
|
|
699
|
+
textAlign: "center",
|
|
700
|
+
maxWidth: "400px"
|
|
657
701
|
},
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
702
|
+
children: overlayState.subtitle
|
|
703
|
+
}),
|
|
704
|
+
overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
705
|
+
style: {
|
|
706
|
+
display: "flex",
|
|
707
|
+
gap: "12px",
|
|
708
|
+
marginTop: "8px"
|
|
664
709
|
},
|
|
665
|
-
children:
|
|
666
|
-
|
|
667
|
-
action.
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
710
|
+
children: overlayState.actions.map((action) => /* @__PURE__ */ jsxs("button", {
|
|
711
|
+
type: "button",
|
|
712
|
+
onClick: action.onClick,
|
|
713
|
+
style: {
|
|
714
|
+
padding: "8px 16px",
|
|
715
|
+
backgroundColor: action.primary ? theme.colors.primary : "transparent",
|
|
716
|
+
color: action.primary ? "#ffffff" : theme.colors.text,
|
|
717
|
+
border: action.primary ? "none" : `1px solid ${theme.colors.border}`,
|
|
718
|
+
borderRadius: "6px",
|
|
719
|
+
cursor: "pointer",
|
|
720
|
+
fontSize: "14px",
|
|
721
|
+
fontWeight: "500",
|
|
722
|
+
display: "flex",
|
|
723
|
+
alignItems: "center",
|
|
724
|
+
gap: "8px",
|
|
725
|
+
transition: "all 0.2s"
|
|
726
|
+
},
|
|
727
|
+
onMouseEnter: (e) => {
|
|
728
|
+
if (action.primary) {
|
|
729
|
+
e.currentTarget.style.opacity = "0.8";
|
|
730
|
+
} else {
|
|
731
|
+
e.currentTarget.style.backgroundColor = theme.colors.backgroundSecondary;
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
onMouseLeave: (e) => {
|
|
735
|
+
if (action.primary) {
|
|
736
|
+
e.currentTarget.style.opacity = "1";
|
|
737
|
+
} else {
|
|
738
|
+
e.currentTarget.style.backgroundColor = "transparent";
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
children: [
|
|
742
|
+
action.icon,
|
|
743
|
+
action.label
|
|
744
|
+
]
|
|
745
|
+
}, action.label))
|
|
746
|
+
})
|
|
747
|
+
]
|
|
748
|
+
})
|
|
749
|
+
]
|
|
673
750
|
})
|
|
674
751
|
]
|
|
675
752
|
});
|
|
@@ -1080,7 +1157,7 @@ import { useTheme as useTheme4 } from "@principal-ade/industry-theme";
|
|
|
1080
1157
|
import { Terminal as TerminalIcon2, X as X2, Plus, Lock as Lock2, Unlock as Unlock2, Box, Boxes } from "lucide-react";
|
|
1081
1158
|
import React, {
|
|
1082
1159
|
useState as useState3,
|
|
1083
|
-
useCallback,
|
|
1160
|
+
useCallback as useCallback2,
|
|
1084
1161
|
useEffect as useEffect3,
|
|
1085
1162
|
useRef as useRef3
|
|
1086
1163
|
} from "react";
|
|
@@ -1099,7 +1176,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1099
1176
|
const [shouldRenderTerminal, setShouldRenderTerminal] = useState3(true);
|
|
1100
1177
|
const [ownerWindowId, setOwnerWindowId] = useState3(null);
|
|
1101
1178
|
const needsRefreshOnResizeRef = useRef3(false);
|
|
1102
|
-
const claimAndConnect =
|
|
1179
|
+
const claimAndConnect = useCallback2(async (targetSessionId, force = false) => {
|
|
1103
1180
|
try {
|
|
1104
1181
|
if (actions.claimTerminalOwnership) {
|
|
1105
1182
|
await actions.claimTerminalOwnership(targetSessionId, force);
|
|
@@ -1178,17 +1255,17 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1178
1255
|
unsubscribe();
|
|
1179
1256
|
};
|
|
1180
1257
|
}, [localSessionId, isInitialized, actions, shouldRenderTerminal]);
|
|
1181
|
-
const handleData =
|
|
1258
|
+
const handleData = useCallback2((data) => {
|
|
1182
1259
|
if (localSessionId && actions.writeToTerminal) {
|
|
1183
1260
|
actions.writeToTerminal(localSessionId, data);
|
|
1184
1261
|
}
|
|
1185
1262
|
}, [localSessionId, actions]);
|
|
1186
|
-
const handleResize =
|
|
1263
|
+
const handleResize = useCallback2((cols, rows) => {
|
|
1187
1264
|
if (localSessionId && actions.resizeTerminal) {
|
|
1188
1265
|
actions.resizeTerminal(localSessionId, cols, rows);
|
|
1189
1266
|
}
|
|
1190
1267
|
}, [localSessionId, actions]);
|
|
1191
|
-
const handleReady =
|
|
1268
|
+
const handleReady = useCallback2((cols, rows) => {
|
|
1192
1269
|
if (localSessionId && actions.resizeTerminal) {
|
|
1193
1270
|
const shouldForce = needsRefreshOnResizeRef.current;
|
|
1194
1271
|
if (shouldForce) {
|
|
@@ -1197,7 +1274,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1197
1274
|
actions.resizeTerminal(localSessionId, cols, rows, shouldForce);
|
|
1198
1275
|
}
|
|
1199
1276
|
}, [localSessionId, actions]);
|
|
1200
|
-
const handleLinkClick =
|
|
1277
|
+
const handleLinkClick = useCallback2((url, modifiers) => {
|
|
1201
1278
|
if (localSessionId) {
|
|
1202
1279
|
events.emit({
|
|
1203
1280
|
type: "terminal:link-click",
|
|
@@ -1205,7 +1282,11 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1205
1282
|
timestamp: Date.now(),
|
|
1206
1283
|
payload: {
|
|
1207
1284
|
url,
|
|
1208
|
-
sessionId: localSessionId
|
|
1285
|
+
sessionId: localSessionId,
|
|
1286
|
+
shiftKey: modifiers.shiftKey,
|
|
1287
|
+
metaKey: modifiers.metaKey,
|
|
1288
|
+
ctrlKey: modifiers.ctrlKey,
|
|
1289
|
+
altKey: modifiers.altKey
|
|
1209
1290
|
}
|
|
1210
1291
|
});
|
|
1211
1292
|
}
|
|
@@ -1224,20 +1305,33 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1224
1305
|
unsubscribe();
|
|
1225
1306
|
};
|
|
1226
1307
|
}, [localSessionId, actions]);
|
|
1227
|
-
const handleTakeControl =
|
|
1308
|
+
const handleTakeControl = useCallback2(async () => {
|
|
1228
1309
|
if (!localSessionId) {
|
|
1229
1310
|
return;
|
|
1230
1311
|
}
|
|
1231
1312
|
await claimAndConnect(localSessionId, true);
|
|
1232
1313
|
}, [localSessionId, claimAndConnect]);
|
|
1233
|
-
const handleScrollPositionChange =
|
|
1314
|
+
const handleScrollPositionChange = useCallback2((position) => {
|
|
1234
1315
|
setScrollPosition(position);
|
|
1235
1316
|
onScrollPositionChange?.(tab.id, position);
|
|
1236
1317
|
}, [tab.id, onScrollPositionChange]);
|
|
1237
|
-
const
|
|
1318
|
+
const handleShortcut = useCallback2((shortcutEvent) => {
|
|
1319
|
+
if (localSessionId) {
|
|
1320
|
+
events.emit({
|
|
1321
|
+
type: "terminal:shortcut",
|
|
1322
|
+
source: "TabbedTerminalPanel",
|
|
1323
|
+
timestamp: Date.now(),
|
|
1324
|
+
payload: {
|
|
1325
|
+
shortcut: shortcutEvent.shortcut,
|
|
1326
|
+
sessionId: localSessionId
|
|
1327
|
+
}
|
|
1328
|
+
});
|
|
1329
|
+
}
|
|
1330
|
+
}, [localSessionId, events]);
|
|
1331
|
+
const handleScrollToBottom = useCallback2(() => {
|
|
1238
1332
|
terminalRef.current?.scrollToBottom();
|
|
1239
1333
|
}, []);
|
|
1240
|
-
const handleToggleScrollLock =
|
|
1334
|
+
const handleToggleScrollLock = useCallback2(() => {
|
|
1241
1335
|
if (scrollPosition.isScrollLocked) {
|
|
1242
1336
|
const terminal = terminalRef.current?.getTerminal();
|
|
1243
1337
|
if (terminal) {
|
|
@@ -1289,6 +1383,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
1289
1383
|
onReady: shouldRenderTerminal ? handleReady : undefined,
|
|
1290
1384
|
onLinkClick: shouldRenderTerminal ? handleLinkClick : undefined,
|
|
1291
1385
|
onScrollPositionChange: shouldRenderTerminal ? handleScrollPositionChange : undefined,
|
|
1386
|
+
onShortcut: handleShortcut,
|
|
1292
1387
|
hideHeader: true,
|
|
1293
1388
|
autoFocus: isActive && shouldRenderTerminal,
|
|
1294
1389
|
isVisible: isVisible && isActive,
|
|
@@ -1342,7 +1437,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1342
1437
|
const [sessionIds, setSessionIds] = useState3(new Map);
|
|
1343
1438
|
const [hoveredTabId, setHoveredTabId] = useState3(null);
|
|
1344
1439
|
const [scrollPositions, setScrollPositions] = useState3(new Map);
|
|
1345
|
-
const getOwnedTabLabel =
|
|
1440
|
+
const getOwnedTabLabel = useCallback2((index, directory2) => {
|
|
1346
1441
|
if (tabLabelPrefix) {
|
|
1347
1442
|
return `${tabLabelPrefix} ${index + 1}`;
|
|
1348
1443
|
}
|
|
@@ -1358,7 +1453,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1358
1453
|
}, [ownedTabs, foreignTabs, getOwnedTabLabel]);
|
|
1359
1454
|
const tabRefsMap = useRef3(new Map);
|
|
1360
1455
|
const refCallbacksMap = useRef3(new Map);
|
|
1361
|
-
const getRefCallback =
|
|
1456
|
+
const getRefCallback = useCallback2((tabId) => {
|
|
1362
1457
|
let callback = refCallbacksMap.current.get(tabId);
|
|
1363
1458
|
if (!callback) {
|
|
1364
1459
|
callback = (ref) => {
|
|
@@ -1375,7 +1470,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1375
1470
|
const hasInitializedRef = useRef3(false);
|
|
1376
1471
|
const isCreatingTabRef = useRef3(false);
|
|
1377
1472
|
const headerRef = useRef3(null);
|
|
1378
|
-
const handleTabScrollPositionChange =
|
|
1473
|
+
const handleTabScrollPositionChange = useCallback2((tabId, position) => {
|
|
1379
1474
|
setScrollPositions((prev) => new Map(prev).set(tabId, position));
|
|
1380
1475
|
}, []);
|
|
1381
1476
|
const defaultScrollPosition = {
|
|
@@ -1383,12 +1478,12 @@ var TabbedTerminalPanelInner = ({
|
|
|
1383
1478
|
isAtBottom: true,
|
|
1384
1479
|
isScrollLocked: false
|
|
1385
1480
|
};
|
|
1386
|
-
const handleToggleScrollLock =
|
|
1481
|
+
const handleToggleScrollLock = useCallback2(() => {
|
|
1387
1482
|
if (activeTabId) {
|
|
1388
1483
|
tabRefsMap.current.get(activeTabId)?.toggleScrollLock();
|
|
1389
1484
|
}
|
|
1390
1485
|
}, [activeTabId]);
|
|
1391
|
-
const restoreOwnedSessions =
|
|
1486
|
+
const restoreOwnedSessions = useCallback2(async () => {
|
|
1392
1487
|
try {
|
|
1393
1488
|
let sessions = [];
|
|
1394
1489
|
if (actions.listTerminalSessions) {
|
|
@@ -1422,7 +1517,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1422
1517
|
console.error("[TabbedTerminalPanel] Failed to restore owned sessions:", err);
|
|
1423
1518
|
}
|
|
1424
1519
|
}, [terminalContext, initialTabs, onTabsChange, actions, directory]);
|
|
1425
|
-
const fetchForeignSessions =
|
|
1520
|
+
const fetchForeignSessions = useCallback2(async () => {
|
|
1426
1521
|
try {
|
|
1427
1522
|
if (!actions.listTerminalSessions) {
|
|
1428
1523
|
return;
|
|
@@ -1453,7 +1548,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1453
1548
|
console.error("[TabbedTerminalPanel] Failed to fetch foreign sessions:", err);
|
|
1454
1549
|
}
|
|
1455
1550
|
}, [terminalContext, actions]);
|
|
1456
|
-
const clearForeignTabs =
|
|
1551
|
+
const clearForeignTabs = useCallback2(() => {
|
|
1457
1552
|
setForeignTabs((prevForeign) => {
|
|
1458
1553
|
const foreignTabIds = new Set(prevForeign.map((t) => t.id));
|
|
1459
1554
|
setSessionIds((prev) => {
|
|
@@ -1477,7 +1572,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1477
1572
|
clearForeignTabs();
|
|
1478
1573
|
}
|
|
1479
1574
|
}, [showAllTerminals, fetchForeignSessions, clearForeignTabs]);
|
|
1480
|
-
const switchTab =
|
|
1575
|
+
const switchTab = useCallback2((tabId) => {
|
|
1481
1576
|
setOwnedTabs((prevTabs) => prevTabs.map((t) => ({
|
|
1482
1577
|
...t,
|
|
1483
1578
|
isActive: t.id === tabId
|
|
@@ -1488,7 +1583,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1488
1583
|
})));
|
|
1489
1584
|
setActiveTabId(tabId);
|
|
1490
1585
|
}, []);
|
|
1491
|
-
const addNewTab =
|
|
1586
|
+
const addNewTab = useCallback2((label, command, targetDirectory) => {
|
|
1492
1587
|
const targetDir = targetDirectory || directory;
|
|
1493
1588
|
const directoryName = targetDir.split("/").pop() || targetDir;
|
|
1494
1589
|
const newTab = {
|
|
@@ -1507,10 +1602,10 @@ var TabbedTerminalPanelInner = ({
|
|
|
1507
1602
|
setForeignTabs((prevTabs) => prevTabs.map((t) => ({ ...t, isActive: false })));
|
|
1508
1603
|
setActiveTabId(newTab.id);
|
|
1509
1604
|
}, [directory, onTabsChange]);
|
|
1510
|
-
const isForeignTab =
|
|
1605
|
+
const isForeignTab = useCallback2((tabId) => {
|
|
1511
1606
|
return tabId.startsWith("tab-foreign-");
|
|
1512
1607
|
}, []);
|
|
1513
|
-
const closeTab =
|
|
1608
|
+
const closeTab = useCallback2(async (tabId) => {
|
|
1514
1609
|
const sessionId = sessionIds.get(tabId);
|
|
1515
1610
|
const isForeign = isForeignTab(tabId);
|
|
1516
1611
|
if (!isForeign && sessionId && actions.destroyTerminalSession) {
|
|
@@ -1560,7 +1655,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
1560
1655
|
});
|
|
1561
1656
|
}
|
|
1562
1657
|
}, [activeTabId, sessionIds, actions, onTabsChange, isForeignTab, ownedTabs, foreignTabs]);
|
|
1563
|
-
const handleSessionCreated =
|
|
1658
|
+
const handleSessionCreated = useCallback2((tabId, sessionId) => {
|
|
1564
1659
|
setSessionIds((prev) => new Map(prev).set(tabId, sessionId));
|
|
1565
1660
|
}, []);
|
|
1566
1661
|
const tabsRef = useRef3(tabs);
|
|
@@ -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,4HAq0B1B,CAAC"}
|
|
@@ -1,9 +1,18 @@
|
|
|
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' | 'terminal:link-click';
|
|
3
|
+
export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:created' | 'terminal:title-change' | 'terminal:cwd-change' | 'terminal:link-click' | 'terminal:shortcut';
|
|
4
4
|
export interface TerminalLinkClickEvent {
|
|
5
5
|
url: string;
|
|
6
6
|
sessionId: string;
|
|
7
|
+
shiftKey: boolean;
|
|
8
|
+
metaKey: boolean;
|
|
9
|
+
ctrlKey: boolean;
|
|
10
|
+
altKey: boolean;
|
|
11
|
+
}
|
|
12
|
+
export type TerminalShortcutId = 'command-palette';
|
|
13
|
+
export interface TerminalShortcutEvent {
|
|
14
|
+
shortcut: TerminalShortcutId;
|
|
15
|
+
sessionId: string;
|
|
7
16
|
}
|
|
8
17
|
export interface TerminalSessionInfo {
|
|
9
18
|
id: string;
|
|
@@ -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,GACrB,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;AAIf,OAAO,KAAK,EACV,wBAAwB,
|
|
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,EAKzB,MAAM,gBAAgB,CAAC;AAwBxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAilCD,eAAO,MAAM,mBAAmB,sDAmB9B,CAAC"}
|
|
@@ -20,11 +20,22 @@ export interface TerminalScrollPosition {
|
|
|
20
20
|
isAtBottom: boolean;
|
|
21
21
|
isScrollLocked: boolean;
|
|
22
22
|
}
|
|
23
|
+
export type TerminalShortcut = 'command-palette';
|
|
24
|
+
export interface TerminalShortcutEvent {
|
|
25
|
+
shortcut: TerminalShortcut;
|
|
26
|
+
originalEvent: KeyboardEvent;
|
|
27
|
+
}
|
|
28
|
+
export interface LinkClickModifiers {
|
|
29
|
+
shiftKey: boolean;
|
|
30
|
+
metaKey: boolean;
|
|
31
|
+
ctrlKey: boolean;
|
|
32
|
+
altKey: boolean;
|
|
33
|
+
}
|
|
23
34
|
export interface ThemedTerminalProps {
|
|
24
35
|
onData?: (data: string) => void;
|
|
25
36
|
onResize?: (cols: number, rows: number) => void;
|
|
26
37
|
onReady?: (cols: number, rows: number) => void;
|
|
27
|
-
onLinkClick?: (url: string) => void;
|
|
38
|
+
onLinkClick?: (url: string, modifiers: LinkClickModifiers) => void;
|
|
28
39
|
onScrollPositionChange?: (position: TerminalScrollPosition) => void;
|
|
29
40
|
className?: string;
|
|
30
41
|
hideHeader?: boolean;
|
|
@@ -37,6 +48,7 @@ export interface ThemedTerminalProps {
|
|
|
37
48
|
onClose?: () => void;
|
|
38
49
|
onDestroy?: () => void;
|
|
39
50
|
onPopOut?: () => void;
|
|
51
|
+
onShortcut?: (event: TerminalShortcutEvent) => void;
|
|
40
52
|
overlayState?: TerminalOverlayState;
|
|
41
53
|
convertEol?: boolean;
|
|
42
54
|
cursorBlink?: 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,KAAK,IAAI,CAAC;
|
|
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.1
|
|
3
|
+
"version": "0.2.1",
|
|
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
|
},
|