@industry-theme/xterm-terminal-panel 0.10.1 → 0.10.3

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.js CHANGED
@@ -187,7 +187,7 @@ import {
187
187
  // package.json
188
188
  var package_default = {
189
189
  name: "@industry-theme/xterm-terminal-panel",
190
- version: "0.10.1",
190
+ version: "0.10.3",
191
191
  description: "Industry-themed xterm.js terminal components with panel framework integration",
192
192
  type: "module",
193
193
  sideEffects: [
@@ -2609,7 +2609,7 @@ function useThemedTerminal() {
2609
2609
  // src/components/TabBar/TabBar.tsx
2610
2610
  import { useTheme as useTheme7 } from "@principal-ade/industry-theme";
2611
2611
  import { Plus } from "lucide-react";
2612
- import React, { useCallback as useCallback5, useState as useState3 } from "react";
2612
+ import React, { useCallback as useCallback5, useEffect as useEffect4, useState as useState3 } from "react";
2613
2613
 
2614
2614
  // src/components/TabBar/TabButton.tsx
2615
2615
  import { useTheme as useTheme6 } from "@principal-ade/industry-theme";
@@ -2627,6 +2627,7 @@ var TabButton = ({
2627
2627
  onClick,
2628
2628
  onClose,
2629
2629
  keyboardHint,
2630
+ keyboardHintVisible = true,
2630
2631
  renderAccessory,
2631
2632
  renderIcon,
2632
2633
  renderLabel,
@@ -2666,10 +2667,7 @@ var TabButton = ({
2666
2667
  // just when the button is shown) so the layout doesn't shift on hover.
2667
2668
  paddingLeft: closable ? `${CLOSE_BUTTON_GUTTER}px` : "8px",
2668
2669
  backgroundColor: isActive ? theme.colors.background : theme.colors.backgroundDark ?? theme.colors.backgroundSecondary,
2669
- // The tab bar's bottom border lives on each tab: inactive tabs draw
2670
- // it, the active tab leaves a gap so it reads as connected to the
2671
- // terminal content below.
2672
- borderBottom: isActive ? "1px solid transparent" : `1px solid ${theme.colors.border}`,
2670
+ borderBottom: `1px solid ${theme.colors.border}`,
2673
2671
  cursor: draggable ? isBeingDragged ? "grabbing" : "grab" : "pointer",
2674
2672
  opacity: isBeingDragged ? 0.55 : 1,
2675
2673
  userSelect: "none",
@@ -2766,7 +2764,8 @@ var TabButton = ({
2766
2764
  fontSize: theme.fontSizes[0],
2767
2765
  color: theme.colors.textSecondary,
2768
2766
  opacity: 0.6,
2769
- flexShrink: 0
2767
+ flexShrink: 0,
2768
+ visibility: keyboardHintVisible ? "visible" : "hidden"
2770
2769
  },
2771
2770
  children: keyboardHint
2772
2771
  }
@@ -2800,6 +2799,23 @@ var TabBar = ({
2800
2799
  const [hoveredTabId, setHoveredTabId] = useState3(null);
2801
2800
  const [draggedTabId, setDraggedTabId] = useState3(null);
2802
2801
  const [dropTarget, setDropTarget] = useState3(null);
2802
+ const [isCommandPressed, setIsCommandPressed] = useState3(false);
2803
+ useEffect4(() => {
2804
+ const handleKeyChange = (event) => {
2805
+ setIsCommandPressed(event.metaKey);
2806
+ };
2807
+ const resetCommandPressed = () => setIsCommandPressed(false);
2808
+ window.addEventListener("keydown", handleKeyChange, true);
2809
+ window.addEventListener("keyup", handleKeyChange, true);
2810
+ window.addEventListener("blur", resetCommandPressed);
2811
+ document.addEventListener("visibilitychange", resetCommandPressed);
2812
+ return () => {
2813
+ window.removeEventListener("keydown", handleKeyChange, true);
2814
+ window.removeEventListener("keyup", handleKeyChange, true);
2815
+ window.removeEventListener("blur", resetCommandPressed);
2816
+ document.removeEventListener("visibilitychange", resetCommandPressed);
2817
+ };
2818
+ }, []);
2803
2819
  const reorderEnabled = onTabReorder !== void 0 && (enableTabReorder ?? true);
2804
2820
  const isReorderable = useCallback5(
2805
2821
  (tabId) => reorderEnabled && (canReorderTab ? canReorderTab(tabId) : true),
@@ -2899,6 +2915,7 @@ var TabBar = ({
2899
2915
  flex: 1,
2900
2916
  overflow: "hidden",
2901
2917
  backgroundColor: theme.colors.backgroundSecondary,
2918
+ borderBottom: tabs.length === 0 ? `1px solid ${theme.colors.border}` : void 0,
2902
2919
  boxSizing: "border-box"
2903
2920
  },
2904
2921
  onDragLeave: (e) => {
@@ -2936,6 +2953,7 @@ var TabBar = ({
2936
2953
  onClick: () => onTabClick(tab.id),
2937
2954
  onClose: () => onTabClose(tab.id),
2938
2955
  keyboardHint: showKeyboardHints && index < 9 ? `\u2318 ${index + 1}` : void 0,
2956
+ keyboardHintVisible: isCommandPressed,
2939
2957
  renderAccessory: renderTabAccessory,
2940
2958
  renderIcon: renderTabIcon,
2941
2959
  renderLabel: renderTabLabel,
@@ -3021,14 +3039,14 @@ function isTabOfType(tab, contentType) {
3021
3039
  }
3022
3040
 
3023
3041
  // src/hooks/useTabKeyboardShortcuts.ts
3024
- import { useEffect as useEffect4 } from "react";
3042
+ import { useEffect as useEffect5 } from "react";
3025
3043
  var useTabKeyboardShortcuts = ({
3026
3044
  onNewTab,
3027
3045
  onCloseTab,
3028
3046
  onSwitchToTab,
3029
3047
  enabled = true
3030
3048
  }) => {
3031
- useEffect4(() => {
3049
+ useEffect5(() => {
3032
3050
  if (!enabled) return;
3033
3051
  const handleKeyDown = (e) => {
3034
3052
  const isCmdOrCtrl = e.metaKey || e.ctrlKey;
@@ -3063,7 +3081,7 @@ import { Terminal as TerminalIcon2, Box, Boxes } from "lucide-react";
3063
3081
  import React3, {
3064
3082
  useState as useState4,
3065
3083
  useCallback as useCallback6,
3066
- useEffect as useEffect5,
3084
+ useEffect as useEffect6,
3067
3085
  useRef as useRef5
3068
3086
  } from "react";
3069
3087
 
@@ -3402,7 +3420,7 @@ var TabbedTerminalPanelInner = ({
3402
3420
  const customTabs = initialTabs.filter((tab) => tab.contentType !== "terminal");
3403
3421
  return JSON.stringify(customTabs);
3404
3422
  }, [initialTabs]);
3405
- useEffect5(() => {
3423
+ useEffect6(() => {
3406
3424
  const customTabsFromProp = initialTabs.filter((tab) => tab.contentType !== "terminal");
3407
3425
  setOwnedTabs((prevTabs) => {
3408
3426
  const prevCustomTabs = prevTabs.filter((tab) => tab.contentType !== "terminal");
@@ -3423,7 +3441,7 @@ var TabbedTerminalPanelInner = ({
3423
3441
  return [...kept, ...added];
3424
3442
  });
3425
3443
  }, [customTabsKey]);
3426
- useEffect5(() => {
3444
+ useEffect6(() => {
3427
3445
  if (!requestFocusTabId) {
3428
3446
  return;
3429
3447
  }
@@ -3581,12 +3599,12 @@ var TabbedTerminalPanelInner = ({
3581
3599
  return [];
3582
3600
  });
3583
3601
  }, []);
3584
- useEffect5(() => {
3602
+ useEffect6(() => {
3585
3603
  if (hasInitializedRef.current) return;
3586
3604
  hasInitializedRef.current = true;
3587
3605
  restoreOwnedSessions();
3588
3606
  }, []);
3589
- useEffect5(() => {
3607
+ useEffect6(() => {
3590
3608
  const handleSessionCreated2 = (event) => {
3591
3609
  const customEvent = event;
3592
3610
  const { context: context2 } = customEvent.detail || {};
@@ -3600,7 +3618,7 @@ var TabbedTerminalPanelInner = ({
3600
3618
  window.removeEventListener("terminal-session-created", handleSessionCreated2);
3601
3619
  };
3602
3620
  }, [terminalContext, restoreOwnedSessions]);
3603
- useEffect5(() => {
3621
+ useEffect6(() => {
3604
3622
  if (showAllTerminals) {
3605
3623
  fetchForeignSessions();
3606
3624
  } else {
@@ -3733,7 +3751,7 @@ var TabbedTerminalPanelInner = ({
3733
3751
  },
3734
3752
  [activeTabId, sessionIds, actions, onTabsChange, isForeignTab, ownedTabs, foreignTabs]
3735
3753
  );
3736
- useEffect5(() => {
3754
+ useEffect6(() => {
3737
3755
  if (!requestCloseTabId) return;
3738
3756
  closeTab(requestCloseTabId);
3739
3757
  }, [requestCloseTabId]);
@@ -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,EAAsB,MAAM,iBAAiB,CAAC;AAwBvE,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA0RxC,CAAC"}
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../src/components/TabBar/TabBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAwBvE,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAqTxC,CAAC"}
@@ -1 +1 @@
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
+ {"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,CAgL9C,CAAC"}
@@ -43,6 +43,7 @@ export interface TabButtonProps {
43
43
  onClick: () => void;
44
44
  onClose: () => void;
45
45
  keyboardHint?: string;
46
+ keyboardHintVisible?: boolean;
46
47
  renderAccessory?: (tab: Tab) => ReactNode;
47
48
  renderIcon?: (tab: Tab) => ReactNode;
48
49
  renderLabel?: (tab: Tab) => ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/types/tab.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/types/tab.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@industry-theme/xterm-terminal-panel",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "sideEffects": [