@industry-theme/xterm-terminal-panel 0.5.2 → 0.5.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
@@ -1791,7 +1791,7 @@ import React2, {
1791
1791
  } from "react";
1792
1792
  import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1793
1793
  function TerminalTabContentInner(props, ref) {
1794
- const { tab, sessionId, isActive, isVisible, actions, events, terminalContext, onSessionCreated, onScrollPositionChange, isForeign = false, defaultScrollLocked, activityDetection = true, activityTimeout = 500, autoShowBlinds = false } = props;
1794
+ const { tab, sessionId, isActive, isVisible, actions, events, terminalContext, onSessionCreated, onScrollPositionChange, isForeign = false, defaultScrollLocked, activityDetection = true, activityTimeout = 500, autoShowBlinds = false, onActivityStateChange } = props;
1795
1795
  console.log("[TerminalTabContent] RENDER", { tabId: tab.id, isActive, sessionId });
1796
1796
  const terminalRef = useRef3(null);
1797
1797
  const [localSessionId, setLocalSessionId] = useState4(sessionId);
@@ -1988,6 +1988,7 @@ function TerminalTabContentInner(props, ref) {
1988
1988
  }, [localSessionId, events]);
1989
1989
  const handleActivityChange = useCallback3((state) => {
1990
1990
  if (localSessionId) {
1991
+ onActivityStateChange?.(localSessionId, state.isActive);
1991
1992
  events.emit({
1992
1993
  type: "terminal:activity-changed",
1993
1994
  source: "TabbedTerminalPanel",
@@ -1999,7 +2000,7 @@ function TerminalTabContentInner(props, ref) {
1999
2000
  }
2000
2001
  });
2001
2002
  }
2002
- }, [localSessionId, events]);
2003
+ }, [localSessionId, events, onActivityStateChange]);
2003
2004
  const handleScrollToBottom = useCallback3(() => {
2004
2005
  terminalRef.current?.scrollToBottom();
2005
2006
  }, []);
@@ -2146,6 +2147,7 @@ var TabbedTerminalPanelInner = ({
2146
2147
  }, [isControlled, onActiveTabChange]);
2147
2148
  const [sessionIds, setSessionIds] = useState4(new Map);
2148
2149
  const [scrollPositions, setScrollPositions] = useState4(new Map);
2150
+ const [activityStates, setActivityStates] = useState4(new Map);
2149
2151
  const customTabsKey = React2.useMemo(() => {
2150
2152
  const customTabs = initialTabs.filter((tab) => tab.contentType !== "terminal");
2151
2153
  return JSON.stringify(customTabs);
@@ -2449,6 +2451,17 @@ var TabbedTerminalPanelInner = ({
2449
2451
  const handleSessionCreated = useCallback3((tabId, sessionId) => {
2450
2452
  setSessionIds((prev) => new Map(prev).set(tabId, sessionId));
2451
2453
  }, []);
2454
+ const handleActivityStateChange = useCallback3((sessionId, isActive) => {
2455
+ setActivityStates((prev) => {
2456
+ const next = new Map(prev);
2457
+ if (isActive) {
2458
+ next.set(sessionId, true);
2459
+ } else {
2460
+ next.delete(sessionId);
2461
+ }
2462
+ return next;
2463
+ });
2464
+ }, []);
2452
2465
  useTabKeyboardShortcuts({
2453
2466
  onNewTab: () => {
2454
2467
  if (isCreatingTabRef.current)
@@ -2471,7 +2484,9 @@ var TabbedTerminalPanelInner = ({
2471
2484
  });
2472
2485
  const renderTabAccessory = useCallback3((tab) => {
2473
2486
  const tabSessionId = sessionIds.get(tab.id);
2474
- const isWorking = tabSessionId ? workingStates?.[tabSessionId]?.isWorking : false;
2487
+ const hasExternalWorkingState = tabSessionId ? workingStates?.[tabSessionId]?.isWorking : false;
2488
+ const hasInternalActivity = tabSessionId ? activityStates.get(tabSessionId) : false;
2489
+ const isWorking = hasExternalWorkingState || hasInternalActivity;
2475
2490
  const isActive = tab.id === activeTabId;
2476
2491
  if (!isActive && !isWorking)
2477
2492
  return null;
@@ -2529,7 +2544,7 @@ var TabbedTerminalPanelInner = ({
2529
2544
  })
2530
2545
  ]
2531
2546
  });
2532
- }, [activeTabId, scrollPositions, defaultScrollPosition, handleToggleScrollLock, theme, sessionIds, workingStates]);
2547
+ }, [activeTabId, scrollPositions, defaultScrollPosition, handleToggleScrollLock, theme, sessionIds, workingStates, activityStates]);
2533
2548
  return /* @__PURE__ */ jsxs6("div", {
2534
2549
  style: {
2535
2550
  display: "flex",
@@ -2614,7 +2629,8 @@ var TabbedTerminalPanelInner = ({
2614
2629
  defaultScrollLocked,
2615
2630
  activityDetection,
2616
2631
  activityTimeout,
2617
- autoShowBlinds
2632
+ autoShowBlinds,
2633
+ onActivityStateChange: handleActivityStateChange
2618
2634
  }, tab.id);
2619
2635
  }
2620
2636
  return /* @__PURE__ */ jsx7("div", {
@@ -2643,7 +2659,8 @@ var TabbedTerminalPanelInner = ({
2643
2659
  defaultScrollLocked,
2644
2660
  activityDetection,
2645
2661
  activityTimeout,
2646
- autoShowBlinds
2662
+ autoShowBlinds,
2663
+ onActivityStateChange: handleActivityStateChange
2647
2664
  }, tab.id);
2648
2665
  }
2649
2666
  return /* @__PURE__ */ jsxs6("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAkC3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAGV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAunC1B,CAAC"}
1
+ {"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAkC3D,OAAO,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAGV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAunC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAKN,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AAiCxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAqyCD,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"}
1
+ {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAKN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAKZ,MAAM,gBAAgB,CAAC;AAoCxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AA6zCD,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@industry-theme/xterm-terminal-panel",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",