@industry-theme/xterm-terminal-panel 0.9.6 → 0.10.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 +311 -377
- package/dist/src/components/TabBar/TabBar.d.ts.map +1 -1
- package/dist/src/components/TabBar/TabButton.d.ts.map +1 -1
- package/dist/src/components/TabBar/index.d.ts +1 -1
- package/dist/src/components/TabBar/index.d.ts.map +1 -1
- package/dist/src/hooks/useTerminalDropZone.d.ts.map +1 -1
- package/dist/src/panel-types/index.d.ts +2 -19
- 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/tab.d.ts +9 -9
- package/dist/src/types/tab.d.ts.map +1 -1
- package/dist/src/utils/tabDrag.d.ts +3 -0
- package/dist/src/utils/tabDrag.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export { useThemedTerminal } from './src/hooks/useThemedTerminal';
|
|
|
22
22
|
export type { UseThemedTerminalReturn } from './src/hooks/useThemedTerminal';
|
|
23
23
|
export { createTerminalTheme, getTerminalCSSVariables, } from './src/utils/terminalTheme';
|
|
24
24
|
export { TabBar, TabButton } from './src/components/TabBar';
|
|
25
|
-
export type { Tab, BaseTab, LegacyTab, TabBarProps, TabButtonProps } from './src/types/tab';
|
|
25
|
+
export type { Tab, BaseTab, LegacyTab, TabBarProps, TabButtonProps, TabReorderPosition } from './src/types/tab';
|
|
26
26
|
export type { ContentTab, SkillTab, AgentTab, MixedTab, TabByContentType, } from './src/types/mixed-tab';
|
|
27
27
|
export { isTabOfType } from './src/types/mixed-tab';
|
|
28
28
|
export { useTabKeyboardShortcuts } from './src/hooks/useTabKeyboardShortcuts';
|
|
@@ -31,7 +31,7 @@ export { TabbedTerminalPanel } from './src/panels/TabbedTerminalPanel';
|
|
|
31
31
|
export type { TerminalTabContentRef } from './src/panels/TabbedTerminalPanel';
|
|
32
32
|
export { panels, onPackageLoad, onPackageUnload } from './src/panel-exports';
|
|
33
33
|
export { terminalPanelTools, terminalPanelToolsMetadata, createTerminalSessionTool, writeToTerminalTool, closeTerminalSessionTool, clearTerminalTool, focusTerminalTool, } from './src/panel-exports';
|
|
34
|
-
export type { PanelDefinition, PanelMetadata, PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, TerminalSessionInfo, CreateTerminalSessionOptions, TerminalPanelActions, TerminalEventType, TerminalLinkClickEvent, TerminalScope, TerminalPanelProps, TerminalTab, TabbedTerminalPanelProps, OwnershipStatus, OwnershipResult, PortReadyData, TerminalWorkingState, TerminalActivityType, TerminalActivityChangedEvent,
|
|
34
|
+
export type { PanelDefinition, PanelMetadata, PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, TerminalSessionInfo, CreateTerminalSessionOptions, TerminalPanelActions, TerminalEventType, TerminalLinkClickEvent, TerminalScope, TerminalPanelProps, TerminalTab, TabbedTerminalPanelProps, OwnershipStatus, OwnershipResult, PortReadyData, TerminalWorkingState, TerminalActivityType, TerminalActivityChangedEvent, TerminalRepoInfo, } from './src/panel-types';
|
|
35
35
|
export { getTerminalSessions, getTerminalSession, isTerminalLoading, getRepositoryPath, getWorkspacePath, getTerminalDirectory, getTerminalSlice, } from './src/panel-types';
|
|
36
36
|
export { getTracer, getActiveSpan, withSpan, withSpanSync, TRACER_NAME, TRACER_VERSION, trace, context, SpanStatusCode, } from './src/telemetry';
|
|
37
37
|
export type { Tracer, Span } from './src/telemetry';
|
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;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACpG,YAAY,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAIjF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,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,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG5D,YAAY,EACV,GAAG,EACH,OAAO,EACP,SAAS,EACT,WAAW,EACX,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,14 @@ import {
|
|
|
30
30
|
useDropZone
|
|
31
31
|
} from "@principal-ade/panel-framework-core";
|
|
32
32
|
import { useCallback } from "react";
|
|
33
|
+
|
|
34
|
+
// src/utils/tabDrag.ts
|
|
35
|
+
var TAB_REORDER_MIME = "application/x-tab-reorder";
|
|
36
|
+
function isTabReorderDrag(dataTransfer) {
|
|
37
|
+
return !!dataTransfer?.types.includes(TAB_REORDER_MIME);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// src/hooks/useTerminalDropZone.tsx
|
|
33
41
|
import { jsx } from "react/jsx-runtime";
|
|
34
42
|
var FocusDelayMs = 10;
|
|
35
43
|
function getDroppedImageFiles(e) {
|
|
@@ -75,7 +83,9 @@ function useTerminalDropZone({
|
|
|
75
83
|
const {
|
|
76
84
|
isDragOver,
|
|
77
85
|
onDrop: handlePanelDrop,
|
|
78
|
-
|
|
86
|
+
onDragOver: handlePanelDragOver,
|
|
87
|
+
onDragEnter: handlePanelDragEnter,
|
|
88
|
+
onDragLeave: handlePanelDragLeave
|
|
79
89
|
} = useDropZone({
|
|
80
90
|
handlers: [
|
|
81
91
|
{
|
|
@@ -100,6 +110,10 @@ function useTerminalDropZone({
|
|
|
100
110
|
});
|
|
101
111
|
const handleDrop = useCallback(
|
|
102
112
|
(e) => {
|
|
113
|
+
if (isTabReorderDrag(e.dataTransfer)) {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
103
117
|
const imageFiles = getDroppedImageFiles(e);
|
|
104
118
|
handlePanelDrop(e);
|
|
105
119
|
if (imageFiles.length > 0) {
|
|
@@ -108,6 +122,20 @@ function useTerminalDropZone({
|
|
|
108
122
|
},
|
|
109
123
|
[handlePanelDrop, handleDroppedImageFiles]
|
|
110
124
|
);
|
|
125
|
+
const dropZoneProps = {
|
|
126
|
+
onDragOver: (e) => {
|
|
127
|
+
if (isTabReorderDrag(e.dataTransfer)) return;
|
|
128
|
+
handlePanelDragOver(e);
|
|
129
|
+
},
|
|
130
|
+
onDragEnter: (e) => {
|
|
131
|
+
if (isTabReorderDrag(e.dataTransfer)) return;
|
|
132
|
+
handlePanelDragEnter(e);
|
|
133
|
+
},
|
|
134
|
+
onDragLeave: (e) => {
|
|
135
|
+
if (isTabReorderDrag(e.dataTransfer)) return;
|
|
136
|
+
handlePanelDragLeave(e);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
111
139
|
return {
|
|
112
140
|
isDragOver,
|
|
113
141
|
dropZoneProps,
|
|
@@ -159,7 +187,7 @@ import {
|
|
|
159
187
|
// package.json
|
|
160
188
|
var package_default = {
|
|
161
189
|
name: "@industry-theme/xterm-terminal-panel",
|
|
162
|
-
version: "0.
|
|
190
|
+
version: "0.10.0",
|
|
163
191
|
description: "Industry-themed xterm.js terminal components with panel framework integration",
|
|
164
192
|
type: "module",
|
|
165
193
|
sideEffects: [
|
|
@@ -2581,12 +2609,15 @@ function useThemedTerminal() {
|
|
|
2581
2609
|
// src/components/TabBar/TabBar.tsx
|
|
2582
2610
|
import { useTheme as useTheme7 } from "@principal-ade/industry-theme";
|
|
2583
2611
|
import { Plus } from "lucide-react";
|
|
2584
|
-
import {
|
|
2612
|
+
import React, { useCallback as useCallback5, useState as useState3 } from "react";
|
|
2585
2613
|
|
|
2586
2614
|
// src/components/TabBar/TabButton.tsx
|
|
2587
2615
|
import { useTheme as useTheme6 } from "@principal-ade/industry-theme";
|
|
2588
|
-
import { useCallback as useCallback5 } from "react";
|
|
2589
2616
|
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2617
|
+
var CLOSE_BUTTON_LEFT = 8;
|
|
2618
|
+
var CLOSE_BUTTON_SIZE = 16;
|
|
2619
|
+
var CLOSE_BUTTON_GAP = 6;
|
|
2620
|
+
var CLOSE_BUTTON_GUTTER = CLOSE_BUTTON_LEFT + CLOSE_BUTTON_SIZE + CLOSE_BUTTON_GAP;
|
|
2590
2621
|
var TabButton = ({
|
|
2591
2622
|
tab,
|
|
2592
2623
|
isActive,
|
|
@@ -2599,105 +2630,28 @@ var TabButton = ({
|
|
|
2599
2630
|
renderAccessory,
|
|
2600
2631
|
renderIcon,
|
|
2601
2632
|
renderLabel,
|
|
2602
|
-
// Drag and drop props
|
|
2603
2633
|
draggable = false,
|
|
2604
2634
|
onDragStart,
|
|
2605
2635
|
onDragEnd,
|
|
2606
|
-
|
|
2607
|
-
canAcceptDrop = false,
|
|
2608
|
-
isDragOver = false,
|
|
2609
|
-
onDragEnter,
|
|
2636
|
+
onDragOver,
|
|
2610
2637
|
onDragLeave,
|
|
2611
|
-
|
|
2638
|
+
onDrop,
|
|
2639
|
+
dropPosition = null,
|
|
2640
|
+
isBeingDragged = false
|
|
2612
2641
|
}) => {
|
|
2613
2642
|
const { theme } = useTheme6();
|
|
2614
2643
|
const showCloseButton = isHovered || isActive;
|
|
2615
2644
|
const closable = tab.closable !== false;
|
|
2616
|
-
const handleDragStart = useCallback5(
|
|
2617
|
-
(e) => {
|
|
2618
|
-
const target = e.currentTarget;
|
|
2619
|
-
e.dataTransfer.setData("application/x-tab-association", tab.id);
|
|
2620
|
-
e.dataTransfer.effectAllowed = "move";
|
|
2621
|
-
if (target) {
|
|
2622
|
-
const clone = target.cloneNode(true);
|
|
2623
|
-
clone.style.position = "fixed";
|
|
2624
|
-
clone.style.top = "-9999px";
|
|
2625
|
-
clone.style.left = "-9999px";
|
|
2626
|
-
clone.style.width = `${target.offsetWidth}px`;
|
|
2627
|
-
clone.style.height = `${target.offsetHeight}px`;
|
|
2628
|
-
clone.style.opacity = "0.8";
|
|
2629
|
-
clone.style.pointerEvents = "none";
|
|
2630
|
-
clone.style.transform = "none";
|
|
2631
|
-
clone.style.zIndex = "99999";
|
|
2632
|
-
document.body.appendChild(clone);
|
|
2633
|
-
e.dataTransfer.setDragImage(clone, target.offsetWidth / 2, target.offsetHeight / 2);
|
|
2634
|
-
setTimeout(() => {
|
|
2635
|
-
if (clone.parentNode) {
|
|
2636
|
-
clone.parentNode.removeChild(clone);
|
|
2637
|
-
}
|
|
2638
|
-
}, 100);
|
|
2639
|
-
}
|
|
2640
|
-
onDragStart?.(tab.id);
|
|
2641
|
-
},
|
|
2642
|
-
[tab.id, onDragStart]
|
|
2643
|
-
);
|
|
2644
|
-
const handleDragEnd = useCallback5(() => {
|
|
2645
|
-
onDragEnd?.();
|
|
2646
|
-
}, [onDragEnd]);
|
|
2647
|
-
const handleDragOver = useCallback5(
|
|
2648
|
-
(e) => {
|
|
2649
|
-
if (canAcceptDrop) {
|
|
2650
|
-
e.preventDefault();
|
|
2651
|
-
e.dataTransfer.dropEffect = "move";
|
|
2652
|
-
}
|
|
2653
|
-
},
|
|
2654
|
-
[canAcceptDrop]
|
|
2655
|
-
);
|
|
2656
|
-
const handleDrop = useCallback5(
|
|
2657
|
-
(e) => {
|
|
2658
|
-
e.preventDefault();
|
|
2659
|
-
const draggedTabId = e.dataTransfer.getData("application/x-tab-association");
|
|
2660
|
-
if (draggedTabId && draggedTabId !== tab.id) {
|
|
2661
|
-
onDrop?.(draggedTabId);
|
|
2662
|
-
}
|
|
2663
|
-
},
|
|
2664
|
-
[tab.id, onDrop]
|
|
2665
|
-
);
|
|
2666
|
-
const handleDragEnter = useCallback5(
|
|
2667
|
-
(e) => {
|
|
2668
|
-
e.preventDefault();
|
|
2669
|
-
onDragEnter?.();
|
|
2670
|
-
},
|
|
2671
|
-
[onDragEnter]
|
|
2672
|
-
);
|
|
2673
|
-
const handleDragLeave = useCallback5(
|
|
2674
|
-
(e) => {
|
|
2675
|
-
e.preventDefault();
|
|
2676
|
-
onDragLeave?.();
|
|
2677
|
-
},
|
|
2678
|
-
[onDragLeave]
|
|
2679
|
-
);
|
|
2680
|
-
const getDragOverStyles = () => {
|
|
2681
|
-
if (isDragOver && canAcceptDrop) {
|
|
2682
|
-
return {
|
|
2683
|
-
outline: `2px solid ${theme.colors.primary}`,
|
|
2684
|
-
outlineOffset: "-2px",
|
|
2685
|
-
backgroundColor: theme.colors.backgroundTertiary
|
|
2686
|
-
};
|
|
2687
|
-
}
|
|
2688
|
-
return {};
|
|
2689
|
-
};
|
|
2690
2645
|
return /* @__PURE__ */ jsxs7(
|
|
2691
2646
|
"div",
|
|
2692
2647
|
{
|
|
2693
2648
|
"data-tab-id": tab.id,
|
|
2694
2649
|
draggable,
|
|
2695
|
-
onDragStart
|
|
2696
|
-
onDragEnd
|
|
2697
|
-
onDragOver
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
onDragLeave: handleDragLeave,
|
|
2650
|
+
onDragStart,
|
|
2651
|
+
onDragEnd,
|
|
2652
|
+
onDragOver,
|
|
2653
|
+
onDragLeave,
|
|
2654
|
+
onDrop,
|
|
2701
2655
|
onMouseEnter,
|
|
2702
2656
|
onMouseLeave,
|
|
2703
2657
|
onClick,
|
|
@@ -2707,12 +2661,17 @@ var TabButton = ({
|
|
|
2707
2661
|
justifyContent: "center",
|
|
2708
2662
|
gap: "6px",
|
|
2709
2663
|
padding: "6px 8px",
|
|
2664
|
+
// Reserve the close button's gutter so a long, ellipsized label never
|
|
2665
|
+
// renders underneath it. Reserved whenever the tab is closable (not
|
|
2666
|
+
// just when the button is shown) so the layout doesn't shift on hover.
|
|
2667
|
+
paddingLeft: closable ? `${CLOSE_BUTTON_GUTTER}px` : "8px",
|
|
2710
2668
|
backgroundColor: isActive ? theme.colors.backgroundDark ?? theme.colors.backgroundSecondary : theme.colors.background,
|
|
2711
2669
|
// The tab bar's bottom border lives on each tab: inactive tabs draw
|
|
2712
2670
|
// it, the active tab leaves a gap so it reads as connected to the
|
|
2713
2671
|
// terminal content below.
|
|
2714
2672
|
borderBottom: isActive ? "1px solid transparent" : `1px solid ${theme.colors.border}`,
|
|
2715
|
-
cursor: draggable ? "grab" : "pointer",
|
|
2673
|
+
cursor: draggable ? isBeingDragged ? "grabbing" : "grab" : "pointer",
|
|
2674
|
+
opacity: isBeingDragged ? 0.55 : 1,
|
|
2716
2675
|
userSelect: "none",
|
|
2717
2676
|
WebkitUserSelect: "none",
|
|
2718
2677
|
fontSize: theme.fontSizes[1],
|
|
@@ -2725,10 +2684,27 @@ var TabButton = ({
|
|
|
2725
2684
|
minWidth: 0,
|
|
2726
2685
|
height: "100%",
|
|
2727
2686
|
position: "relative",
|
|
2728
|
-
boxSizing: "border-box"
|
|
2729
|
-
...getDragOverStyles()
|
|
2687
|
+
boxSizing: "border-box"
|
|
2730
2688
|
},
|
|
2731
2689
|
children: [
|
|
2690
|
+
dropPosition && /* @__PURE__ */ jsx11(
|
|
2691
|
+
"span",
|
|
2692
|
+
{
|
|
2693
|
+
"aria-hidden": "true",
|
|
2694
|
+
style: {
|
|
2695
|
+
position: "absolute",
|
|
2696
|
+
top: 3,
|
|
2697
|
+
bottom: 3,
|
|
2698
|
+
left: dropPosition === "before" ? 0 : void 0,
|
|
2699
|
+
right: dropPosition === "after" ? 0 : void 0,
|
|
2700
|
+
width: "2px",
|
|
2701
|
+
borderRadius: "1px",
|
|
2702
|
+
backgroundColor: theme.colors.primary,
|
|
2703
|
+
zIndex: 2,
|
|
2704
|
+
pointerEvents: "none"
|
|
2705
|
+
}
|
|
2706
|
+
}
|
|
2707
|
+
),
|
|
2732
2708
|
closable && showCloseButton && /* @__PURE__ */ jsx11(
|
|
2733
2709
|
"button",
|
|
2734
2710
|
{
|
|
@@ -2740,8 +2716,8 @@ var TabButton = ({
|
|
|
2740
2716
|
display: "flex",
|
|
2741
2717
|
alignItems: "center",
|
|
2742
2718
|
justifyContent: "center",
|
|
2743
|
-
width:
|
|
2744
|
-
height:
|
|
2719
|
+
width: `${CLOSE_BUTTON_SIZE}px`,
|
|
2720
|
+
height: `${CLOSE_BUTTON_SIZE}px`,
|
|
2745
2721
|
borderRadius: "3px",
|
|
2746
2722
|
border: "none",
|
|
2747
2723
|
backgroundColor: "transparent",
|
|
@@ -2749,7 +2725,7 @@ var TabButton = ({
|
|
|
2749
2725
|
color: theme.colors.textSecondary,
|
|
2750
2726
|
padding: 0,
|
|
2751
2727
|
position: "absolute",
|
|
2752
|
-
left:
|
|
2728
|
+
left: `${CLOSE_BUTTON_LEFT}px`
|
|
2753
2729
|
},
|
|
2754
2730
|
onMouseEnter: (e) => {
|
|
2755
2731
|
e.currentTarget.style.backgroundColor = theme.colors.backgroundTertiary;
|
|
@@ -2816,38 +2792,76 @@ var TabBar = ({
|
|
|
2816
2792
|
renderTabLabel,
|
|
2817
2793
|
className,
|
|
2818
2794
|
showKeyboardHints = true,
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
enableDragAndDrop = false
|
|
2795
|
+
enableTabReorder,
|
|
2796
|
+
onTabReorder,
|
|
2797
|
+
canReorderTab
|
|
2823
2798
|
}) => {
|
|
2824
2799
|
const { theme } = useTheme7();
|
|
2825
2800
|
const [hoveredTabId, setHoveredTabId] = useState3(null);
|
|
2826
2801
|
const [draggedTabId, setDraggedTabId] = useState3(null);
|
|
2827
|
-
const [
|
|
2828
|
-
const
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2802
|
+
const [dropTarget, setDropTarget] = useState3(null);
|
|
2803
|
+
const reorderEnabled = onTabReorder !== void 0 && (enableTabReorder ?? true);
|
|
2804
|
+
const isReorderable = useCallback5(
|
|
2805
|
+
(tabId) => reorderEnabled && (canReorderTab ? canReorderTab(tabId) : true),
|
|
2806
|
+
[reorderEnabled, canReorderTab]
|
|
2807
|
+
);
|
|
2808
|
+
const handleDragStart = useCallback5(
|
|
2809
|
+
(tabId, e) => {
|
|
2810
|
+
setDraggedTabId(tabId);
|
|
2811
|
+
e.dataTransfer.setData(TAB_REORDER_MIME, tabId);
|
|
2812
|
+
e.dataTransfer.effectAllowed = "move";
|
|
2813
|
+
},
|
|
2814
|
+
[]
|
|
2815
|
+
);
|
|
2816
|
+
const clearDrag = useCallback5(() => {
|
|
2832
2817
|
setDraggedTabId(null);
|
|
2833
|
-
|
|
2818
|
+
setDropTarget(null);
|
|
2834
2819
|
}, []);
|
|
2835
|
-
const
|
|
2836
|
-
(
|
|
2837
|
-
if (
|
|
2838
|
-
|
|
2820
|
+
const handleDragOver = useCallback5(
|
|
2821
|
+
(tabId, e) => {
|
|
2822
|
+
if (!draggedTabId || !isReorderable(draggedTabId) || !isReorderable(tabId)) {
|
|
2823
|
+
return;
|
|
2839
2824
|
}
|
|
2840
|
-
|
|
2841
|
-
|
|
2825
|
+
e.preventDefault();
|
|
2826
|
+
e.dataTransfer.dropEffect = "move";
|
|
2827
|
+
if (draggedTabId === tabId) {
|
|
2828
|
+
setDropTarget(null);
|
|
2829
|
+
return;
|
|
2830
|
+
}
|
|
2831
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
2832
|
+
const position = e.clientX < rect.left + rect.width / 2 ? "before" : "after";
|
|
2833
|
+
setDropTarget(
|
|
2834
|
+
(prev) => prev?.tabId === tabId && prev.position === position ? prev : { tabId, position }
|
|
2835
|
+
);
|
|
2842
2836
|
},
|
|
2843
|
-
[
|
|
2837
|
+
[draggedTabId, isReorderable]
|
|
2838
|
+
);
|
|
2839
|
+
const handleDragLeave = useCallback5(
|
|
2840
|
+
(tabId, e) => {
|
|
2841
|
+
const related = e.relatedTarget;
|
|
2842
|
+
if (related && e.currentTarget.contains(related)) {
|
|
2843
|
+
return;
|
|
2844
|
+
}
|
|
2845
|
+
setDropTarget((prev) => prev?.tabId === tabId ? null : prev);
|
|
2846
|
+
},
|
|
2847
|
+
[]
|
|
2848
|
+
);
|
|
2849
|
+
const handleDrop = useCallback5(
|
|
2850
|
+
(tabId, e) => {
|
|
2851
|
+
if (!draggedTabId || !isReorderable(draggedTabId) || !isReorderable(tabId)) {
|
|
2852
|
+
return;
|
|
2853
|
+
}
|
|
2854
|
+
e.preventDefault();
|
|
2855
|
+
e.stopPropagation();
|
|
2856
|
+
if (draggedTabId !== tabId) {
|
|
2857
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
2858
|
+
const position = e.clientX < rect.left + rect.width / 2 ? "before" : "after";
|
|
2859
|
+
onTabReorder?.(draggedTabId, tabId, position);
|
|
2860
|
+
}
|
|
2861
|
+
clearDrag();
|
|
2862
|
+
},
|
|
2863
|
+
[draggedTabId, isReorderable, onTabReorder, clearDrag]
|
|
2844
2864
|
);
|
|
2845
|
-
const handleDragEnter = useCallback6((tabId) => {
|
|
2846
|
-
setDragOverTabId(tabId);
|
|
2847
|
-
}, []);
|
|
2848
|
-
const handleDragLeave = useCallback6(() => {
|
|
2849
|
-
setDragOverTabId(null);
|
|
2850
|
-
}, []);
|
|
2851
2865
|
return /* @__PURE__ */ jsxs8(
|
|
2852
2866
|
"div",
|
|
2853
2867
|
{
|
|
@@ -2887,34 +2901,55 @@ var TabBar = ({
|
|
|
2887
2901
|
backgroundColor: theme.colors.backgroundSecondary,
|
|
2888
2902
|
boxSizing: "border-box"
|
|
2889
2903
|
},
|
|
2904
|
+
onDragLeave: (e) => {
|
|
2905
|
+
const related = e.relatedTarget;
|
|
2906
|
+
if (!related || !e.currentTarget.contains(related)) {
|
|
2907
|
+
setDropTarget(null);
|
|
2908
|
+
}
|
|
2909
|
+
},
|
|
2890
2910
|
children: tabs.map((tab, index) => {
|
|
2891
|
-
const
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2911
|
+
const reorderable = isReorderable(tab.id);
|
|
2912
|
+
const acceptsDrop = reorderEnabled && draggedTabId !== null && draggedTabId !== tab.id && isReorderable(draggedTabId) && reorderable;
|
|
2913
|
+
const prevTab = index > 0 ? tabs[index - 1] : void 0;
|
|
2914
|
+
const showDivider = prevTab !== void 0 && prevTab.id !== activeTabId && tab.id !== activeTabId;
|
|
2915
|
+
return /* @__PURE__ */ jsxs8(React.Fragment, { children: [
|
|
2916
|
+
showDivider && /* @__PURE__ */ jsx12(
|
|
2917
|
+
"div",
|
|
2918
|
+
{
|
|
2919
|
+
"aria-hidden": "true",
|
|
2920
|
+
style: {
|
|
2921
|
+
flexShrink: 0,
|
|
2922
|
+
width: "1px",
|
|
2923
|
+
height: "16px",
|
|
2924
|
+
backgroundColor: theme.colors.border
|
|
2925
|
+
}
|
|
2926
|
+
}
|
|
2927
|
+
),
|
|
2928
|
+
/* @__PURE__ */ jsx12(
|
|
2929
|
+
TabButton,
|
|
2930
|
+
{
|
|
2931
|
+
tab,
|
|
2932
|
+
isActive: tab.id === activeTabId,
|
|
2933
|
+
isHovered: tab.id === hoveredTabId,
|
|
2934
|
+
onMouseEnter: () => setHoveredTabId(tab.id),
|
|
2935
|
+
onMouseLeave: () => setHoveredTabId(null),
|
|
2936
|
+
onClick: () => onTabClick(tab.id),
|
|
2937
|
+
onClose: () => onTabClose(tab.id),
|
|
2938
|
+
keyboardHint: showKeyboardHints && index < 9 ? `\u2318 ${index + 1}` : void 0,
|
|
2939
|
+
renderAccessory: renderTabAccessory,
|
|
2940
|
+
renderIcon: renderTabIcon,
|
|
2941
|
+
renderLabel: renderTabLabel,
|
|
2942
|
+
draggable: reorderable,
|
|
2943
|
+
onDragStart: reorderable ? (e) => handleDragStart(tab.id, e) : void 0,
|
|
2944
|
+
onDragEnd: reorderable ? clearDrag : void 0,
|
|
2945
|
+
onDragOver: (e) => handleDragOver(tab.id, e),
|
|
2946
|
+
onDragLeave: (e) => handleDragLeave(tab.id, e),
|
|
2947
|
+
onDrop: (e) => handleDrop(tab.id, e),
|
|
2948
|
+
dropPosition: acceptsDrop && dropTarget?.tabId === tab.id ? dropTarget.position : null,
|
|
2949
|
+
isBeingDragged: draggedTabId === tab.id
|
|
2950
|
+
}
|
|
2951
|
+
)
|
|
2952
|
+
] }, tab.id);
|
|
2918
2953
|
})
|
|
2919
2954
|
}
|
|
2920
2955
|
),
|
|
@@ -3024,11 +3059,10 @@ var useTabKeyboardShortcuts = ({
|
|
|
3024
3059
|
|
|
3025
3060
|
// src/panels/TabbedTerminalPanel.tsx
|
|
3026
3061
|
import { useTheme as useTheme9 } from "@principal-ade/industry-theme";
|
|
3027
|
-
import {
|
|
3028
|
-
import
|
|
3029
|
-
import React4, {
|
|
3062
|
+
import { Terminal as TerminalIcon2, Box, Boxes } from "lucide-react";
|
|
3063
|
+
import React3, {
|
|
3030
3064
|
useState as useState4,
|
|
3031
|
-
useCallback as
|
|
3065
|
+
useCallback as useCallback6,
|
|
3032
3066
|
useEffect as useEffect5,
|
|
3033
3067
|
useRef as useRef5
|
|
3034
3068
|
} from "react";
|
|
@@ -3036,7 +3070,7 @@ import React4, {
|
|
|
3036
3070
|
// src/components/TerminalStatusBar.tsx
|
|
3037
3071
|
import { useTheme as useTheme8 } from "@principal-ade/industry-theme";
|
|
3038
3072
|
import { Folder, GitBranch } from "lucide-react";
|
|
3039
|
-
import
|
|
3073
|
+
import React2 from "react";
|
|
3040
3074
|
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3041
3075
|
var AVATAR_SIZE = 14;
|
|
3042
3076
|
var TerminalStatusBar = ({
|
|
@@ -3044,9 +3078,9 @@ var TerminalStatusBar = ({
|
|
|
3044
3078
|
repo
|
|
3045
3079
|
}) => {
|
|
3046
3080
|
const { theme } = useTheme8();
|
|
3047
|
-
const [avatarFailed, setAvatarFailed] =
|
|
3081
|
+
const [avatarFailed, setAvatarFailed] = React2.useState(false);
|
|
3048
3082
|
const owner = repo?.owner;
|
|
3049
|
-
|
|
3083
|
+
React2.useEffect(() => {
|
|
3050
3084
|
setAvatarFailed(false);
|
|
3051
3085
|
}, [owner]);
|
|
3052
3086
|
const containerStyle = {
|
|
@@ -3212,17 +3246,17 @@ function TerminalTabContentInner(props, ref) {
|
|
|
3212
3246
|
} = props;
|
|
3213
3247
|
const [isWorkingFromActivity, setIsWorkingFromActivity] = useState4(false);
|
|
3214
3248
|
const sessionRef = useRef5(null);
|
|
3215
|
-
const handleSessionCreated =
|
|
3249
|
+
const handleSessionCreated = useCallback6(
|
|
3216
3250
|
(sid) => onSessionCreated(tab.id, sid),
|
|
3217
3251
|
[onSessionCreated, tab.id]
|
|
3218
3252
|
);
|
|
3219
|
-
const handleScrollPositionChange =
|
|
3253
|
+
const handleScrollPositionChange = useCallback6(
|
|
3220
3254
|
(position) => {
|
|
3221
3255
|
onScrollPositionChange?.(tab.id, position);
|
|
3222
3256
|
},
|
|
3223
3257
|
[onScrollPositionChange, tab.id]
|
|
3224
3258
|
);
|
|
3225
|
-
const handleActivityChange =
|
|
3259
|
+
const handleActivityChange = useCallback6(
|
|
3226
3260
|
(state) => {
|
|
3227
3261
|
const sid = sessionRef.current?.getSessionId();
|
|
3228
3262
|
if (sid) {
|
|
@@ -3234,7 +3268,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
3234
3268
|
},
|
|
3235
3269
|
[autoShowBlinds, onActivityStateChange]
|
|
3236
3270
|
);
|
|
3237
|
-
|
|
3271
|
+
React3.useImperativeHandle(
|
|
3238
3272
|
ref,
|
|
3239
3273
|
() => ({
|
|
3240
3274
|
scrollToBottom: () => sessionRef.current?.scrollToBottom()
|
|
@@ -3298,8 +3332,8 @@ var areTerminalTabContentPropsEqual = (prevProps, nextProps) => {
|
|
|
3298
3332
|
}
|
|
3299
3333
|
return changes.length === 0;
|
|
3300
3334
|
};
|
|
3301
|
-
var TerminalTabContentForwarded =
|
|
3302
|
-
var TerminalTabContent =
|
|
3335
|
+
var TerminalTabContentForwarded = React3.forwardRef(TerminalTabContentInner);
|
|
3336
|
+
var TerminalTabContent = React3.memo(TerminalTabContentForwarded, areTerminalTabContentPropsEqual);
|
|
3303
3337
|
TerminalTabContent.displayName = "TerminalTabContent";
|
|
3304
3338
|
var TabbedTerminalPanelInner = ({
|
|
3305
3339
|
context: _context,
|
|
@@ -3315,10 +3349,12 @@ var TabbedTerminalPanelInner = ({
|
|
|
3315
3349
|
showAllTerminals = false,
|
|
3316
3350
|
onShowAllTerminalsChange,
|
|
3317
3351
|
hideShowAllTerminalsButton = true,
|
|
3352
|
+
enableTabReorder = true,
|
|
3318
3353
|
tabLabelPrefix,
|
|
3319
3354
|
renderTabContent,
|
|
3320
3355
|
renderTabIcon,
|
|
3321
3356
|
renderTabLabel,
|
|
3357
|
+
renderEmptyState,
|
|
3322
3358
|
width,
|
|
3323
3359
|
activeTabId: activeTabIdProp,
|
|
3324
3360
|
onActiveTabChange,
|
|
@@ -3330,28 +3366,16 @@ var TabbedTerminalPanelInner = ({
|
|
|
3330
3366
|
activityDetection = true,
|
|
3331
3367
|
activityTimeout = 500,
|
|
3332
3368
|
autoShowBlinds = false,
|
|
3333
|
-
// Association props
|
|
3334
|
-
associations,
|
|
3335
|
-
onAssociationCollapsedChange,
|
|
3336
|
-
onAssociationRatioChange,
|
|
3337
|
-
renderAssociatedContent,
|
|
3338
|
-
getAssociatedHeader,
|
|
3339
|
-
// Drag and drop association
|
|
3340
|
-
enableTabAssociationDrag = true,
|
|
3341
|
-
onTabAssociate: onTabAssociateProp,
|
|
3342
|
-
onTabDissociate: _onTabDissociate,
|
|
3343
|
-
// TODO: implement dissociate (pop-out) functionality
|
|
3344
3369
|
bottomBarContent,
|
|
3345
3370
|
renderer
|
|
3346
3371
|
}) => {
|
|
3347
3372
|
const { theme } = useTheme9();
|
|
3348
|
-
const onTabAssociate = actions.onTabAssociate ?? onTabAssociateProp;
|
|
3349
3373
|
const [ownedTabs, setOwnedTabs] = useState4(initialTabs);
|
|
3350
3374
|
const [foreignTabs, setForeignTabs] = useState4([]);
|
|
3351
3375
|
const [internalActiveTabId, setInternalActiveTabId] = useState4(null);
|
|
3352
3376
|
const isControlled = activeTabIdProp !== void 0;
|
|
3353
3377
|
const activeTabId = isControlled ? activeTabIdProp : internalActiveTabId;
|
|
3354
|
-
const setActiveTabId =
|
|
3378
|
+
const setActiveTabId = React3.useCallback((tabId) => {
|
|
3355
3379
|
if (isControlled) {
|
|
3356
3380
|
onActiveTabChange?.(tabId);
|
|
3357
3381
|
} else {
|
|
@@ -3360,13 +3384,13 @@ var TabbedTerminalPanelInner = ({
|
|
|
3360
3384
|
}
|
|
3361
3385
|
}, [isControlled, onActiveTabChange]);
|
|
3362
3386
|
const [activatedTabs, setActivatedTabs] = useState4(() => /* @__PURE__ */ new Set());
|
|
3363
|
-
|
|
3387
|
+
React3.useEffect(() => {
|
|
3364
3388
|
if (activeTabId && !activatedTabs.has(activeTabId)) {
|
|
3365
3389
|
setActivatedTabs((prev) => new Set(prev).add(activeTabId));
|
|
3366
3390
|
}
|
|
3367
3391
|
}, [activeTabId, activatedTabs]);
|
|
3368
|
-
const activationOrderRef =
|
|
3369
|
-
|
|
3392
|
+
const activationOrderRef = React3.useRef([]);
|
|
3393
|
+
React3.useEffect(() => {
|
|
3370
3394
|
if (!activeTabId) return;
|
|
3371
3395
|
const order = activationOrderRef.current.filter((id) => id !== activeTabId);
|
|
3372
3396
|
order.push(activeTabId);
|
|
@@ -3374,7 +3398,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3374
3398
|
}, [activeTabId]);
|
|
3375
3399
|
const [sessionIds, setSessionIds] = useState4(/* @__PURE__ */ new Map());
|
|
3376
3400
|
const [activityStates, setActivityStates] = useState4(/* @__PURE__ */ new Map());
|
|
3377
|
-
const customTabsKey =
|
|
3401
|
+
const customTabsKey = React3.useMemo(() => {
|
|
3378
3402
|
const customTabs = initialTabs.filter((tab) => tab.contentType !== "terminal");
|
|
3379
3403
|
return JSON.stringify(customTabs);
|
|
3380
3404
|
}, [initialTabs]);
|
|
@@ -3414,13 +3438,13 @@ var TabbedTerminalPanelInner = ({
|
|
|
3414
3438
|
onFocusTabHandled?.();
|
|
3415
3439
|
}
|
|
3416
3440
|
}, [requestFocusTabId, ownedTabs, foreignTabs, setActiveTabId, onFocusTabHandled, activeTabId]);
|
|
3417
|
-
const getOwnedTabLabel =
|
|
3441
|
+
const getOwnedTabLabel = useCallback6((index, _directory) => {
|
|
3418
3442
|
if (tabLabelPrefix) {
|
|
3419
3443
|
return `${tabLabelPrefix} ${index + 1}`;
|
|
3420
3444
|
}
|
|
3421
3445
|
return `\u2318 ${index + 1}`;
|
|
3422
3446
|
}, [tabLabelPrefix]);
|
|
3423
|
-
const tabs =
|
|
3447
|
+
const tabs = React3.useMemo(() => {
|
|
3424
3448
|
const labeledOwnedTabs = ownedTabs.map((tab, index) => ({
|
|
3425
3449
|
...tab,
|
|
3426
3450
|
// Only overwrite label for terminal tabs, preserve original label for custom tabs
|
|
@@ -3431,7 +3455,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3431
3455
|
);
|
|
3432
3456
|
return [...labeledOwnedTabs, ...sortedForeignTabs];
|
|
3433
3457
|
}, [ownedTabs, foreignTabs, getOwnedTabLabel]);
|
|
3434
|
-
const genericTabs =
|
|
3458
|
+
const genericTabs = React3.useMemo(() => {
|
|
3435
3459
|
return tabs.map((tab) => ({
|
|
3436
3460
|
id: tab.id,
|
|
3437
3461
|
label: tab.label,
|
|
@@ -3446,7 +3470,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3446
3470
|
}, [tabs]);
|
|
3447
3471
|
const tabRefsMap = useRef5(/* @__PURE__ */ new Map());
|
|
3448
3472
|
const refCallbacksMap = useRef5(/* @__PURE__ */ new Map());
|
|
3449
|
-
const getRefCallback =
|
|
3473
|
+
const getRefCallback = useCallback6((tabId) => {
|
|
3450
3474
|
let callback = refCallbacksMap.current.get(tabId);
|
|
3451
3475
|
if (!callback) {
|
|
3452
3476
|
callback = (ref) => {
|
|
@@ -3463,7 +3487,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3463
3487
|
const hasInitializedRef = useRef5(false);
|
|
3464
3488
|
const isCreatingTabRef = useRef5(false);
|
|
3465
3489
|
const headerRef = useRef5(null);
|
|
3466
|
-
const restoreOwnedSessions =
|
|
3490
|
+
const restoreOwnedSessions = useCallback6(async () => {
|
|
3467
3491
|
try {
|
|
3468
3492
|
let sessions = [];
|
|
3469
3493
|
if (actions.listTerminalSessions) {
|
|
@@ -3512,7 +3536,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3512
3536
|
console.error("[TabbedTerminalPanel] Failed to restore owned sessions:", err);
|
|
3513
3537
|
}
|
|
3514
3538
|
}, [terminalContext, sessionIds, activeTabId, onTabsChange, actions, directory, setActiveTabId]);
|
|
3515
|
-
const fetchForeignSessions =
|
|
3539
|
+
const fetchForeignSessions = useCallback6(async () => {
|
|
3516
3540
|
try {
|
|
3517
3541
|
if (!actions.listTerminalSessions) {
|
|
3518
3542
|
return;
|
|
@@ -3546,7 +3570,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3546
3570
|
console.error("[TabbedTerminalPanel] Failed to fetch foreign sessions:", err);
|
|
3547
3571
|
}
|
|
3548
3572
|
}, [terminalContext, actions]);
|
|
3549
|
-
const clearForeignTabs =
|
|
3573
|
+
const clearForeignTabs = useCallback6(() => {
|
|
3550
3574
|
setForeignTabs((prevForeign) => {
|
|
3551
3575
|
const foreignTabIds = new Set(prevForeign.map((t) => t.id));
|
|
3552
3576
|
setSessionIds((prev) => {
|
|
@@ -3583,10 +3607,10 @@ var TabbedTerminalPanelInner = ({
|
|
|
3583
3607
|
clearForeignTabs();
|
|
3584
3608
|
}
|
|
3585
3609
|
}, [showAllTerminals, fetchForeignSessions, clearForeignTabs]);
|
|
3586
|
-
const switchTab =
|
|
3610
|
+
const switchTab = useCallback6((tabId) => {
|
|
3587
3611
|
setActiveTabId(tabId);
|
|
3588
3612
|
}, [setActiveTabId]);
|
|
3589
|
-
const addNewTab =
|
|
3613
|
+
const addNewTab = useCallback6(
|
|
3590
3614
|
(label, command, targetDirectory) => {
|
|
3591
3615
|
const targetDir = targetDirectory || directory;
|
|
3592
3616
|
const directoryName = targetDir.split("/").pop() || targetDir;
|
|
@@ -3607,10 +3631,30 @@ var TabbedTerminalPanelInner = ({
|
|
|
3607
3631
|
},
|
|
3608
3632
|
[directory, onTabsChange]
|
|
3609
3633
|
);
|
|
3610
|
-
const isForeignTab =
|
|
3634
|
+
const isForeignTab = useCallback6((tabId) => {
|
|
3611
3635
|
return tabId.startsWith("tab-foreign-");
|
|
3612
3636
|
}, []);
|
|
3613
|
-
const
|
|
3637
|
+
const handleTabReorder = useCallback6(
|
|
3638
|
+
(draggedTabId, targetTabId, position) => {
|
|
3639
|
+
if (draggedTabId === targetTabId) return;
|
|
3640
|
+
if (isForeignTab(draggedTabId) || isForeignTab(targetTabId)) return;
|
|
3641
|
+
const fromIndex = ownedTabs.findIndex((tab) => tab.id === draggedTabId);
|
|
3642
|
+
const targetIndex = ownedTabs.findIndex((tab) => tab.id === targetTabId);
|
|
3643
|
+
if (fromIndex === -1 || targetIndex === -1) return;
|
|
3644
|
+
const nextTabs = [...ownedTabs];
|
|
3645
|
+
const [moved] = nextTabs.splice(fromIndex, 1);
|
|
3646
|
+
let insertAt = targetIndex + (position === "after" ? 1 : 0);
|
|
3647
|
+
if (fromIndex < insertAt) insertAt -= 1;
|
|
3648
|
+
nextTabs.splice(insertAt, 0, moved);
|
|
3649
|
+
if (nextTabs.every((tab, index) => tab.id === ownedTabs[index].id)) {
|
|
3650
|
+
return;
|
|
3651
|
+
}
|
|
3652
|
+
setOwnedTabs(nextTabs);
|
|
3653
|
+
onTabsChange?.(nextTabs);
|
|
3654
|
+
},
|
|
3655
|
+
[ownedTabs, onTabsChange, isForeignTab]
|
|
3656
|
+
);
|
|
3657
|
+
const closeTab = useCallback6(
|
|
3614
3658
|
async (tabId) => {
|
|
3615
3659
|
const sessionId = sessionIds.get(tabId);
|
|
3616
3660
|
const isForeign = isForeignTab(tabId);
|
|
@@ -3693,10 +3737,10 @@ var TabbedTerminalPanelInner = ({
|
|
|
3693
3737
|
if (!requestCloseTabId) return;
|
|
3694
3738
|
closeTab(requestCloseTabId);
|
|
3695
3739
|
}, [requestCloseTabId]);
|
|
3696
|
-
const handleSessionCreated =
|
|
3740
|
+
const handleSessionCreated = useCallback6((tabId, sessionId) => {
|
|
3697
3741
|
setSessionIds((prev) => new Map(prev).set(tabId, sessionId));
|
|
3698
3742
|
}, []);
|
|
3699
|
-
const handleActivityStateChange =
|
|
3743
|
+
const handleActivityStateChange = useCallback6((sessionId, isActive) => {
|
|
3700
3744
|
setActivityStates((prev) => {
|
|
3701
3745
|
const next = new Map(prev);
|
|
3702
3746
|
if (isActive) {
|
|
@@ -3728,7 +3772,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3728
3772
|
}
|
|
3729
3773
|
}
|
|
3730
3774
|
});
|
|
3731
|
-
const renderTabAccessory =
|
|
3775
|
+
const renderTabAccessory = useCallback6((tab) => {
|
|
3732
3776
|
const tabSessionId = sessionIds.get(tab.id);
|
|
3733
3777
|
const isActive = tab.id === activeTabId;
|
|
3734
3778
|
const record = tabSessionId ? programStatus?.[tabSessionId] : void 0;
|
|
@@ -3770,123 +3814,39 @@ var TabbedTerminalPanelInner = ({
|
|
|
3770
3814
|
}
|
|
3771
3815
|
) });
|
|
3772
3816
|
}, [activeTabId, theme, sessionIds, workingStates, activityStates, programStatus]);
|
|
3773
|
-
const
|
|
3774
|
-
|
|
3775
|
-
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
);
|
|
3795
|
-
const hasAssociation = !!association;
|
|
3796
|
-
const secondaryContent = hasAssociation && renderAssociatedContent ? renderAssociatedContent(association.associatedTabId, isActive) : /* @__PURE__ */ jsx14("div", { style: {
|
|
3797
|
-
height: "100%",
|
|
3798
|
-
display: "flex",
|
|
3799
|
-
alignItems: "center",
|
|
3800
|
-
justifyContent: "center",
|
|
3801
|
-
color: theme.colors.textMuted,
|
|
3802
|
-
fontSize: "13px",
|
|
3803
|
-
backgroundColor: theme.colors.backgroundSecondary
|
|
3804
|
-
}, children: "Drag a tab here to associate it with this terminal" });
|
|
3805
|
-
const headerConfig = hasAssociation && getAssociatedHeader ? getAssociatedHeader(association.associatedTabId) : { title: "Drop zone", icon: /* @__PURE__ */ jsx14(Paperclip, { size: 14 }) };
|
|
3806
|
-
const isCollapsed = hasAssociation ? association.collapsed : true;
|
|
3807
|
-
const handleCollapsedChange = hasAssociation ? (collapsed) => onAssociationCollapsedChange?.(tab.id, collapsed) : void 0;
|
|
3808
|
-
return /* @__PURE__ */ jsx14(
|
|
3809
|
-
CollapsibleSplitPane,
|
|
3810
|
-
{
|
|
3811
|
-
style: { height: "100%" },
|
|
3812
|
-
primaryContent: terminalContent,
|
|
3813
|
-
secondaryContent,
|
|
3814
|
-
collapsedHeader: headerConfig,
|
|
3815
|
-
collapsed: isCollapsed,
|
|
3816
|
-
onCollapsedChange: handleCollapsedChange,
|
|
3817
|
-
ratio: hasAssociation ? association.ratio : 0.15,
|
|
3818
|
-
onRatioChange: hasAssociation ? (ratio) => onAssociationRatioChange?.(tab.id, ratio) : void 0,
|
|
3819
|
-
theme,
|
|
3820
|
-
hideHeader: !hasAssociation
|
|
3821
|
-
}
|
|
3822
|
-
);
|
|
3823
|
-
}, [
|
|
3817
|
+
const renderTerminalContent = useCallback6((tab, isActive, sessionId) => /* @__PURE__ */ jsx14(
|
|
3818
|
+
TerminalTabContent,
|
|
3819
|
+
{
|
|
3820
|
+
ref: getRefCallback(tab.id),
|
|
3821
|
+
tab,
|
|
3822
|
+
sessionId,
|
|
3823
|
+
isActive,
|
|
3824
|
+
isVisible,
|
|
3825
|
+
actions,
|
|
3826
|
+
events,
|
|
3827
|
+
terminalContext,
|
|
3828
|
+
onSessionCreated: handleSessionCreated,
|
|
3829
|
+
renderer,
|
|
3830
|
+
isForeign: tab.id.startsWith("tab-foreign-"),
|
|
3831
|
+
activityDetection,
|
|
3832
|
+
activityTimeout,
|
|
3833
|
+
autoShowBlinds,
|
|
3834
|
+
onActivityStateChange: handleActivityStateChange
|
|
3835
|
+
},
|
|
3836
|
+
`terminal-${tab.id}`
|
|
3837
|
+
), [
|
|
3824
3838
|
getRefCallback,
|
|
3825
3839
|
isVisible,
|
|
3826
3840
|
actions,
|
|
3827
3841
|
events,
|
|
3828
3842
|
terminalContext,
|
|
3829
3843
|
handleSessionCreated,
|
|
3844
|
+
renderer,
|
|
3830
3845
|
activityDetection,
|
|
3831
3846
|
activityTimeout,
|
|
3832
3847
|
autoShowBlinds,
|
|
3833
|
-
handleActivityStateChange
|
|
3834
|
-
renderAssociatedContent,
|
|
3835
|
-
getAssociatedHeader,
|
|
3836
|
-
onAssociationCollapsedChange,
|
|
3837
|
-
onAssociationRatioChange,
|
|
3838
|
-
theme
|
|
3848
|
+
handleActivityStateChange
|
|
3839
3849
|
]);
|
|
3840
|
-
const handleTabDrop = useCallback7(
|
|
3841
|
-
(draggedTabId, targetTabId) => {
|
|
3842
|
-
const draggedTab = tabs.find((t) => t.id === draggedTabId);
|
|
3843
|
-
const targetTab = tabs.find((t) => t.id === targetTabId);
|
|
3844
|
-
if (targetTab?.contentType === "terminal" && draggedTab?.contentType !== "terminal") {
|
|
3845
|
-
onTabAssociate?.(targetTabId, draggedTabId);
|
|
3846
|
-
setActiveTabId(targetTabId);
|
|
3847
|
-
}
|
|
3848
|
-
},
|
|
3849
|
-
[tabs, onTabAssociate, setActiveTabId]
|
|
3850
|
-
);
|
|
3851
|
-
const canDropOnTab = useCallback7(
|
|
3852
|
-
(draggedTabId, targetTabId) => {
|
|
3853
|
-
const draggedTab = tabs.find((t) => t.id === draggedTabId);
|
|
3854
|
-
const targetTab = tabs.find((t) => t.id === targetTabId);
|
|
3855
|
-
return targetTab?.contentType === "terminal" && draggedTab?.contentType !== "terminal";
|
|
3856
|
-
},
|
|
3857
|
-
[tabs]
|
|
3858
|
-
);
|
|
3859
|
-
const [isDragOverContent, setIsDragOverContent] = useState4(false);
|
|
3860
|
-
const handleContentDragEnter = useCallback7((e) => {
|
|
3861
|
-
e.preventDefault();
|
|
3862
|
-
if (activeTabId) {
|
|
3863
|
-
const activeTab = tabs.find((t) => t.id === activeTabId);
|
|
3864
|
-
if (activeTab?.contentType === "terminal") {
|
|
3865
|
-
setIsDragOverContent(true);
|
|
3866
|
-
}
|
|
3867
|
-
}
|
|
3868
|
-
}, [activeTabId, tabs]);
|
|
3869
|
-
const handleContentDragLeave = useCallback7((e) => {
|
|
3870
|
-
const relatedTarget = e.relatedTarget;
|
|
3871
|
-
if (!e.currentTarget.contains(relatedTarget)) {
|
|
3872
|
-
setIsDragOverContent(false);
|
|
3873
|
-
}
|
|
3874
|
-
}, []);
|
|
3875
|
-
const handleContentDrop = useCallback7((e) => {
|
|
3876
|
-
e.preventDefault();
|
|
3877
|
-
e.stopPropagation();
|
|
3878
|
-
setIsDragOverContent(false);
|
|
3879
|
-
const draggedTabId = e.dataTransfer.getData("application/x-tab-association");
|
|
3880
|
-
if (!draggedTabId || !activeTabId) {
|
|
3881
|
-
return;
|
|
3882
|
-
}
|
|
3883
|
-
const draggedTab = tabs.find((t) => t.id === draggedTabId);
|
|
3884
|
-
const activeTab = tabs.find((t) => t.id === activeTabId);
|
|
3885
|
-
if (activeTab?.contentType === "terminal" && draggedTab?.contentType !== "terminal") {
|
|
3886
|
-
onTabAssociate?.(activeTabId, draggedTabId);
|
|
3887
|
-
setActiveTabId(activeTabId);
|
|
3888
|
-
}
|
|
3889
|
-
}, [activeTabId, tabs, onTabAssociate, setActiveTabId]);
|
|
3890
3850
|
return /* @__PURE__ */ jsxs10(
|
|
3891
3851
|
"div",
|
|
3892
3852
|
{
|
|
@@ -3939,9 +3899,9 @@ var TabbedTerminalPanelInner = ({
|
|
|
3939
3899
|
renderTabIcon,
|
|
3940
3900
|
renderTabLabel,
|
|
3941
3901
|
showKeyboardHints: false,
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
|
|
3902
|
+
enableTabReorder,
|
|
3903
|
+
onTabReorder: handleTabReorder,
|
|
3904
|
+
canReorderTab: (tabId) => !isForeignTab(tabId)
|
|
3945
3905
|
}
|
|
3946
3906
|
) }),
|
|
3947
3907
|
/* @__PURE__ */ jsxs10(
|
|
@@ -3954,36 +3914,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3954
3914
|
overflow: "hidden",
|
|
3955
3915
|
width: "100%",
|
|
3956
3916
|
minHeight: 0,
|
|
3957
|
-
position: "relative"
|
|
3958
|
-
// Visual feedback when dragging over
|
|
3959
|
-
outline: isDragOverContent ? `3px dashed ${theme.colors.primary}` : "none",
|
|
3960
|
-
outlineOffset: "-3px"
|
|
3961
|
-
},
|
|
3962
|
-
onDragEnterCapture: (e) => {
|
|
3963
|
-
if (!enableTabAssociationDrag) return;
|
|
3964
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
3965
|
-
e.preventDefault();
|
|
3966
|
-
e.stopPropagation();
|
|
3967
|
-
handleContentDragEnter(e);
|
|
3968
|
-
},
|
|
3969
|
-
onDragOverCapture: (e) => {
|
|
3970
|
-
if (!enableTabAssociationDrag) return;
|
|
3971
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
3972
|
-
e.preventDefault();
|
|
3973
|
-
e.stopPropagation();
|
|
3974
|
-
e.dataTransfer.dropEffect = "move";
|
|
3975
|
-
},
|
|
3976
|
-
onDragLeaveCapture: (e) => {
|
|
3977
|
-
if (!enableTabAssociationDrag) return;
|
|
3978
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
3979
|
-
handleContentDragLeave(e);
|
|
3980
|
-
},
|
|
3981
|
-
onDropCapture: (e) => {
|
|
3982
|
-
if (!enableTabAssociationDrag) return;
|
|
3983
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
3984
|
-
e.preventDefault();
|
|
3985
|
-
e.stopPropagation();
|
|
3986
|
-
handleContentDrop(e);
|
|
3917
|
+
position: "relative"
|
|
3987
3918
|
},
|
|
3988
3919
|
children: [
|
|
3989
3920
|
tabs.map((tab) => {
|
|
@@ -3992,7 +3923,6 @@ var TabbedTerminalPanelInner = ({
|
|
|
3992
3923
|
if (renderTabContent) {
|
|
3993
3924
|
const customContent = renderTabContent(tab, isActive, sessionId, width);
|
|
3994
3925
|
if (customContent === null && tab.contentType === "terminal") {
|
|
3995
|
-
const association = associations?.[tab.id];
|
|
3996
3926
|
return /* @__PURE__ */ jsx14(
|
|
3997
3927
|
"div",
|
|
3998
3928
|
{
|
|
@@ -4015,7 +3945,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
4015
3945
|
flexDirection: "column",
|
|
4016
3946
|
opacity: isActive ? 1 : 0
|
|
4017
3947
|
},
|
|
4018
|
-
children:
|
|
3948
|
+
children: renderTerminalContent(tab, isActive, sessionId)
|
|
4019
3949
|
},
|
|
4020
3950
|
tab.id
|
|
4021
3951
|
);
|
|
@@ -4040,7 +3970,6 @@ var TabbedTerminalPanelInner = ({
|
|
|
4040
3970
|
);
|
|
4041
3971
|
}
|
|
4042
3972
|
if (tab.contentType === "terminal") {
|
|
4043
|
-
const association = associations?.[tab.id];
|
|
4044
3973
|
return /* @__PURE__ */ jsx14(
|
|
4045
3974
|
"div",
|
|
4046
3975
|
{
|
|
@@ -4054,7 +3983,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
4054
3983
|
flexDirection: "column",
|
|
4055
3984
|
opacity: isActive ? 1 : 0
|
|
4056
3985
|
},
|
|
4057
|
-
children:
|
|
3986
|
+
children: renderTerminalContent(tab, isActive, sessionId)
|
|
4058
3987
|
},
|
|
4059
3988
|
tab.id
|
|
4060
3989
|
);
|
|
@@ -4085,46 +4014,52 @@ var TabbedTerminalPanelInner = ({
|
|
|
4085
4014
|
tab.id
|
|
4086
4015
|
);
|
|
4087
4016
|
}),
|
|
4088
|
-
tabs.length === 0 &&
|
|
4089
|
-
|
|
4090
|
-
{
|
|
4091
|
-
|
|
4092
|
-
display: "flex",
|
|
4093
|
-
flexDirection: "column",
|
|
4094
|
-
alignItems: "center",
|
|
4095
|
-
justifyContent: "center",
|
|
4096
|
-
height: "100%",
|
|
4097
|
-
color: theme.colors.textSecondary
|
|
4098
|
-
},
|
|
4099
|
-
children: [
|
|
4100
|
-
/* @__PURE__ */ jsx14(
|
|
4101
|
-
TerminalIcon2,
|
|
4102
|
-
{
|
|
4103
|
-
size: 32,
|
|
4104
|
-
style: { opacity: 0.5, marginBottom: "16px" }
|
|
4105
|
-
}
|
|
4106
|
-
),
|
|
4107
|
-
/* @__PURE__ */ jsx14(
|
|
4108
|
-
"button",
|
|
4109
|
-
{
|
|
4110
|
-
onClick: () => addNewTab(),
|
|
4111
|
-
style: {
|
|
4112
|
-
marginTop: "16px",
|
|
4113
|
-
padding: "8px 16px",
|
|
4114
|
-
backgroundColor: theme.colors.primary,
|
|
4115
|
-
color: theme.colors.background,
|
|
4116
|
-
border: "none",
|
|
4117
|
-
borderRadius: "4px",
|
|
4118
|
-
cursor: "pointer",
|
|
4119
|
-
fontSize: theme.fontSizes[1],
|
|
4120
|
-
fontFamily: theme.fonts.body
|
|
4121
|
-
},
|
|
4122
|
-
children: "New Terminal"
|
|
4123
|
-
}
|
|
4124
|
-
)
|
|
4125
|
-
]
|
|
4017
|
+
tabs.length === 0 && (() => {
|
|
4018
|
+
const customEmptyState = renderEmptyState?.();
|
|
4019
|
+
if (customEmptyState !== void 0 && customEmptyState !== null) {
|
|
4020
|
+
return customEmptyState;
|
|
4126
4021
|
}
|
|
4127
|
-
|
|
4022
|
+
return /* @__PURE__ */ jsxs10(
|
|
4023
|
+
"div",
|
|
4024
|
+
{
|
|
4025
|
+
style: {
|
|
4026
|
+
display: "flex",
|
|
4027
|
+
flexDirection: "column",
|
|
4028
|
+
alignItems: "center",
|
|
4029
|
+
justifyContent: "center",
|
|
4030
|
+
height: "100%",
|
|
4031
|
+
color: theme.colors.textSecondary
|
|
4032
|
+
},
|
|
4033
|
+
children: [
|
|
4034
|
+
/* @__PURE__ */ jsx14(
|
|
4035
|
+
TerminalIcon2,
|
|
4036
|
+
{
|
|
4037
|
+
size: 32,
|
|
4038
|
+
style: { opacity: 0.5, marginBottom: "16px" }
|
|
4039
|
+
}
|
|
4040
|
+
),
|
|
4041
|
+
/* @__PURE__ */ jsx14(
|
|
4042
|
+
"button",
|
|
4043
|
+
{
|
|
4044
|
+
onClick: () => addNewTab(),
|
|
4045
|
+
style: {
|
|
4046
|
+
marginTop: "16px",
|
|
4047
|
+
padding: "8px 16px",
|
|
4048
|
+
backgroundColor: theme.colors.primary,
|
|
4049
|
+
color: theme.colors.background,
|
|
4050
|
+
border: "none",
|
|
4051
|
+
borderRadius: "4px",
|
|
4052
|
+
cursor: "pointer",
|
|
4053
|
+
fontSize: theme.fontSizes[1],
|
|
4054
|
+
fontFamily: theme.fonts.body
|
|
4055
|
+
},
|
|
4056
|
+
children: "New Terminal"
|
|
4057
|
+
}
|
|
4058
|
+
)
|
|
4059
|
+
]
|
|
4060
|
+
}
|
|
4061
|
+
);
|
|
4062
|
+
})()
|
|
4128
4063
|
]
|
|
4129
4064
|
}
|
|
4130
4065
|
),
|
|
@@ -4147,7 +4082,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
4147
4082
|
);
|
|
4148
4083
|
};
|
|
4149
4084
|
TabbedTerminalPanelInner.displayName = "TabbedTerminalPanelInner";
|
|
4150
|
-
var TabbedTerminalPanelMemoized =
|
|
4085
|
+
var TabbedTerminalPanelMemoized = React3.memo(TabbedTerminalPanelInner, (prevProps, nextProps) => {
|
|
4151
4086
|
const changes = [];
|
|
4152
4087
|
if (prevProps.terminalContext !== nextProps.terminalContext) changes.push("terminalContext");
|
|
4153
4088
|
if (prevProps.directory !== nextProps.directory) changes.push("directory");
|
|
@@ -4156,6 +4091,7 @@ var TabbedTerminalPanelMemoized = React4.memo(TabbedTerminalPanelInner, (prevPro
|
|
|
4156
4091
|
if (prevProps.isVisible !== nextProps.isVisible) changes.push("isVisible");
|
|
4157
4092
|
if (prevProps.showAllTerminals !== nextProps.showAllTerminals) changes.push("showAllTerminals");
|
|
4158
4093
|
if (prevProps.hideShowAllTerminalsButton !== nextProps.hideShowAllTerminalsButton) changes.push("hideShowAllTerminalsButton");
|
|
4094
|
+
if (prevProps.enableTabReorder !== nextProps.enableTabReorder) changes.push("enableTabReorder");
|
|
4159
4095
|
if (prevProps.tabLabelPrefix !== nextProps.tabLabelPrefix) changes.push("tabLabelPrefix");
|
|
4160
4096
|
if (prevProps.width !== nextProps.width) changes.push("width");
|
|
4161
4097
|
if (prevProps.actions !== nextProps.actions) changes.push("actions");
|
|
@@ -4163,6 +4099,7 @@ var TabbedTerminalPanelMemoized = React4.memo(TabbedTerminalPanelInner, (prevPro
|
|
|
4163
4099
|
if (prevProps.onShowAllTerminalsChange !== nextProps.onShowAllTerminalsChange) changes.push("onShowAllTerminalsChange");
|
|
4164
4100
|
if (prevProps.initialTabs !== nextProps.initialTabs) changes.push("initialTabs");
|
|
4165
4101
|
if (prevProps.renderTabContent !== nextProps.renderTabContent) changes.push("renderTabContent");
|
|
4102
|
+
if (prevProps.renderEmptyState !== nextProps.renderEmptyState) changes.push("renderEmptyState");
|
|
4166
4103
|
if (prevProps.requestFocusTabId !== nextProps.requestFocusTabId) changes.push("requestFocusTabId");
|
|
4167
4104
|
if (prevProps.requestCloseTabId !== nextProps.requestCloseTabId) changes.push("requestCloseTabId");
|
|
4168
4105
|
if (prevProps.onFocusTabHandled !== nextProps.onFocusTabHandled) changes.push("onFocusTabHandled");
|
|
@@ -4173,9 +4110,6 @@ var TabbedTerminalPanelMemoized = React4.memo(TabbedTerminalPanelInner, (prevPro
|
|
|
4173
4110
|
if (prevProps.activityDetection !== nextProps.activityDetection) changes.push("activityDetection");
|
|
4174
4111
|
if (prevProps.activityTimeout !== nextProps.activityTimeout) changes.push("activityTimeout");
|
|
4175
4112
|
if (prevProps.autoShowBlinds !== nextProps.autoShowBlinds) changes.push("autoShowBlinds");
|
|
4176
|
-
if (prevProps.associations !== nextProps.associations) changes.push("associations");
|
|
4177
|
-
if (prevProps.renderAssociatedContent !== nextProps.renderAssociatedContent) changes.push("renderAssociatedContent");
|
|
4178
|
-
if (prevProps.getAssociatedHeader !== nextProps.getAssociatedHeader) changes.push("getAssociatedHeader");
|
|
4179
4113
|
if (prevProps.bottomBarContent !== nextProps.bottomBarContent) changes.push("bottomBarContent");
|
|
4180
4114
|
const ignoredChanges = [];
|
|
4181
4115
|
if (prevProps.context !== nextProps.context) ignoredChanges.push("context");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/TabBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/TabBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAwBvE,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA0RxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabButton.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/TabButton.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"TabButton.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/TabButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAiBtD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAmL9C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { TabBar } from './TabBar';
|
|
2
2
|
export { TabButton } from './TabButton';
|
|
3
|
-
export type { Tab, TabBarProps, TabButtonProps } from '../../types/tab';
|
|
3
|
+
export type { Tab, TabBarProps, TabButtonProps, TabReorderPosition } from '../../types/tab';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTerminalDropZone.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTerminalDropZone.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"useTerminalDropZone.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTerminalDropZone.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,MAAM,WAAW,uBAAuB;IAMtC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAKtC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAOnB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,OAAO,CAAC;IAEpB,aAAa,EAAE;QACb,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;QACzC,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;QAC1C,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;KAC3C,CAAC;IAEF,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAEzC,aAAa,EAAE,SAAS,CAAC;CAC1B;AAoBD,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,KAAK,EACL,cAAc,GACf,EAAE,uBAAuB,GAAG,sBAAsB,CA8GlD"}
|
|
@@ -85,8 +85,6 @@ export interface TerminalPanelActions extends CorePanelActions {
|
|
|
85
85
|
onTerminalData: (sessionId: string, callback: (data: string) => void) => () => void;
|
|
86
86
|
listTerminalSessions: () => Promise<TerminalSessionInfo[]>;
|
|
87
87
|
getTerminalBuffer?: (sessionId: string) => Promise<string | null>;
|
|
88
|
-
onTabAssociate?: (terminalTabId: string, associatedTabId: string) => void;
|
|
89
|
-
onTabDissociate?: (terminalTabId: string, associatedTabId: string) => void;
|
|
90
88
|
}
|
|
91
89
|
export declare function getTerminalSessions(context: PanelContextValue<TerminalPanelContext>): TerminalSessionInfo[];
|
|
92
90
|
export declare function getTerminalSession(context: PanelContextValue<TerminalPanelContext>, sessionId: string): TerminalSessionInfo | undefined;
|
|
@@ -102,12 +100,6 @@ export declare function getWorkspacePath(context: PanelContextValue): string | n
|
|
|
102
100
|
export declare function getTerminalDirectory(context: PanelContextValue, terminalScope?: TerminalScope): string | null;
|
|
103
101
|
export declare function getTerminalSlice(context: PanelContextValue<TerminalPanelContext>): DataSlice<TerminalSessionInfo[]> | undefined;
|
|
104
102
|
import type { BaseTab } from '../types/tab';
|
|
105
|
-
export interface TabAssociation {
|
|
106
|
-
associatedTabId: string;
|
|
107
|
-
collapsed: boolean;
|
|
108
|
-
ratio: number;
|
|
109
|
-
}
|
|
110
|
-
export type TabAssociations = Record<string, TabAssociation>;
|
|
111
103
|
export interface TerminalWorkingState {
|
|
112
104
|
isWorking: boolean;
|
|
113
105
|
message?: string;
|
|
@@ -134,28 +126,19 @@ export interface TabbedTerminalPanelProps<TTab extends BaseTab = TerminalTab> ex
|
|
|
134
126
|
showAllTerminals?: boolean;
|
|
135
127
|
onShowAllTerminalsChange?: (showAll: boolean) => void;
|
|
136
128
|
hideShowAllTerminalsButton?: boolean;
|
|
129
|
+
enableTabReorder?: boolean;
|
|
137
130
|
tabLabelPrefix?: string;
|
|
138
131
|
renderTabContent?: (tab: TTab, isActive: boolean, sessionId?: string | null, width?: number) => React.ReactNode;
|
|
139
132
|
renderTabIcon?: (tab: TTab) => React.ReactNode;
|
|
140
133
|
requestCloseTabId?: string | null;
|
|
141
134
|
bottomBarContent?: React.ReactNode;
|
|
142
135
|
renderTabLabel?: (tab: TTab) => React.ReactNode;
|
|
136
|
+
renderEmptyState?: () => React.ReactNode;
|
|
143
137
|
width?: number;
|
|
144
138
|
workingStates?: Record<string, TerminalWorkingState>;
|
|
145
139
|
programStatus?: Record<string, ProgramStatusRecord>;
|
|
146
140
|
activityDetection?: boolean;
|
|
147
141
|
activityTimeout?: number;
|
|
148
142
|
autoShowBlinds?: boolean;
|
|
149
|
-
associations?: TabAssociations;
|
|
150
|
-
onAssociationCollapsedChange?: (tabId: string, collapsed: boolean) => void;
|
|
151
|
-
onAssociationRatioChange?: (tabId: string, ratio: number) => void;
|
|
152
|
-
renderAssociatedContent?: (associatedTabId: string, isActive: boolean) => React.ReactNode;
|
|
153
|
-
getAssociatedHeader?: (associatedTabId: string) => {
|
|
154
|
-
icon?: React.ReactNode;
|
|
155
|
-
title: string;
|
|
156
|
-
} | undefined;
|
|
157
|
-
enableTabAssociationDrag?: boolean;
|
|
158
|
-
onTabAssociate?: (terminalTabId: string, associatedTabId: string) => void;
|
|
159
|
-
onTabDissociate?: (terminalTabId: string, associatedTabId: string) => void;
|
|
160
143
|
}
|
|
161
144
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAKN,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAmExB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAypCD,eAAO,MAAM,mBAAmB,EAAkC,CAAC,IAAI,SAAS,OAAO,cAAc,EAAE,OAAO,GAAG,WAAW,EAC1H,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAClC,KAAK,CAAC,YAAY,CAAC"}
|
package/dist/src/types/tab.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface LegacyTab {
|
|
|
16
16
|
closable?: boolean;
|
|
17
17
|
metadata?: Record<string, unknown>;
|
|
18
18
|
}
|
|
19
|
+
export type TabReorderPosition = 'before' | 'after';
|
|
19
20
|
export interface TabBarProps {
|
|
20
21
|
tabs: Tab[];
|
|
21
22
|
activeTabId: string | null;
|
|
@@ -29,9 +30,9 @@ export interface TabBarProps {
|
|
|
29
30
|
renderTabLabel?: (tab: Tab) => ReactNode;
|
|
30
31
|
className?: string;
|
|
31
32
|
showKeyboardHints?: boolean;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
enableTabReorder?: boolean;
|
|
34
|
+
onTabReorder?: (draggedTabId: string, targetTabId: string, position: TabReorderPosition) => void;
|
|
35
|
+
canReorderTab?: (tabId: string) => boolean;
|
|
35
36
|
}
|
|
36
37
|
export interface TabButtonProps {
|
|
37
38
|
tab: Tab;
|
|
@@ -46,13 +47,12 @@ export interface TabButtonProps {
|
|
|
46
47
|
renderIcon?: (tab: Tab) => ReactNode;
|
|
47
48
|
renderLabel?: (tab: Tab) => ReactNode;
|
|
48
49
|
draggable?: boolean;
|
|
49
|
-
onDragStart?: (
|
|
50
|
+
onDragStart?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
50
51
|
onDragEnd?: () => void;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
onDragOver?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
53
|
+
onDragLeave?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
54
|
+
onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
55
|
+
dropPosition?: TabReorderPosition | null;
|
|
54
56
|
isBeingDragged?: boolean;
|
|
55
|
-
onDragEnter?: () => void;
|
|
56
|
-
onDragLeave?: () => void;
|
|
57
57
|
}
|
|
58
58
|
//# sourceMappingURL=tab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/types/tab.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,OAAO;IAEtB,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAKF,MAAM,WAAW,SAAS;IAExB,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,GAAG,EAAE,CAAC;IAGZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,WAAW,CAAC,EAAE,SAAS,CAAC;IAGxB,YAAY,CAAC,EAAE,SAAS,CAAC;IAGzB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAG7C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGxC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/types/tab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabDrag.d.ts","sourceRoot":"","sources":["../../../src/utils/tabDrag.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAG5D,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAE3E"}
|