@industry-theme/xterm-terminal-panel 0.9.7 → 0.10.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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +223 -320
- 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 +1 -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.1",
|
|
163
191
|
description: "Industry-themed xterm.js terminal components with panel framework integration",
|
|
164
192
|
type: "module",
|
|
165
193
|
sideEffects: [
|
|
@@ -2581,11 +2609,10 @@ 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";
|
|
2590
2617
|
var CLOSE_BUTTON_LEFT = 8;
|
|
2591
2618
|
var CLOSE_BUTTON_SIZE = 16;
|
|
@@ -2603,105 +2630,28 @@ var TabButton = ({
|
|
|
2603
2630
|
renderAccessory,
|
|
2604
2631
|
renderIcon,
|
|
2605
2632
|
renderLabel,
|
|
2606
|
-
// Drag and drop props
|
|
2607
2633
|
draggable = false,
|
|
2608
2634
|
onDragStart,
|
|
2609
2635
|
onDragEnd,
|
|
2610
|
-
|
|
2611
|
-
canAcceptDrop = false,
|
|
2612
|
-
isDragOver = false,
|
|
2613
|
-
onDragEnter,
|
|
2636
|
+
onDragOver,
|
|
2614
2637
|
onDragLeave,
|
|
2615
|
-
|
|
2638
|
+
onDrop,
|
|
2639
|
+
dropPosition = null,
|
|
2640
|
+
isBeingDragged = false
|
|
2616
2641
|
}) => {
|
|
2617
2642
|
const { theme } = useTheme6();
|
|
2618
2643
|
const showCloseButton = isHovered || isActive;
|
|
2619
2644
|
const closable = tab.closable !== false;
|
|
2620
|
-
const handleDragStart = useCallback5(
|
|
2621
|
-
(e) => {
|
|
2622
|
-
const target = e.currentTarget;
|
|
2623
|
-
e.dataTransfer.setData("application/x-tab-association", tab.id);
|
|
2624
|
-
e.dataTransfer.effectAllowed = "move";
|
|
2625
|
-
if (target) {
|
|
2626
|
-
const clone = target.cloneNode(true);
|
|
2627
|
-
clone.style.position = "fixed";
|
|
2628
|
-
clone.style.top = "-9999px";
|
|
2629
|
-
clone.style.left = "-9999px";
|
|
2630
|
-
clone.style.width = `${target.offsetWidth}px`;
|
|
2631
|
-
clone.style.height = `${target.offsetHeight}px`;
|
|
2632
|
-
clone.style.opacity = "0.8";
|
|
2633
|
-
clone.style.pointerEvents = "none";
|
|
2634
|
-
clone.style.transform = "none";
|
|
2635
|
-
clone.style.zIndex = "99999";
|
|
2636
|
-
document.body.appendChild(clone);
|
|
2637
|
-
e.dataTransfer.setDragImage(clone, target.offsetWidth / 2, target.offsetHeight / 2);
|
|
2638
|
-
setTimeout(() => {
|
|
2639
|
-
if (clone.parentNode) {
|
|
2640
|
-
clone.parentNode.removeChild(clone);
|
|
2641
|
-
}
|
|
2642
|
-
}, 100);
|
|
2643
|
-
}
|
|
2644
|
-
onDragStart?.(tab.id);
|
|
2645
|
-
},
|
|
2646
|
-
[tab.id, onDragStart]
|
|
2647
|
-
);
|
|
2648
|
-
const handleDragEnd = useCallback5(() => {
|
|
2649
|
-
onDragEnd?.();
|
|
2650
|
-
}, [onDragEnd]);
|
|
2651
|
-
const handleDragOver = useCallback5(
|
|
2652
|
-
(e) => {
|
|
2653
|
-
if (canAcceptDrop) {
|
|
2654
|
-
e.preventDefault();
|
|
2655
|
-
e.dataTransfer.dropEffect = "move";
|
|
2656
|
-
}
|
|
2657
|
-
},
|
|
2658
|
-
[canAcceptDrop]
|
|
2659
|
-
);
|
|
2660
|
-
const handleDrop = useCallback5(
|
|
2661
|
-
(e) => {
|
|
2662
|
-
e.preventDefault();
|
|
2663
|
-
const draggedTabId = e.dataTransfer.getData("application/x-tab-association");
|
|
2664
|
-
if (draggedTabId && draggedTabId !== tab.id) {
|
|
2665
|
-
onDrop?.(draggedTabId);
|
|
2666
|
-
}
|
|
2667
|
-
},
|
|
2668
|
-
[tab.id, onDrop]
|
|
2669
|
-
);
|
|
2670
|
-
const handleDragEnter = useCallback5(
|
|
2671
|
-
(e) => {
|
|
2672
|
-
e.preventDefault();
|
|
2673
|
-
onDragEnter?.();
|
|
2674
|
-
},
|
|
2675
|
-
[onDragEnter]
|
|
2676
|
-
);
|
|
2677
|
-
const handleDragLeave = useCallback5(
|
|
2678
|
-
(e) => {
|
|
2679
|
-
e.preventDefault();
|
|
2680
|
-
onDragLeave?.();
|
|
2681
|
-
},
|
|
2682
|
-
[onDragLeave]
|
|
2683
|
-
);
|
|
2684
|
-
const getDragOverStyles = () => {
|
|
2685
|
-
if (isDragOver && canAcceptDrop) {
|
|
2686
|
-
return {
|
|
2687
|
-
outline: `2px solid ${theme.colors.primary}`,
|
|
2688
|
-
outlineOffset: "-2px",
|
|
2689
|
-
backgroundColor: theme.colors.backgroundTertiary
|
|
2690
|
-
};
|
|
2691
|
-
}
|
|
2692
|
-
return {};
|
|
2693
|
-
};
|
|
2694
2645
|
return /* @__PURE__ */ jsxs7(
|
|
2695
2646
|
"div",
|
|
2696
2647
|
{
|
|
2697
2648
|
"data-tab-id": tab.id,
|
|
2698
2649
|
draggable,
|
|
2699
|
-
onDragStart
|
|
2700
|
-
onDragEnd
|
|
2701
|
-
onDragOver
|
|
2702
|
-
|
|
2703
|
-
|
|
2704
|
-
onDragLeave: handleDragLeave,
|
|
2650
|
+
onDragStart,
|
|
2651
|
+
onDragEnd,
|
|
2652
|
+
onDragOver,
|
|
2653
|
+
onDragLeave,
|
|
2654
|
+
onDrop,
|
|
2705
2655
|
onMouseEnter,
|
|
2706
2656
|
onMouseLeave,
|
|
2707
2657
|
onClick,
|
|
@@ -2715,12 +2665,13 @@ var TabButton = ({
|
|
|
2715
2665
|
// renders underneath it. Reserved whenever the tab is closable (not
|
|
2716
2666
|
// just when the button is shown) so the layout doesn't shift on hover.
|
|
2717
2667
|
paddingLeft: closable ? `${CLOSE_BUTTON_GUTTER}px` : "8px",
|
|
2718
|
-
backgroundColor: isActive ? theme.colors.
|
|
2668
|
+
backgroundColor: isActive ? theme.colors.background : theme.colors.backgroundDark ?? theme.colors.backgroundSecondary,
|
|
2719
2669
|
// The tab bar's bottom border lives on each tab: inactive tabs draw
|
|
2720
2670
|
// it, the active tab leaves a gap so it reads as connected to the
|
|
2721
2671
|
// terminal content below.
|
|
2722
2672
|
borderBottom: isActive ? "1px solid transparent" : `1px solid ${theme.colors.border}`,
|
|
2723
|
-
cursor: draggable ? "grab" : "pointer",
|
|
2673
|
+
cursor: draggable ? isBeingDragged ? "grabbing" : "grab" : "pointer",
|
|
2674
|
+
opacity: isBeingDragged ? 0.55 : 1,
|
|
2724
2675
|
userSelect: "none",
|
|
2725
2676
|
WebkitUserSelect: "none",
|
|
2726
2677
|
fontSize: theme.fontSizes[1],
|
|
@@ -2733,10 +2684,27 @@ var TabButton = ({
|
|
|
2733
2684
|
minWidth: 0,
|
|
2734
2685
|
height: "100%",
|
|
2735
2686
|
position: "relative",
|
|
2736
|
-
boxSizing: "border-box"
|
|
2737
|
-
...getDragOverStyles()
|
|
2687
|
+
boxSizing: "border-box"
|
|
2738
2688
|
},
|
|
2739
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
|
+
),
|
|
2740
2708
|
closable && showCloseButton && /* @__PURE__ */ jsx11(
|
|
2741
2709
|
"button",
|
|
2742
2710
|
{
|
|
@@ -2824,38 +2792,76 @@ var TabBar = ({
|
|
|
2824
2792
|
renderTabLabel,
|
|
2825
2793
|
className,
|
|
2826
2794
|
showKeyboardHints = true,
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
enableDragAndDrop = false
|
|
2795
|
+
enableTabReorder,
|
|
2796
|
+
onTabReorder,
|
|
2797
|
+
canReorderTab
|
|
2831
2798
|
}) => {
|
|
2832
2799
|
const { theme } = useTheme7();
|
|
2833
2800
|
const [hoveredTabId, setHoveredTabId] = useState3(null);
|
|
2834
2801
|
const [draggedTabId, setDraggedTabId] = useState3(null);
|
|
2835
|
-
const [
|
|
2836
|
-
const
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
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(() => {
|
|
2840
2817
|
setDraggedTabId(null);
|
|
2841
|
-
|
|
2818
|
+
setDropTarget(null);
|
|
2842
2819
|
}, []);
|
|
2843
|
-
const
|
|
2844
|
-
(
|
|
2845
|
-
if (
|
|
2846
|
-
|
|
2820
|
+
const handleDragOver = useCallback5(
|
|
2821
|
+
(tabId, e) => {
|
|
2822
|
+
if (!draggedTabId || !isReorderable(draggedTabId) || !isReorderable(tabId)) {
|
|
2823
|
+
return;
|
|
2824
|
+
}
|
|
2825
|
+
e.preventDefault();
|
|
2826
|
+
e.dataTransfer.dropEffect = "move";
|
|
2827
|
+
if (draggedTabId === tabId) {
|
|
2828
|
+
setDropTarget(null);
|
|
2829
|
+
return;
|
|
2847
2830
|
}
|
|
2848
|
-
|
|
2849
|
-
|
|
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
|
+
);
|
|
2850
2836
|
},
|
|
2851
|
-
[
|
|
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]
|
|
2852
2864
|
);
|
|
2853
|
-
const handleDragEnter = useCallback6((tabId) => {
|
|
2854
|
-
setDragOverTabId(tabId);
|
|
2855
|
-
}, []);
|
|
2856
|
-
const handleDragLeave = useCallback6(() => {
|
|
2857
|
-
setDragOverTabId(null);
|
|
2858
|
-
}, []);
|
|
2859
2865
|
return /* @__PURE__ */ jsxs8(
|
|
2860
2866
|
"div",
|
|
2861
2867
|
{
|
|
@@ -2895,11 +2901,18 @@ var TabBar = ({
|
|
|
2895
2901
|
backgroundColor: theme.colors.backgroundSecondary,
|
|
2896
2902
|
boxSizing: "border-box"
|
|
2897
2903
|
},
|
|
2904
|
+
onDragLeave: (e) => {
|
|
2905
|
+
const related = e.relatedTarget;
|
|
2906
|
+
if (!related || !e.currentTarget.contains(related)) {
|
|
2907
|
+
setDropTarget(null);
|
|
2908
|
+
}
|
|
2909
|
+
},
|
|
2898
2910
|
children: tabs.map((tab, index) => {
|
|
2899
|
-
const
|
|
2911
|
+
const reorderable = isReorderable(tab.id);
|
|
2912
|
+
const acceptsDrop = reorderEnabled && draggedTabId !== null && draggedTabId !== tab.id && isReorderable(draggedTabId) && reorderable;
|
|
2900
2913
|
const prevTab = index > 0 ? tabs[index - 1] : void 0;
|
|
2901
2914
|
const showDivider = prevTab !== void 0 && prevTab.id !== activeTabId && tab.id !== activeTabId;
|
|
2902
|
-
return /* @__PURE__ */ jsxs8(
|
|
2915
|
+
return /* @__PURE__ */ jsxs8(React.Fragment, { children: [
|
|
2903
2916
|
showDivider && /* @__PURE__ */ jsx12(
|
|
2904
2917
|
"div",
|
|
2905
2918
|
{
|
|
@@ -2926,15 +2939,14 @@ var TabBar = ({
|
|
|
2926
2939
|
renderAccessory: renderTabAccessory,
|
|
2927
2940
|
renderIcon: renderTabIcon,
|
|
2928
2941
|
renderLabel: renderTabLabel,
|
|
2929
|
-
draggable:
|
|
2930
|
-
onDragStart: handleDragStart,
|
|
2931
|
-
onDragEnd:
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
onDragLeave: handleDragLeave
|
|
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
|
|
2938
2950
|
}
|
|
2939
2951
|
)
|
|
2940
2952
|
] }, tab.id);
|
|
@@ -3047,11 +3059,10 @@ var useTabKeyboardShortcuts = ({
|
|
|
3047
3059
|
|
|
3048
3060
|
// src/panels/TabbedTerminalPanel.tsx
|
|
3049
3061
|
import { useTheme as useTheme9 } from "@principal-ade/industry-theme";
|
|
3050
|
-
import {
|
|
3051
|
-
import
|
|
3052
|
-
import React4, {
|
|
3062
|
+
import { Terminal as TerminalIcon2, Box, Boxes } from "lucide-react";
|
|
3063
|
+
import React3, {
|
|
3053
3064
|
useState as useState4,
|
|
3054
|
-
useCallback as
|
|
3065
|
+
useCallback as useCallback6,
|
|
3055
3066
|
useEffect as useEffect5,
|
|
3056
3067
|
useRef as useRef5
|
|
3057
3068
|
} from "react";
|
|
@@ -3059,7 +3070,7 @@ import React4, {
|
|
|
3059
3070
|
// src/components/TerminalStatusBar.tsx
|
|
3060
3071
|
import { useTheme as useTheme8 } from "@principal-ade/industry-theme";
|
|
3061
3072
|
import { Folder, GitBranch } from "lucide-react";
|
|
3062
|
-
import
|
|
3073
|
+
import React2 from "react";
|
|
3063
3074
|
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3064
3075
|
var AVATAR_SIZE = 14;
|
|
3065
3076
|
var TerminalStatusBar = ({
|
|
@@ -3067,9 +3078,9 @@ var TerminalStatusBar = ({
|
|
|
3067
3078
|
repo
|
|
3068
3079
|
}) => {
|
|
3069
3080
|
const { theme } = useTheme8();
|
|
3070
|
-
const [avatarFailed, setAvatarFailed] =
|
|
3081
|
+
const [avatarFailed, setAvatarFailed] = React2.useState(false);
|
|
3071
3082
|
const owner = repo?.owner;
|
|
3072
|
-
|
|
3083
|
+
React2.useEffect(() => {
|
|
3073
3084
|
setAvatarFailed(false);
|
|
3074
3085
|
}, [owner]);
|
|
3075
3086
|
const containerStyle = {
|
|
@@ -3235,17 +3246,17 @@ function TerminalTabContentInner(props, ref) {
|
|
|
3235
3246
|
} = props;
|
|
3236
3247
|
const [isWorkingFromActivity, setIsWorkingFromActivity] = useState4(false);
|
|
3237
3248
|
const sessionRef = useRef5(null);
|
|
3238
|
-
const handleSessionCreated =
|
|
3249
|
+
const handleSessionCreated = useCallback6(
|
|
3239
3250
|
(sid) => onSessionCreated(tab.id, sid),
|
|
3240
3251
|
[onSessionCreated, tab.id]
|
|
3241
3252
|
);
|
|
3242
|
-
const handleScrollPositionChange =
|
|
3253
|
+
const handleScrollPositionChange = useCallback6(
|
|
3243
3254
|
(position) => {
|
|
3244
3255
|
onScrollPositionChange?.(tab.id, position);
|
|
3245
3256
|
},
|
|
3246
3257
|
[onScrollPositionChange, tab.id]
|
|
3247
3258
|
);
|
|
3248
|
-
const handleActivityChange =
|
|
3259
|
+
const handleActivityChange = useCallback6(
|
|
3249
3260
|
(state) => {
|
|
3250
3261
|
const sid = sessionRef.current?.getSessionId();
|
|
3251
3262
|
if (sid) {
|
|
@@ -3257,7 +3268,7 @@ function TerminalTabContentInner(props, ref) {
|
|
|
3257
3268
|
},
|
|
3258
3269
|
[autoShowBlinds, onActivityStateChange]
|
|
3259
3270
|
);
|
|
3260
|
-
|
|
3271
|
+
React3.useImperativeHandle(
|
|
3261
3272
|
ref,
|
|
3262
3273
|
() => ({
|
|
3263
3274
|
scrollToBottom: () => sessionRef.current?.scrollToBottom()
|
|
@@ -3321,8 +3332,8 @@ var areTerminalTabContentPropsEqual = (prevProps, nextProps) => {
|
|
|
3321
3332
|
}
|
|
3322
3333
|
return changes.length === 0;
|
|
3323
3334
|
};
|
|
3324
|
-
var TerminalTabContentForwarded =
|
|
3325
|
-
var TerminalTabContent =
|
|
3335
|
+
var TerminalTabContentForwarded = React3.forwardRef(TerminalTabContentInner);
|
|
3336
|
+
var TerminalTabContent = React3.memo(TerminalTabContentForwarded, areTerminalTabContentPropsEqual);
|
|
3326
3337
|
TerminalTabContent.displayName = "TerminalTabContent";
|
|
3327
3338
|
var TabbedTerminalPanelInner = ({
|
|
3328
3339
|
context: _context,
|
|
@@ -3338,6 +3349,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3338
3349
|
showAllTerminals = false,
|
|
3339
3350
|
onShowAllTerminalsChange,
|
|
3340
3351
|
hideShowAllTerminalsButton = true,
|
|
3352
|
+
enableTabReorder = true,
|
|
3341
3353
|
tabLabelPrefix,
|
|
3342
3354
|
renderTabContent,
|
|
3343
3355
|
renderTabIcon,
|
|
@@ -3354,28 +3366,16 @@ var TabbedTerminalPanelInner = ({
|
|
|
3354
3366
|
activityDetection = true,
|
|
3355
3367
|
activityTimeout = 500,
|
|
3356
3368
|
autoShowBlinds = false,
|
|
3357
|
-
// Association props
|
|
3358
|
-
associations,
|
|
3359
|
-
onAssociationCollapsedChange,
|
|
3360
|
-
onAssociationRatioChange,
|
|
3361
|
-
renderAssociatedContent,
|
|
3362
|
-
getAssociatedHeader,
|
|
3363
|
-
// Drag and drop association
|
|
3364
|
-
enableTabAssociationDrag = true,
|
|
3365
|
-
onTabAssociate: onTabAssociateProp,
|
|
3366
|
-
onTabDissociate: _onTabDissociate,
|
|
3367
|
-
// TODO: implement dissociate (pop-out) functionality
|
|
3368
3369
|
bottomBarContent,
|
|
3369
3370
|
renderer
|
|
3370
3371
|
}) => {
|
|
3371
3372
|
const { theme } = useTheme9();
|
|
3372
|
-
const onTabAssociate = actions.onTabAssociate ?? onTabAssociateProp;
|
|
3373
3373
|
const [ownedTabs, setOwnedTabs] = useState4(initialTabs);
|
|
3374
3374
|
const [foreignTabs, setForeignTabs] = useState4([]);
|
|
3375
3375
|
const [internalActiveTabId, setInternalActiveTabId] = useState4(null);
|
|
3376
3376
|
const isControlled = activeTabIdProp !== void 0;
|
|
3377
3377
|
const activeTabId = isControlled ? activeTabIdProp : internalActiveTabId;
|
|
3378
|
-
const setActiveTabId =
|
|
3378
|
+
const setActiveTabId = React3.useCallback((tabId) => {
|
|
3379
3379
|
if (isControlled) {
|
|
3380
3380
|
onActiveTabChange?.(tabId);
|
|
3381
3381
|
} else {
|
|
@@ -3384,13 +3384,13 @@ var TabbedTerminalPanelInner = ({
|
|
|
3384
3384
|
}
|
|
3385
3385
|
}, [isControlled, onActiveTabChange]);
|
|
3386
3386
|
const [activatedTabs, setActivatedTabs] = useState4(() => /* @__PURE__ */ new Set());
|
|
3387
|
-
|
|
3387
|
+
React3.useEffect(() => {
|
|
3388
3388
|
if (activeTabId && !activatedTabs.has(activeTabId)) {
|
|
3389
3389
|
setActivatedTabs((prev) => new Set(prev).add(activeTabId));
|
|
3390
3390
|
}
|
|
3391
3391
|
}, [activeTabId, activatedTabs]);
|
|
3392
|
-
const activationOrderRef =
|
|
3393
|
-
|
|
3392
|
+
const activationOrderRef = React3.useRef([]);
|
|
3393
|
+
React3.useEffect(() => {
|
|
3394
3394
|
if (!activeTabId) return;
|
|
3395
3395
|
const order = activationOrderRef.current.filter((id) => id !== activeTabId);
|
|
3396
3396
|
order.push(activeTabId);
|
|
@@ -3398,7 +3398,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3398
3398
|
}, [activeTabId]);
|
|
3399
3399
|
const [sessionIds, setSessionIds] = useState4(/* @__PURE__ */ new Map());
|
|
3400
3400
|
const [activityStates, setActivityStates] = useState4(/* @__PURE__ */ new Map());
|
|
3401
|
-
const customTabsKey =
|
|
3401
|
+
const customTabsKey = React3.useMemo(() => {
|
|
3402
3402
|
const customTabs = initialTabs.filter((tab) => tab.contentType !== "terminal");
|
|
3403
3403
|
return JSON.stringify(customTabs);
|
|
3404
3404
|
}, [initialTabs]);
|
|
@@ -3438,13 +3438,13 @@ var TabbedTerminalPanelInner = ({
|
|
|
3438
3438
|
onFocusTabHandled?.();
|
|
3439
3439
|
}
|
|
3440
3440
|
}, [requestFocusTabId, ownedTabs, foreignTabs, setActiveTabId, onFocusTabHandled, activeTabId]);
|
|
3441
|
-
const getOwnedTabLabel =
|
|
3441
|
+
const getOwnedTabLabel = useCallback6((index, _directory) => {
|
|
3442
3442
|
if (tabLabelPrefix) {
|
|
3443
3443
|
return `${tabLabelPrefix} ${index + 1}`;
|
|
3444
3444
|
}
|
|
3445
3445
|
return `\u2318 ${index + 1}`;
|
|
3446
3446
|
}, [tabLabelPrefix]);
|
|
3447
|
-
const tabs =
|
|
3447
|
+
const tabs = React3.useMemo(() => {
|
|
3448
3448
|
const labeledOwnedTabs = ownedTabs.map((tab, index) => ({
|
|
3449
3449
|
...tab,
|
|
3450
3450
|
// Only overwrite label for terminal tabs, preserve original label for custom tabs
|
|
@@ -3455,7 +3455,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3455
3455
|
);
|
|
3456
3456
|
return [...labeledOwnedTabs, ...sortedForeignTabs];
|
|
3457
3457
|
}, [ownedTabs, foreignTabs, getOwnedTabLabel]);
|
|
3458
|
-
const genericTabs =
|
|
3458
|
+
const genericTabs = React3.useMemo(() => {
|
|
3459
3459
|
return tabs.map((tab) => ({
|
|
3460
3460
|
id: tab.id,
|
|
3461
3461
|
label: tab.label,
|
|
@@ -3470,7 +3470,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3470
3470
|
}, [tabs]);
|
|
3471
3471
|
const tabRefsMap = useRef5(/* @__PURE__ */ new Map());
|
|
3472
3472
|
const refCallbacksMap = useRef5(/* @__PURE__ */ new Map());
|
|
3473
|
-
const getRefCallback =
|
|
3473
|
+
const getRefCallback = useCallback6((tabId) => {
|
|
3474
3474
|
let callback = refCallbacksMap.current.get(tabId);
|
|
3475
3475
|
if (!callback) {
|
|
3476
3476
|
callback = (ref) => {
|
|
@@ -3487,7 +3487,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3487
3487
|
const hasInitializedRef = useRef5(false);
|
|
3488
3488
|
const isCreatingTabRef = useRef5(false);
|
|
3489
3489
|
const headerRef = useRef5(null);
|
|
3490
|
-
const restoreOwnedSessions =
|
|
3490
|
+
const restoreOwnedSessions = useCallback6(async () => {
|
|
3491
3491
|
try {
|
|
3492
3492
|
let sessions = [];
|
|
3493
3493
|
if (actions.listTerminalSessions) {
|
|
@@ -3536,7 +3536,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3536
3536
|
console.error("[TabbedTerminalPanel] Failed to restore owned sessions:", err);
|
|
3537
3537
|
}
|
|
3538
3538
|
}, [terminalContext, sessionIds, activeTabId, onTabsChange, actions, directory, setActiveTabId]);
|
|
3539
|
-
const fetchForeignSessions =
|
|
3539
|
+
const fetchForeignSessions = useCallback6(async () => {
|
|
3540
3540
|
try {
|
|
3541
3541
|
if (!actions.listTerminalSessions) {
|
|
3542
3542
|
return;
|
|
@@ -3570,7 +3570,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3570
3570
|
console.error("[TabbedTerminalPanel] Failed to fetch foreign sessions:", err);
|
|
3571
3571
|
}
|
|
3572
3572
|
}, [terminalContext, actions]);
|
|
3573
|
-
const clearForeignTabs =
|
|
3573
|
+
const clearForeignTabs = useCallback6(() => {
|
|
3574
3574
|
setForeignTabs((prevForeign) => {
|
|
3575
3575
|
const foreignTabIds = new Set(prevForeign.map((t) => t.id));
|
|
3576
3576
|
setSessionIds((prev) => {
|
|
@@ -3607,10 +3607,10 @@ var TabbedTerminalPanelInner = ({
|
|
|
3607
3607
|
clearForeignTabs();
|
|
3608
3608
|
}
|
|
3609
3609
|
}, [showAllTerminals, fetchForeignSessions, clearForeignTabs]);
|
|
3610
|
-
const switchTab =
|
|
3610
|
+
const switchTab = useCallback6((tabId) => {
|
|
3611
3611
|
setActiveTabId(tabId);
|
|
3612
3612
|
}, [setActiveTabId]);
|
|
3613
|
-
const addNewTab =
|
|
3613
|
+
const addNewTab = useCallback6(
|
|
3614
3614
|
(label, command, targetDirectory) => {
|
|
3615
3615
|
const targetDir = targetDirectory || directory;
|
|
3616
3616
|
const directoryName = targetDir.split("/").pop() || targetDir;
|
|
@@ -3631,10 +3631,30 @@ var TabbedTerminalPanelInner = ({
|
|
|
3631
3631
|
},
|
|
3632
3632
|
[directory, onTabsChange]
|
|
3633
3633
|
);
|
|
3634
|
-
const isForeignTab =
|
|
3634
|
+
const isForeignTab = useCallback6((tabId) => {
|
|
3635
3635
|
return tabId.startsWith("tab-foreign-");
|
|
3636
3636
|
}, []);
|
|
3637
|
-
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(
|
|
3638
3658
|
async (tabId) => {
|
|
3639
3659
|
const sessionId = sessionIds.get(tabId);
|
|
3640
3660
|
const isForeign = isForeignTab(tabId);
|
|
@@ -3717,10 +3737,10 @@ var TabbedTerminalPanelInner = ({
|
|
|
3717
3737
|
if (!requestCloseTabId) return;
|
|
3718
3738
|
closeTab(requestCloseTabId);
|
|
3719
3739
|
}, [requestCloseTabId]);
|
|
3720
|
-
const handleSessionCreated =
|
|
3740
|
+
const handleSessionCreated = useCallback6((tabId, sessionId) => {
|
|
3721
3741
|
setSessionIds((prev) => new Map(prev).set(tabId, sessionId));
|
|
3722
3742
|
}, []);
|
|
3723
|
-
const handleActivityStateChange =
|
|
3743
|
+
const handleActivityStateChange = useCallback6((sessionId, isActive) => {
|
|
3724
3744
|
setActivityStates((prev) => {
|
|
3725
3745
|
const next = new Map(prev);
|
|
3726
3746
|
if (isActive) {
|
|
@@ -3752,7 +3772,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3752
3772
|
}
|
|
3753
3773
|
}
|
|
3754
3774
|
});
|
|
3755
|
-
const renderTabAccessory =
|
|
3775
|
+
const renderTabAccessory = useCallback6((tab) => {
|
|
3756
3776
|
const tabSessionId = sessionIds.get(tab.id);
|
|
3757
3777
|
const isActive = tab.id === activeTabId;
|
|
3758
3778
|
const record = tabSessionId ? programStatus?.[tabSessionId] : void 0;
|
|
@@ -3794,123 +3814,39 @@ var TabbedTerminalPanelInner = ({
|
|
|
3794
3814
|
}
|
|
3795
3815
|
) });
|
|
3796
3816
|
}, [activeTabId, theme, sessionIds, workingStates, activityStates, programStatus]);
|
|
3797
|
-
const
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
);
|
|
3819
|
-
const hasAssociation = !!association;
|
|
3820
|
-
const secondaryContent = hasAssociation && renderAssociatedContent ? renderAssociatedContent(association.associatedTabId, isActive) : /* @__PURE__ */ jsx14("div", { style: {
|
|
3821
|
-
height: "100%",
|
|
3822
|
-
display: "flex",
|
|
3823
|
-
alignItems: "center",
|
|
3824
|
-
justifyContent: "center",
|
|
3825
|
-
color: theme.colors.textMuted,
|
|
3826
|
-
fontSize: "13px",
|
|
3827
|
-
backgroundColor: theme.colors.backgroundSecondary
|
|
3828
|
-
}, children: "Drag a tab here to associate it with this terminal" });
|
|
3829
|
-
const headerConfig = hasAssociation && getAssociatedHeader ? getAssociatedHeader(association.associatedTabId) : { title: "Drop zone", icon: /* @__PURE__ */ jsx14(Paperclip, { size: 14 }) };
|
|
3830
|
-
const isCollapsed = hasAssociation ? association.collapsed : true;
|
|
3831
|
-
const handleCollapsedChange = hasAssociation ? (collapsed) => onAssociationCollapsedChange?.(tab.id, collapsed) : void 0;
|
|
3832
|
-
return /* @__PURE__ */ jsx14(
|
|
3833
|
-
CollapsibleSplitPane,
|
|
3834
|
-
{
|
|
3835
|
-
style: { height: "100%" },
|
|
3836
|
-
primaryContent: terminalContent,
|
|
3837
|
-
secondaryContent,
|
|
3838
|
-
collapsedHeader: headerConfig,
|
|
3839
|
-
collapsed: isCollapsed,
|
|
3840
|
-
onCollapsedChange: handleCollapsedChange,
|
|
3841
|
-
ratio: hasAssociation ? association.ratio : 0.15,
|
|
3842
|
-
onRatioChange: hasAssociation ? (ratio) => onAssociationRatioChange?.(tab.id, ratio) : void 0,
|
|
3843
|
-
theme,
|
|
3844
|
-
hideHeader: !hasAssociation
|
|
3845
|
-
}
|
|
3846
|
-
);
|
|
3847
|
-
}, [
|
|
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
|
+
), [
|
|
3848
3838
|
getRefCallback,
|
|
3849
3839
|
isVisible,
|
|
3850
3840
|
actions,
|
|
3851
3841
|
events,
|
|
3852
3842
|
terminalContext,
|
|
3853
3843
|
handleSessionCreated,
|
|
3844
|
+
renderer,
|
|
3854
3845
|
activityDetection,
|
|
3855
3846
|
activityTimeout,
|
|
3856
3847
|
autoShowBlinds,
|
|
3857
|
-
handleActivityStateChange
|
|
3858
|
-
renderAssociatedContent,
|
|
3859
|
-
getAssociatedHeader,
|
|
3860
|
-
onAssociationCollapsedChange,
|
|
3861
|
-
onAssociationRatioChange,
|
|
3862
|
-
theme
|
|
3848
|
+
handleActivityStateChange
|
|
3863
3849
|
]);
|
|
3864
|
-
const handleTabDrop = useCallback7(
|
|
3865
|
-
(draggedTabId, targetTabId) => {
|
|
3866
|
-
const draggedTab = tabs.find((t) => t.id === draggedTabId);
|
|
3867
|
-
const targetTab = tabs.find((t) => t.id === targetTabId);
|
|
3868
|
-
if (targetTab?.contentType === "terminal" && draggedTab?.contentType !== "terminal") {
|
|
3869
|
-
onTabAssociate?.(targetTabId, draggedTabId);
|
|
3870
|
-
setActiveTabId(targetTabId);
|
|
3871
|
-
}
|
|
3872
|
-
},
|
|
3873
|
-
[tabs, onTabAssociate, setActiveTabId]
|
|
3874
|
-
);
|
|
3875
|
-
const canDropOnTab = useCallback7(
|
|
3876
|
-
(draggedTabId, targetTabId) => {
|
|
3877
|
-
const draggedTab = tabs.find((t) => t.id === draggedTabId);
|
|
3878
|
-
const targetTab = tabs.find((t) => t.id === targetTabId);
|
|
3879
|
-
return targetTab?.contentType === "terminal" && draggedTab?.contentType !== "terminal";
|
|
3880
|
-
},
|
|
3881
|
-
[tabs]
|
|
3882
|
-
);
|
|
3883
|
-
const [isDragOverContent, setIsDragOverContent] = useState4(false);
|
|
3884
|
-
const handleContentDragEnter = useCallback7((e) => {
|
|
3885
|
-
e.preventDefault();
|
|
3886
|
-
if (activeTabId) {
|
|
3887
|
-
const activeTab = tabs.find((t) => t.id === activeTabId);
|
|
3888
|
-
if (activeTab?.contentType === "terminal") {
|
|
3889
|
-
setIsDragOverContent(true);
|
|
3890
|
-
}
|
|
3891
|
-
}
|
|
3892
|
-
}, [activeTabId, tabs]);
|
|
3893
|
-
const handleContentDragLeave = useCallback7((e) => {
|
|
3894
|
-
const relatedTarget = e.relatedTarget;
|
|
3895
|
-
if (!e.currentTarget.contains(relatedTarget)) {
|
|
3896
|
-
setIsDragOverContent(false);
|
|
3897
|
-
}
|
|
3898
|
-
}, []);
|
|
3899
|
-
const handleContentDrop = useCallback7((e) => {
|
|
3900
|
-
e.preventDefault();
|
|
3901
|
-
e.stopPropagation();
|
|
3902
|
-
setIsDragOverContent(false);
|
|
3903
|
-
const draggedTabId = e.dataTransfer.getData("application/x-tab-association");
|
|
3904
|
-
if (!draggedTabId || !activeTabId) {
|
|
3905
|
-
return;
|
|
3906
|
-
}
|
|
3907
|
-
const draggedTab = tabs.find((t) => t.id === draggedTabId);
|
|
3908
|
-
const activeTab = tabs.find((t) => t.id === activeTabId);
|
|
3909
|
-
if (activeTab?.contentType === "terminal" && draggedTab?.contentType !== "terminal") {
|
|
3910
|
-
onTabAssociate?.(activeTabId, draggedTabId);
|
|
3911
|
-
setActiveTabId(activeTabId);
|
|
3912
|
-
}
|
|
3913
|
-
}, [activeTabId, tabs, onTabAssociate, setActiveTabId]);
|
|
3914
3850
|
return /* @__PURE__ */ jsxs10(
|
|
3915
3851
|
"div",
|
|
3916
3852
|
{
|
|
@@ -3963,9 +3899,9 @@ var TabbedTerminalPanelInner = ({
|
|
|
3963
3899
|
renderTabIcon,
|
|
3964
3900
|
renderTabLabel,
|
|
3965
3901
|
showKeyboardHints: false,
|
|
3966
|
-
|
|
3967
|
-
|
|
3968
|
-
|
|
3902
|
+
enableTabReorder,
|
|
3903
|
+
onTabReorder: handleTabReorder,
|
|
3904
|
+
canReorderTab: (tabId) => !isForeignTab(tabId)
|
|
3969
3905
|
}
|
|
3970
3906
|
) }),
|
|
3971
3907
|
/* @__PURE__ */ jsxs10(
|
|
@@ -3978,36 +3914,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
3978
3914
|
overflow: "hidden",
|
|
3979
3915
|
width: "100%",
|
|
3980
3916
|
minHeight: 0,
|
|
3981
|
-
position: "relative"
|
|
3982
|
-
// Visual feedback when dragging over
|
|
3983
|
-
outline: isDragOverContent ? `3px dashed ${theme.colors.primary}` : "none",
|
|
3984
|
-
outlineOffset: "-3px"
|
|
3985
|
-
},
|
|
3986
|
-
onDragEnterCapture: (e) => {
|
|
3987
|
-
if (!enableTabAssociationDrag) return;
|
|
3988
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
3989
|
-
e.preventDefault();
|
|
3990
|
-
e.stopPropagation();
|
|
3991
|
-
handleContentDragEnter(e);
|
|
3992
|
-
},
|
|
3993
|
-
onDragOverCapture: (e) => {
|
|
3994
|
-
if (!enableTabAssociationDrag) return;
|
|
3995
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
3996
|
-
e.preventDefault();
|
|
3997
|
-
e.stopPropagation();
|
|
3998
|
-
e.dataTransfer.dropEffect = "move";
|
|
3999
|
-
},
|
|
4000
|
-
onDragLeaveCapture: (e) => {
|
|
4001
|
-
if (!enableTabAssociationDrag) return;
|
|
4002
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
4003
|
-
handleContentDragLeave(e);
|
|
4004
|
-
},
|
|
4005
|
-
onDropCapture: (e) => {
|
|
4006
|
-
if (!enableTabAssociationDrag) return;
|
|
4007
|
-
if (!e.dataTransfer.types.includes("application/x-tab-association")) return;
|
|
4008
|
-
e.preventDefault();
|
|
4009
|
-
e.stopPropagation();
|
|
4010
|
-
handleContentDrop(e);
|
|
3917
|
+
position: "relative"
|
|
4011
3918
|
},
|
|
4012
3919
|
children: [
|
|
4013
3920
|
tabs.map((tab) => {
|
|
@@ -4016,7 +3923,6 @@ var TabbedTerminalPanelInner = ({
|
|
|
4016
3923
|
if (renderTabContent) {
|
|
4017
3924
|
const customContent = renderTabContent(tab, isActive, sessionId, width);
|
|
4018
3925
|
if (customContent === null && tab.contentType === "terminal") {
|
|
4019
|
-
const association = associations?.[tab.id];
|
|
4020
3926
|
return /* @__PURE__ */ jsx14(
|
|
4021
3927
|
"div",
|
|
4022
3928
|
{
|
|
@@ -4039,7 +3945,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
4039
3945
|
flexDirection: "column",
|
|
4040
3946
|
opacity: isActive ? 1 : 0
|
|
4041
3947
|
},
|
|
4042
|
-
children:
|
|
3948
|
+
children: renderTerminalContent(tab, isActive, sessionId)
|
|
4043
3949
|
},
|
|
4044
3950
|
tab.id
|
|
4045
3951
|
);
|
|
@@ -4064,7 +3970,6 @@ var TabbedTerminalPanelInner = ({
|
|
|
4064
3970
|
);
|
|
4065
3971
|
}
|
|
4066
3972
|
if (tab.contentType === "terminal") {
|
|
4067
|
-
const association = associations?.[tab.id];
|
|
4068
3973
|
return /* @__PURE__ */ jsx14(
|
|
4069
3974
|
"div",
|
|
4070
3975
|
{
|
|
@@ -4078,7 +3983,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
4078
3983
|
flexDirection: "column",
|
|
4079
3984
|
opacity: isActive ? 1 : 0
|
|
4080
3985
|
},
|
|
4081
|
-
children:
|
|
3986
|
+
children: renderTerminalContent(tab, isActive, sessionId)
|
|
4082
3987
|
},
|
|
4083
3988
|
tab.id
|
|
4084
3989
|
);
|
|
@@ -4177,7 +4082,7 @@ var TabbedTerminalPanelInner = ({
|
|
|
4177
4082
|
);
|
|
4178
4083
|
};
|
|
4179
4084
|
TabbedTerminalPanelInner.displayName = "TabbedTerminalPanelInner";
|
|
4180
|
-
var TabbedTerminalPanelMemoized =
|
|
4085
|
+
var TabbedTerminalPanelMemoized = React3.memo(TabbedTerminalPanelInner, (prevProps, nextProps) => {
|
|
4181
4086
|
const changes = [];
|
|
4182
4087
|
if (prevProps.terminalContext !== nextProps.terminalContext) changes.push("terminalContext");
|
|
4183
4088
|
if (prevProps.directory !== nextProps.directory) changes.push("directory");
|
|
@@ -4186,6 +4091,7 @@ var TabbedTerminalPanelMemoized = React4.memo(TabbedTerminalPanelInner, (prevPro
|
|
|
4186
4091
|
if (prevProps.isVisible !== nextProps.isVisible) changes.push("isVisible");
|
|
4187
4092
|
if (prevProps.showAllTerminals !== nextProps.showAllTerminals) changes.push("showAllTerminals");
|
|
4188
4093
|
if (prevProps.hideShowAllTerminalsButton !== nextProps.hideShowAllTerminalsButton) changes.push("hideShowAllTerminalsButton");
|
|
4094
|
+
if (prevProps.enableTabReorder !== nextProps.enableTabReorder) changes.push("enableTabReorder");
|
|
4189
4095
|
if (prevProps.tabLabelPrefix !== nextProps.tabLabelPrefix) changes.push("tabLabelPrefix");
|
|
4190
4096
|
if (prevProps.width !== nextProps.width) changes.push("width");
|
|
4191
4097
|
if (prevProps.actions !== nextProps.actions) changes.push("actions");
|
|
@@ -4204,9 +4110,6 @@ var TabbedTerminalPanelMemoized = React4.memo(TabbedTerminalPanelInner, (prevPro
|
|
|
4204
4110
|
if (prevProps.activityDetection !== nextProps.activityDetection) changes.push("activityDetection");
|
|
4205
4111
|
if (prevProps.activityTimeout !== nextProps.activityTimeout) changes.push("activityTimeout");
|
|
4206
4112
|
if (prevProps.autoShowBlinds !== nextProps.autoShowBlinds) changes.push("autoShowBlinds");
|
|
4207
|
-
if (prevProps.associations !== nextProps.associations) changes.push("associations");
|
|
4208
|
-
if (prevProps.renderAssociatedContent !== nextProps.renderAssociatedContent) changes.push("renderAssociatedContent");
|
|
4209
|
-
if (prevProps.getAssociatedHeader !== nextProps.getAssociatedHeader) changes.push("getAssociatedHeader");
|
|
4210
4113
|
if (prevProps.bottomBarContent !== nextProps.bottomBarContent) changes.push("bottomBarContent");
|
|
4211
4114
|
const ignoredChanges = [];
|
|
4212
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,6 +126,7 @@ 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;
|
|
@@ -147,16 +140,5 @@ export interface TabbedTerminalPanelProps<TTab extends BaseTab = TerminalTab> ex
|
|
|
147
140
|
activityDetection?: boolean;
|
|
148
141
|
activityTimeout?: number;
|
|
149
142
|
autoShowBlinds?: boolean;
|
|
150
|
-
associations?: TabAssociations;
|
|
151
|
-
onAssociationCollapsedChange?: (tabId: string, collapsed: boolean) => void;
|
|
152
|
-
onAssociationRatioChange?: (tabId: string, ratio: number) => void;
|
|
153
|
-
renderAssociatedContent?: (associatedTabId: string, isActive: boolean) => React.ReactNode;
|
|
154
|
-
getAssociatedHeader?: (associatedTabId: string) => {
|
|
155
|
-
icon?: React.ReactNode;
|
|
156
|
-
title: string;
|
|
157
|
-
} | undefined;
|
|
158
|
-
enableTabAssociationDrag?: boolean;
|
|
159
|
-
onTabAssociate?: (terminalTabId: string, associatedTabId: string) => void;
|
|
160
|
-
onTabDissociate?: (terminalTabId: string, associatedTabId: string) => void;
|
|
161
143
|
}
|
|
162
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":"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,mBAAmB,IAAI,uBAAuB,EAC9C,iBAAiB,EACjB,SAAS,EACV,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,CAAC;AAKF,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,GACnB,2BAA2B,CAAC;AAKhC,MAAM,WAAW,sBAAsB;IAErC,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,OAAO,CAAC;IAElB,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAKD,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAKnD,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,SAAS,CAAC;AAOzD,MAAM,WAAW,4BAA4B;IAE3C,SAAS,EAAE,MAAM,CAAC;IAElB,YAAY,EAAE,oBAAoB,CAAC;IAEnC,SAAS,EAAE,OAAO,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,4BAA4B;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAKD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAKD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;CAC5C;AAOD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE5D,qBAAqB,EAAE,CACrB,OAAO,CAAC,EAAE,4BAA4B,KACnC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7D,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAUzF,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAGvB,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAU3C,mBAAmB,EAAE,CACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,KACvD,MAAM,IAAI,CAAC;IAGhB,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACxE,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACzF,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAO1E,eAAe,EAAE,CACf,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,KACtE,MAAM,IAAI,CAAC;IAGhB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAOzD,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAS/F,cAAc,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAC7B,MAAM,IAAI,CAAC;IAGhB,oBAAoB,EAAE,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAO3D,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACnE;AAOD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,GAC/C,mBAAmB,EAAE,CAEvB;AAKD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,EAChD,SAAS,EAAE,MAAM,GAChB,mBAAmB,GAAG,SAAS,CAGjC;AAMD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAE3F;AAOD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,WAAW,CAAC;AAMvD,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAO7G,aAAa,CAAC,EAAE,aAAa,CAAC;IAS9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAS5B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAE3E;AAKD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAE1E;AAKD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAC1B,aAAa,GAAE,aAA4B,GAC1C,MAAM,GAAG,IAAI,CASf;AAMD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,GAC/C,SAAS,CAAC,mBAAmB,EAAE,CAAC,GAAG,SAAS,CAE9C;AAED,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAM5C,MAAM,WAAW,oBAAoB;IAEnC,SAAS,EAAE,OAAO,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAGlB;AA0BD,MAAM,WAAW,wBAAwB,CAAC,IAAI,SAAS,OAAO,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC;IAM7H,eAAe,EAAE,MAAM,CAAC;IAKxB,SAAS,EAAE,MAAM,CAAC;IAOlB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAW1B,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,GAAG,SAAS,CAAC;IAMlE,UAAU,CAAC,EAAE,OAAO,CAAC;IAMrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAKtC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAQrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAO5B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAuBnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAOlC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAM/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAK3B,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAOtD,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAQrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAS3B,cAAc,CAAC,EAAE,MAAM,CAAC;IAwBxB,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAkBhH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAO/C,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAMlC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAiBnC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAiBhD,gBAAgB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAMzC,KAAK,CAAC,EAAE,MAAM,CAAC;IAgBf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAwBrD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAUpD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAO5B,eAAe,CAAC,EAAE,MAAM,CAAC;IAOzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
|
|
@@ -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"}
|