@industry-theme/xterm-terminal-panel 0.10.0 → 0.10.2

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.0",
190
+ version: "0.10.2",
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,
@@ -2665,11 +2666,8 @@ var TabButton = ({
2665
2666
  // renders underneath it. Reserved whenever the tab is closable (not
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
- backgroundColor: isActive ? theme.colors.backgroundDark ?? theme.colors.backgroundSecondary : theme.colors.background,
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}`,
2669
+ backgroundColor: isActive ? theme.colors.background : theme.colors.backgroundDark ?? theme.colors.backgroundSecondary,
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),
@@ -2936,6 +2952,7 @@ var TabBar = ({
2936
2952
  onClick: () => onTabClick(tab.id),
2937
2953
  onClose: () => onTabClose(tab.id),
2938
2954
  keyboardHint: showKeyboardHints && index < 9 ? `\u2318 ${index + 1}` : void 0,
2955
+ keyboardHintVisible: isCommandPressed,
2939
2956
  renderAccessory: renderTabAccessory,
2940
2957
  renderIcon: renderTabIcon,
2941
2958
  renderLabel: renderTabLabel,
@@ -3021,14 +3038,14 @@ function isTabOfType(tab, contentType) {
3021
3038
  }
3022
3039
 
3023
3040
  // src/hooks/useTabKeyboardShortcuts.ts
3024
- import { useEffect as useEffect4 } from "react";
3041
+ import { useEffect as useEffect5 } from "react";
3025
3042
  var useTabKeyboardShortcuts = ({
3026
3043
  onNewTab,
3027
3044
  onCloseTab,
3028
3045
  onSwitchToTab,
3029
3046
  enabled = true
3030
3047
  }) => {
3031
- useEffect4(() => {
3048
+ useEffect5(() => {
3032
3049
  if (!enabled) return;
3033
3050
  const handleKeyDown = (e) => {
3034
3051
  const isCmdOrCtrl = e.metaKey || e.ctrlKey;
@@ -3063,7 +3080,7 @@ import { Terminal as TerminalIcon2, Box, Boxes } from "lucide-react";
3063
3080
  import React3, {
3064
3081
  useState as useState4,
3065
3082
  useCallback as useCallback6,
3066
- useEffect as useEffect5,
3083
+ useEffect as useEffect6,
3067
3084
  useRef as useRef5
3068
3085
  } from "react";
3069
3086
 
@@ -3402,7 +3419,7 @@ var TabbedTerminalPanelInner = ({
3402
3419
  const customTabs = initialTabs.filter((tab) => tab.contentType !== "terminal");
3403
3420
  return JSON.stringify(customTabs);
3404
3421
  }, [initialTabs]);
3405
- useEffect5(() => {
3422
+ useEffect6(() => {
3406
3423
  const customTabsFromProp = initialTabs.filter((tab) => tab.contentType !== "terminal");
3407
3424
  setOwnedTabs((prevTabs) => {
3408
3425
  const prevCustomTabs = prevTabs.filter((tab) => tab.contentType !== "terminal");
@@ -3423,7 +3440,7 @@ var TabbedTerminalPanelInner = ({
3423
3440
  return [...kept, ...added];
3424
3441
  });
3425
3442
  }, [customTabsKey]);
3426
- useEffect5(() => {
3443
+ useEffect6(() => {
3427
3444
  if (!requestFocusTabId) {
3428
3445
  return;
3429
3446
  }
@@ -3581,12 +3598,12 @@ var TabbedTerminalPanelInner = ({
3581
3598
  return [];
3582
3599
  });
3583
3600
  }, []);
3584
- useEffect5(() => {
3601
+ useEffect6(() => {
3585
3602
  if (hasInitializedRef.current) return;
3586
3603
  hasInitializedRef.current = true;
3587
3604
  restoreOwnedSessions();
3588
3605
  }, []);
3589
- useEffect5(() => {
3606
+ useEffect6(() => {
3590
3607
  const handleSessionCreated2 = (event) => {
3591
3608
  const customEvent = event;
3592
3609
  const { context: context2 } = customEvent.detail || {};
@@ -3600,7 +3617,7 @@ var TabbedTerminalPanelInner = ({
3600
3617
  window.removeEventListener("terminal-session-created", handleSessionCreated2);
3601
3618
  };
3602
3619
  }, [terminalContext, restoreOwnedSessions]);
3603
- useEffect5(() => {
3620
+ useEffect6(() => {
3604
3621
  if (showAllTerminals) {
3605
3622
  fetchForeignSessions();
3606
3623
  } else {
@@ -3733,7 +3750,7 @@ var TabbedTerminalPanelInner = ({
3733
3750
  },
3734
3751
  [activeTabId, sessionIds, actions, onTabsChange, isForeignTab, ownedTabs, foreignTabs]
3735
3752
  );
3736
- useEffect5(() => {
3753
+ useEffect6(() => {
3737
3754
  if (!requestCloseTabId) return;
3738
3755
  closeTab(requestCloseTabId);
3739
3756
  }, [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,CAoTxC,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.0",
3
+ "version": "0.10.2",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "sideEffects": [