@industry-theme/xterm-terminal-panel 0.1.10 → 0.2.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  export { ThemedTerminal } from './src/components/ThemedTerminal';
2
2
  export { ThemedTerminalWithProvider } from './src/components/ThemedTerminalWithProvider';
3
- export type { ThemedTerminalProps, ThemedTerminalRef, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, } from './src/types/terminal.types';
3
+ export type { ThemedTerminalProps, ThemedTerminalRef, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, LinkClickModifiers, } from './src/types/terminal.types';
4
4
  export { useThemedTerminal } from './src/hooks/useThemedTerminal';
5
5
  export type { UseThemedTerminalReturn } from './src/hooks/useThemedTerminal';
6
6
  export { createTerminalTheme, getTerminalCSSVariables, } from './src/utils/terminalTheme';
@@ -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;AAGzF,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,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,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAG3D,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
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;AAGzF,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,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,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAG3D,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,9 @@
1
1
  // src/components/ThemedTerminal.tsx
2
+ import {
3
+ DATA_TYPES,
4
+ sanitizePath,
5
+ useDropZone
6
+ } from "@principal-ade/panel-framework-core";
2
7
  import { FitAddon } from "@xterm/addon-fit";
3
8
  import { SearchAddon } from "@xterm/addon-search";
4
9
  import { WebLinksAddon } from "@xterm/addon-web-links";
@@ -13,6 +18,7 @@ import {
13
18
  } from "lucide-react";
14
19
  import {
15
20
  forwardRef,
21
+ useCallback,
16
22
  useEffect,
17
23
  useImperativeHandle,
18
24
  useRef,
@@ -98,6 +104,33 @@ var ThemedTerminal = forwardRef(({
98
104
  const scrollDebounceRef = useRef(null);
99
105
  const isVisibleRef = useRef(isVisible);
100
106
  const isScrollLockedRef = useRef(true);
107
+ const handleDroppedContent = useCallback((content) => {
108
+ if (terminal) {
109
+ terminal.paste(content);
110
+ terminal.focus();
111
+ }
112
+ }, [terminal]);
113
+ const { isDragOver, ...dropZoneProps } = useDropZone({
114
+ handlers: [
115
+ {
116
+ dataType: [DATA_TYPES.FILE_PATH, DATA_TYPES.DIRECTORY_PATH],
117
+ onDrop: (data) => {
118
+ const safePath = sanitizePath(data.primaryData);
119
+ handleDroppedContent(safePath);
120
+ }
121
+ },
122
+ {
123
+ dataType: DATA_TYPES.TEXT_SELECTION,
124
+ onDrop: (data) => {
125
+ handleDroppedContent(data.primaryData);
126
+ }
127
+ }
128
+ ],
129
+ onPlainTextDrop: (text) => {
130
+ handleDroppedContent(text);
131
+ },
132
+ showVisualFeedback: true
133
+ });
101
134
  useEffect(() => {
102
135
  isVisibleRef.current = isVisible;
103
136
  }, [isVisible]);
@@ -267,7 +300,12 @@ var ThemedTerminal = forwardRef(({
267
300
  const webLinksAddon = new WebLinksAddon((event, uri) => {
268
301
  event.preventDefault();
269
302
  if (onLinkClick) {
270
- onLinkClick(uri);
303
+ onLinkClick(uri, {
304
+ shiftKey: event.shiftKey,
305
+ metaKey: event.metaKey,
306
+ ctrlKey: event.ctrlKey,
307
+ altKey: event.altKey
308
+ });
271
309
  }
272
310
  });
273
311
  term.loadAddon(webLinksAddon);
@@ -574,8 +612,9 @@ var ThemedTerminal = forwardRef(({
574
612
  })
575
613
  ]
576
614
  }),
577
- /* @__PURE__ */ jsx("div", {
615
+ /* @__PURE__ */ jsxs("div", {
578
616
  ref: terminalRef,
617
+ ...dropZoneProps,
579
618
  className: `terminal-container-fix ${scrollbarStyle === "hidden" ? "hide-scrollbar" : scrollbarStyle === "thin" ? "thin-scrollbar" : scrollbarStyle === "auto-hide" ? "auto-hide-scrollbar" : ""}`,
580
619
  style: {
581
620
  flex: 1,
@@ -585,91 +624,118 @@ var ThemedTerminal = forwardRef(({
585
624
  height: "100%",
586
625
  minHeight: 0
587
626
  },
588
- children: overlayState && /* @__PURE__ */ jsxs("div", {
589
- style: {
590
- position: "absolute",
591
- top: 0,
592
- left: 0,
593
- right: 0,
594
- bottom: 0,
595
- display: "flex",
596
- flexDirection: "column",
597
- alignItems: "center",
598
- justifyContent: "center",
599
- backgroundColor: theme.colors.background,
600
- opacity: overlayState.opacity ?? 1,
601
- gap: "16px",
602
- padding: "32px",
603
- zIndex: 10
604
- },
605
- children: [
606
- /* @__PURE__ */ jsx(Monitor, {
607
- size: 48,
608
- color: theme.colors.textSecondary
609
- }),
610
- /* @__PURE__ */ jsx("div", {
611
- style: {
612
- fontSize: "16px",
613
- fontWeight: "500",
614
- color: theme.colors.text,
615
- textAlign: "center"
616
- },
617
- children: overlayState.message
618
- }),
619
- overlayState.subtitle && /* @__PURE__ */ jsx("div", {
620
- style: {
621
- fontSize: "14px",
622
- color: theme.colors.textSecondary,
623
- textAlign: "center",
624
- maxWidth: "400px"
625
- },
626
- children: overlayState.subtitle
627
- }),
628
- overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
627
+ children: [
628
+ isDragOver && /* @__PURE__ */ jsx("div", {
629
+ style: {
630
+ position: "absolute",
631
+ inset: 0,
632
+ background: "rgba(59, 130, 246, 0.1)",
633
+ border: "2px dashed #3b82f6",
634
+ borderRadius: "4px",
635
+ display: "flex",
636
+ alignItems: "center",
637
+ justifyContent: "center",
638
+ pointerEvents: "none",
639
+ zIndex: 1000
640
+ },
641
+ children: /* @__PURE__ */ jsx("div", {
629
642
  style: {
630
- display: "flex",
631
- gap: "12px",
632
- marginTop: "8px"
643
+ padding: "8px 16px",
644
+ background: "#3b82f6",
645
+ color: "white",
646
+ borderRadius: "4px",
647
+ fontSize: "13px",
648
+ fontWeight: 500
633
649
  },
634
- children: overlayState.actions.map((action) => /* @__PURE__ */ jsxs("button", {
635
- type: "button",
636
- onClick: action.onClick,
650
+ children: "Drop to insert"
651
+ })
652
+ }),
653
+ overlayState && /* @__PURE__ */ jsxs("div", {
654
+ style: {
655
+ position: "absolute",
656
+ top: 0,
657
+ left: 0,
658
+ right: 0,
659
+ bottom: 0,
660
+ display: "flex",
661
+ flexDirection: "column",
662
+ alignItems: "center",
663
+ justifyContent: "center",
664
+ backgroundColor: theme.colors.background,
665
+ opacity: overlayState.opacity ?? 1,
666
+ gap: "16px",
667
+ padding: "32px",
668
+ zIndex: 10
669
+ },
670
+ children: [
671
+ /* @__PURE__ */ jsx(Monitor, {
672
+ size: 48,
673
+ color: theme.colors.textSecondary
674
+ }),
675
+ /* @__PURE__ */ jsx("div", {
637
676
  style: {
638
- padding: "8px 16px",
639
- backgroundColor: action.primary ? theme.colors.primary : "transparent",
640
- color: action.primary ? "#ffffff" : theme.colors.text,
641
- border: action.primary ? "none" : `1px solid ${theme.colors.border}`,
642
- borderRadius: "6px",
643
- cursor: "pointer",
644
- fontSize: "14px",
677
+ fontSize: "16px",
645
678
  fontWeight: "500",
646
- display: "flex",
647
- alignItems: "center",
648
- gap: "8px",
649
- transition: "all 0.2s"
679
+ color: theme.colors.text,
680
+ textAlign: "center"
650
681
  },
651
- onMouseEnter: (e) => {
652
- if (action.primary) {
653
- e.currentTarget.style.opacity = "0.8";
654
- } else {
655
- e.currentTarget.style.backgroundColor = theme.colors.backgroundSecondary;
656
- }
682
+ children: overlayState.message
683
+ }),
684
+ overlayState.subtitle && /* @__PURE__ */ jsx("div", {
685
+ style: {
686
+ fontSize: "14px",
687
+ color: theme.colors.textSecondary,
688
+ textAlign: "center",
689
+ maxWidth: "400px"
657
690
  },
658
- onMouseLeave: (e) => {
659
- if (action.primary) {
660
- e.currentTarget.style.opacity = "1";
661
- } else {
662
- e.currentTarget.style.backgroundColor = "transparent";
663
- }
691
+ children: overlayState.subtitle
692
+ }),
693
+ overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
694
+ style: {
695
+ display: "flex",
696
+ gap: "12px",
697
+ marginTop: "8px"
664
698
  },
665
- children: [
666
- action.icon,
667
- action.label
668
- ]
669
- }, action.label))
670
- })
671
- ]
672
- })
699
+ children: overlayState.actions.map((action) => /* @__PURE__ */ jsxs("button", {
700
+ type: "button",
701
+ onClick: action.onClick,
702
+ style: {
703
+ padding: "8px 16px",
704
+ backgroundColor: action.primary ? theme.colors.primary : "transparent",
705
+ color: action.primary ? "#ffffff" : theme.colors.text,
706
+ border: action.primary ? "none" : `1px solid ${theme.colors.border}`,
707
+ borderRadius: "6px",
708
+ cursor: "pointer",
709
+ fontSize: "14px",
710
+ fontWeight: "500",
711
+ display: "flex",
712
+ alignItems: "center",
713
+ gap: "8px",
714
+ transition: "all 0.2s"
715
+ },
716
+ onMouseEnter: (e) => {
717
+ if (action.primary) {
718
+ e.currentTarget.style.opacity = "0.8";
719
+ } else {
720
+ e.currentTarget.style.backgroundColor = theme.colors.backgroundSecondary;
721
+ }
722
+ },
723
+ onMouseLeave: (e) => {
724
+ if (action.primary) {
725
+ e.currentTarget.style.opacity = "1";
726
+ } else {
727
+ e.currentTarget.style.backgroundColor = "transparent";
728
+ }
729
+ },
730
+ children: [
731
+ action.icon,
732
+ action.label
733
+ ]
734
+ }, action.label))
735
+ })
736
+ ]
737
+ })
738
+ ]
673
739
  })
674
740
  ]
675
741
  });
@@ -1080,7 +1146,7 @@ import { useTheme as useTheme4 } from "@principal-ade/industry-theme";
1080
1146
  import { Terminal as TerminalIcon2, X as X2, Plus, Lock as Lock2, Unlock as Unlock2, Box, Boxes } from "lucide-react";
1081
1147
  import React, {
1082
1148
  useState as useState3,
1083
- useCallback,
1149
+ useCallback as useCallback2,
1084
1150
  useEffect as useEffect3,
1085
1151
  useRef as useRef3
1086
1152
  } from "react";
@@ -1099,7 +1165,7 @@ function TerminalTabContentInner(props, ref) {
1099
1165
  const [shouldRenderTerminal, setShouldRenderTerminal] = useState3(true);
1100
1166
  const [ownerWindowId, setOwnerWindowId] = useState3(null);
1101
1167
  const needsRefreshOnResizeRef = useRef3(false);
1102
- const claimAndConnect = useCallback(async (targetSessionId, force = false) => {
1168
+ const claimAndConnect = useCallback2(async (targetSessionId, force = false) => {
1103
1169
  try {
1104
1170
  if (actions.claimTerminalOwnership) {
1105
1171
  await actions.claimTerminalOwnership(targetSessionId, force);
@@ -1178,17 +1244,17 @@ function TerminalTabContentInner(props, ref) {
1178
1244
  unsubscribe();
1179
1245
  };
1180
1246
  }, [localSessionId, isInitialized, actions, shouldRenderTerminal]);
1181
- const handleData = useCallback((data) => {
1247
+ const handleData = useCallback2((data) => {
1182
1248
  if (localSessionId && actions.writeToTerminal) {
1183
1249
  actions.writeToTerminal(localSessionId, data);
1184
1250
  }
1185
1251
  }, [localSessionId, actions]);
1186
- const handleResize = useCallback((cols, rows) => {
1252
+ const handleResize = useCallback2((cols, rows) => {
1187
1253
  if (localSessionId && actions.resizeTerminal) {
1188
1254
  actions.resizeTerminal(localSessionId, cols, rows);
1189
1255
  }
1190
1256
  }, [localSessionId, actions]);
1191
- const handleReady = useCallback((cols, rows) => {
1257
+ const handleReady = useCallback2((cols, rows) => {
1192
1258
  if (localSessionId && actions.resizeTerminal) {
1193
1259
  const shouldForce = needsRefreshOnResizeRef.current;
1194
1260
  if (shouldForce) {
@@ -1197,7 +1263,7 @@ function TerminalTabContentInner(props, ref) {
1197
1263
  actions.resizeTerminal(localSessionId, cols, rows, shouldForce);
1198
1264
  }
1199
1265
  }, [localSessionId, actions]);
1200
- const handleLinkClick = useCallback((url) => {
1266
+ const handleLinkClick = useCallback2((url, modifiers) => {
1201
1267
  if (localSessionId) {
1202
1268
  events.emit({
1203
1269
  type: "terminal:link-click",
@@ -1205,7 +1271,11 @@ function TerminalTabContentInner(props, ref) {
1205
1271
  timestamp: Date.now(),
1206
1272
  payload: {
1207
1273
  url,
1208
- sessionId: localSessionId
1274
+ sessionId: localSessionId,
1275
+ shiftKey: modifiers.shiftKey,
1276
+ metaKey: modifiers.metaKey,
1277
+ ctrlKey: modifiers.ctrlKey,
1278
+ altKey: modifiers.altKey
1209
1279
  }
1210
1280
  });
1211
1281
  }
@@ -1224,20 +1294,20 @@ function TerminalTabContentInner(props, ref) {
1224
1294
  unsubscribe();
1225
1295
  };
1226
1296
  }, [localSessionId, actions]);
1227
- const handleTakeControl = useCallback(async () => {
1297
+ const handleTakeControl = useCallback2(async () => {
1228
1298
  if (!localSessionId) {
1229
1299
  return;
1230
1300
  }
1231
1301
  await claimAndConnect(localSessionId, true);
1232
1302
  }, [localSessionId, claimAndConnect]);
1233
- const handleScrollPositionChange = useCallback((position) => {
1303
+ const handleScrollPositionChange = useCallback2((position) => {
1234
1304
  setScrollPosition(position);
1235
1305
  onScrollPositionChange?.(tab.id, position);
1236
1306
  }, [tab.id, onScrollPositionChange]);
1237
- const handleScrollToBottom = useCallback(() => {
1307
+ const handleScrollToBottom = useCallback2(() => {
1238
1308
  terminalRef.current?.scrollToBottom();
1239
1309
  }, []);
1240
- const handleToggleScrollLock = useCallback(() => {
1310
+ const handleToggleScrollLock = useCallback2(() => {
1241
1311
  if (scrollPosition.isScrollLocked) {
1242
1312
  const terminal = terminalRef.current?.getTerminal();
1243
1313
  if (terminal) {
@@ -1342,7 +1412,7 @@ var TabbedTerminalPanelInner = ({
1342
1412
  const [sessionIds, setSessionIds] = useState3(new Map);
1343
1413
  const [hoveredTabId, setHoveredTabId] = useState3(null);
1344
1414
  const [scrollPositions, setScrollPositions] = useState3(new Map);
1345
- const getOwnedTabLabel = useCallback((index, directory2) => {
1415
+ const getOwnedTabLabel = useCallback2((index, directory2) => {
1346
1416
  if (tabLabelPrefix) {
1347
1417
  return `${tabLabelPrefix} ${index + 1}`;
1348
1418
  }
@@ -1358,7 +1428,7 @@ var TabbedTerminalPanelInner = ({
1358
1428
  }, [ownedTabs, foreignTabs, getOwnedTabLabel]);
1359
1429
  const tabRefsMap = useRef3(new Map);
1360
1430
  const refCallbacksMap = useRef3(new Map);
1361
- const getRefCallback = useCallback((tabId) => {
1431
+ const getRefCallback = useCallback2((tabId) => {
1362
1432
  let callback = refCallbacksMap.current.get(tabId);
1363
1433
  if (!callback) {
1364
1434
  callback = (ref) => {
@@ -1375,7 +1445,7 @@ var TabbedTerminalPanelInner = ({
1375
1445
  const hasInitializedRef = useRef3(false);
1376
1446
  const isCreatingTabRef = useRef3(false);
1377
1447
  const headerRef = useRef3(null);
1378
- const handleTabScrollPositionChange = useCallback((tabId, position) => {
1448
+ const handleTabScrollPositionChange = useCallback2((tabId, position) => {
1379
1449
  setScrollPositions((prev) => new Map(prev).set(tabId, position));
1380
1450
  }, []);
1381
1451
  const defaultScrollPosition = {
@@ -1383,12 +1453,12 @@ var TabbedTerminalPanelInner = ({
1383
1453
  isAtBottom: true,
1384
1454
  isScrollLocked: false
1385
1455
  };
1386
- const handleToggleScrollLock = useCallback(() => {
1456
+ const handleToggleScrollLock = useCallback2(() => {
1387
1457
  if (activeTabId) {
1388
1458
  tabRefsMap.current.get(activeTabId)?.toggleScrollLock();
1389
1459
  }
1390
1460
  }, [activeTabId]);
1391
- const restoreOwnedSessions = useCallback(async () => {
1461
+ const restoreOwnedSessions = useCallback2(async () => {
1392
1462
  try {
1393
1463
  let sessions = [];
1394
1464
  if (actions.listTerminalSessions) {
@@ -1422,7 +1492,7 @@ var TabbedTerminalPanelInner = ({
1422
1492
  console.error("[TabbedTerminalPanel] Failed to restore owned sessions:", err);
1423
1493
  }
1424
1494
  }, [terminalContext, initialTabs, onTabsChange, actions, directory]);
1425
- const fetchForeignSessions = useCallback(async () => {
1495
+ const fetchForeignSessions = useCallback2(async () => {
1426
1496
  try {
1427
1497
  if (!actions.listTerminalSessions) {
1428
1498
  return;
@@ -1453,7 +1523,7 @@ var TabbedTerminalPanelInner = ({
1453
1523
  console.error("[TabbedTerminalPanel] Failed to fetch foreign sessions:", err);
1454
1524
  }
1455
1525
  }, [terminalContext, actions]);
1456
- const clearForeignTabs = useCallback(() => {
1526
+ const clearForeignTabs = useCallback2(() => {
1457
1527
  setForeignTabs((prevForeign) => {
1458
1528
  const foreignTabIds = new Set(prevForeign.map((t) => t.id));
1459
1529
  setSessionIds((prev) => {
@@ -1477,7 +1547,7 @@ var TabbedTerminalPanelInner = ({
1477
1547
  clearForeignTabs();
1478
1548
  }
1479
1549
  }, [showAllTerminals, fetchForeignSessions, clearForeignTabs]);
1480
- const switchTab = useCallback((tabId) => {
1550
+ const switchTab = useCallback2((tabId) => {
1481
1551
  setOwnedTabs((prevTabs) => prevTabs.map((t) => ({
1482
1552
  ...t,
1483
1553
  isActive: t.id === tabId
@@ -1488,7 +1558,7 @@ var TabbedTerminalPanelInner = ({
1488
1558
  })));
1489
1559
  setActiveTabId(tabId);
1490
1560
  }, []);
1491
- const addNewTab = useCallback((label, command, targetDirectory) => {
1561
+ const addNewTab = useCallback2((label, command, targetDirectory) => {
1492
1562
  const targetDir = targetDirectory || directory;
1493
1563
  const directoryName = targetDir.split("/").pop() || targetDir;
1494
1564
  const newTab = {
@@ -1507,10 +1577,10 @@ var TabbedTerminalPanelInner = ({
1507
1577
  setForeignTabs((prevTabs) => prevTabs.map((t) => ({ ...t, isActive: false })));
1508
1578
  setActiveTabId(newTab.id);
1509
1579
  }, [directory, onTabsChange]);
1510
- const isForeignTab = useCallback((tabId) => {
1580
+ const isForeignTab = useCallback2((tabId) => {
1511
1581
  return tabId.startsWith("tab-foreign-");
1512
1582
  }, []);
1513
- const closeTab = useCallback(async (tabId) => {
1583
+ const closeTab = useCallback2(async (tabId) => {
1514
1584
  const sessionId = sessionIds.get(tabId);
1515
1585
  const isForeign = isForeignTab(tabId);
1516
1586
  if (!isForeign && sessionId && actions.destroyTerminalSession) {
@@ -1560,7 +1630,7 @@ var TabbedTerminalPanelInner = ({
1560
1630
  });
1561
1631
  }
1562
1632
  }, [activeTabId, sessionIds, actions, onTabsChange, isForeignTab, ownedTabs, foreignTabs]);
1563
- const handleSessionCreated = useCallback((tabId, sessionId) => {
1633
+ const handleSessionCreated = useCallback2((tabId, sessionId) => {
1564
1634
  setSessionIds((prev) => new Map(prev).set(tabId, sessionId));
1565
1635
  }, []);
1566
1636
  const tabsRef = useRef3(tabs);
@@ -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;AAyB3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAgvB1B,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;AA+B3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAuzB1B,CAAC"}
@@ -4,6 +4,10 @@ export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:cr
4
4
  export interface TerminalLinkClickEvent {
5
5
  url: string;
6
6
  sessionId: string;
7
+ shiftKey: boolean;
8
+ metaKey: boolean;
9
+ ctrlKey: boolean;
10
+ altKey: boolean;
7
11
  }
8
12
  export interface TerminalSessionInfo {
9
13
  id: string;
@@ -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":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,wBAAwB,EAIzB,MAAM,gBAAgB,CAAC;AAwBxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AA0jCD,eAAO,MAAM,mBAAmB,sDAmB9B,CAAC"}
1
+ {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,wBAAwB,EAIzB,MAAM,gBAAgB,CAAC;AAwBxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AA8jCD,eAAO,MAAM,mBAAmB,sDAmB9B,CAAC"}
@@ -20,11 +20,17 @@ export interface TerminalScrollPosition {
20
20
  isAtBottom: boolean;
21
21
  isScrollLocked: boolean;
22
22
  }
23
+ export interface LinkClickModifiers {
24
+ shiftKey: boolean;
25
+ metaKey: boolean;
26
+ ctrlKey: boolean;
27
+ altKey: boolean;
28
+ }
23
29
  export interface ThemedTerminalProps {
24
30
  onData?: (data: string) => void;
25
31
  onResize?: (cols: number, rows: number) => void;
26
32
  onReady?: (cols: number, rows: number) => void;
27
- onLinkClick?: (url: string) => void;
33
+ onLinkClick?: (url: string, modifiers: LinkClickModifiers) => void;
28
34
  onScrollPositionChange?: (position: TerminalScrollPosition) => void;
29
35
  className?: string;
30
36
  hideHeader?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.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.1.10",
3
+ "version": "0.2.0",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -55,7 +55,7 @@
55
55
  "license": "MIT",
56
56
  "dependencies": {
57
57
  "@principal-ade/industry-theme": "^0.1.3",
58
- "@principal-ade/panel-framework-core": "^0.1.5",
58
+ "@principal-ade/panel-framework-core": "^0.2.0",
59
59
  "@principal-ade/utcp-panel-event": "^0.1.0",
60
60
  "clsx": "^2.1.1"
61
61
  },