@termaxjs/web-react 0.1.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.
Files changed (134) hide show
  1. package/LICENSE +201 -0
  2. package/dist/TermaxTerminal.d.ts +16 -0
  3. package/dist/TermaxTerminal.d.ts.map +1 -0
  4. package/dist/TermaxTerminal.js +11 -0
  5. package/dist/TermaxTerminal.js.map +1 -0
  6. package/dist/TerminalContext.d.ts +22 -0
  7. package/dist/TerminalContext.d.ts.map +1 -0
  8. package/dist/TerminalContext.js +10 -0
  9. package/dist/TerminalContext.js.map +1 -0
  10. package/dist/TerminalContextMenu.d.ts +15 -0
  11. package/dist/TerminalContextMenu.d.ts.map +1 -0
  12. package/dist/TerminalContextMenu.js +138 -0
  13. package/dist/TerminalContextMenu.js.map +1 -0
  14. package/dist/TerminalDropZone.d.ts +10 -0
  15. package/dist/TerminalDropZone.d.ts.map +1 -0
  16. package/dist/TerminalDropZone.js +40 -0
  17. package/dist/TerminalDropZone.js.map +1 -0
  18. package/dist/TerminalRoot.d.ts +10 -0
  19. package/dist/TerminalRoot.d.ts.map +1 -0
  20. package/dist/TerminalRoot.js +38 -0
  21. package/dist/TerminalRoot.js.map +1 -0
  22. package/dist/TerminalScreen.d.ts +7 -0
  23. package/dist/TerminalScreen.d.ts.map +1 -0
  24. package/dist/TerminalScreen.js +30 -0
  25. package/dist/TerminalScreen.js.map +1 -0
  26. package/dist/TerminalSearch.d.ts +8 -0
  27. package/dist/TerminalSearch.d.ts.map +1 -0
  28. package/dist/TerminalSearch.js +122 -0
  29. package/dist/TerminalSearch.js.map +1 -0
  30. package/dist/TerminalToolbar.d.ts +10 -0
  31. package/dist/TerminalToolbar.d.ts.map +1 -0
  32. package/dist/TerminalToolbar.js +34 -0
  33. package/dist/TerminalToolbar.js.map +1 -0
  34. package/dist/TerminalView.d.ts +28 -0
  35. package/dist/TerminalView.d.ts.map +1 -0
  36. package/dist/TerminalView.js +148 -0
  37. package/dist/TerminalView.js.map +1 -0
  38. package/dist/components/FileTree.d.ts +8 -0
  39. package/dist/components/FileTree.d.ts.map +1 -0
  40. package/dist/components/FileTree.js +19 -0
  41. package/dist/components/FileTree.js.map +1 -0
  42. package/dist/components/GitCommitGraph.d.ts +16 -0
  43. package/dist/components/GitCommitGraph.d.ts.map +1 -0
  44. package/dist/components/GitCommitGraph.js +11 -0
  45. package/dist/components/GitCommitGraph.js.map +1 -0
  46. package/dist/components/SpacesBar.d.ts +8 -0
  47. package/dist/components/SpacesBar.d.ts.map +1 -0
  48. package/dist/components/SpacesBar.js +12 -0
  49. package/dist/components/SpacesBar.js.map +1 -0
  50. package/dist/explorer/HeadlessFileTree.d.ts +28 -0
  51. package/dist/explorer/HeadlessFileTree.d.ts.map +1 -0
  52. package/dist/explorer/HeadlessFileTree.js +50 -0
  53. package/dist/explorer/HeadlessFileTree.js.map +1 -0
  54. package/dist/git/HeadlessGitGraph.d.ts +22 -0
  55. package/dist/git/HeadlessGitGraph.d.ts.map +1 -0
  56. package/dist/git/HeadlessGitGraph.js +13 -0
  57. package/dist/git/HeadlessGitGraph.js.map +1 -0
  58. package/dist/hooks/useTerminal.d.ts +27 -0
  59. package/dist/hooks/useTerminal.d.ts.map +1 -0
  60. package/dist/hooks/useTerminal.js +97 -0
  61. package/dist/hooks/useTerminal.js.map +1 -0
  62. package/dist/hooks/useTerminalDrop.d.ts +9 -0
  63. package/dist/hooks/useTerminalDrop.d.ts.map +1 -0
  64. package/dist/hooks/useTerminalDrop.js +59 -0
  65. package/dist/hooks/useTerminalDrop.js.map +1 -0
  66. package/dist/hooks/useTerminalSearch.d.ts +22 -0
  67. package/dist/hooks/useTerminalSearch.d.ts.map +1 -0
  68. package/dist/hooks/useTerminalSearch.js +89 -0
  69. package/dist/hooks/useTerminalSearch.js.map +1 -0
  70. package/dist/hooks/useTerminalSelection.d.ts +9 -0
  71. package/dist/hooks/useTerminalSelection.d.ts.map +1 -0
  72. package/dist/hooks/useTerminalSelection.js +46 -0
  73. package/dist/hooks/useTerminalSelection.js.map +1 -0
  74. package/dist/index.d.ts +29 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +28 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/layout/HeadlessFloatingPane.d.ts +18 -0
  79. package/dist/layout/HeadlessFloatingPane.d.ts.map +1 -0
  80. package/dist/layout/HeadlessFloatingPane.js +29 -0
  81. package/dist/layout/HeadlessFloatingPane.js.map +1 -0
  82. package/dist/palette/TerminalCommandPalette.d.ts +23 -0
  83. package/dist/palette/TerminalCommandPalette.d.ts.map +1 -0
  84. package/dist/palette/TerminalCommandPalette.js +105 -0
  85. package/dist/palette/TerminalCommandPalette.js.map +1 -0
  86. package/dist/panels/PanelContext.d.ts +25 -0
  87. package/dist/panels/PanelContext.d.ts.map +1 -0
  88. package/dist/panels/PanelContext.js +10 -0
  89. package/dist/panels/PanelContext.js.map +1 -0
  90. package/dist/panels/TerminalPanel.d.ts +17 -0
  91. package/dist/panels/TerminalPanel.d.ts.map +1 -0
  92. package/dist/panels/TerminalPanel.js +47 -0
  93. package/dist/panels/TerminalPanel.js.map +1 -0
  94. package/dist/panels/TerminalPanelGroup.d.ts +13 -0
  95. package/dist/panels/TerminalPanelGroup.d.ts.map +1 -0
  96. package/dist/panels/TerminalPanelGroup.js +167 -0
  97. package/dist/panels/TerminalPanelGroup.js.map +1 -0
  98. package/dist/panels/TerminalResizeHandle.d.ts +12 -0
  99. package/dist/panels/TerminalResizeHandle.d.ts.map +1 -0
  100. package/dist/panels/TerminalResizeHandle.js +56 -0
  101. package/dist/panels/TerminalResizeHandle.js.map +1 -0
  102. package/dist/pool/index.d.ts +2 -0
  103. package/dist/pool/index.d.ts.map +1 -0
  104. package/dist/pool/index.js +2 -0
  105. package/dist/pool/index.js.map +1 -0
  106. package/dist/pool/rendererPool.d.ts +118 -0
  107. package/dist/pool/rendererPool.d.ts.map +1 -0
  108. package/dist/pool/rendererPool.js +1281 -0
  109. package/dist/pool/rendererPool.js.map +1 -0
  110. package/dist/spaces/HeadlessSpacesBar.d.ts +21 -0
  111. package/dist/spaces/HeadlessSpacesBar.d.ts.map +1 -0
  112. package/dist/spaces/HeadlessSpacesBar.js +41 -0
  113. package/dist/spaces/HeadlessSpacesBar.js.map +1 -0
  114. package/dist/status/TerminalStatusBar.d.ts +21 -0
  115. package/dist/status/TerminalStatusBar.d.ts.map +1 -0
  116. package/dist/status/TerminalStatusBar.js +28 -0
  117. package/dist/status/TerminalStatusBar.js.map +1 -0
  118. package/dist/tabs/TerminalTab.d.ts +15 -0
  119. package/dist/tabs/TerminalTab.d.ts.map +1 -0
  120. package/dist/tabs/TerminalTab.js +57 -0
  121. package/dist/tabs/TerminalTab.js.map +1 -0
  122. package/dist/tabs/TerminalTabBar.d.ts +21 -0
  123. package/dist/tabs/TerminalTabBar.d.ts.map +1 -0
  124. package/dist/tabs/TerminalTabBar.js +57 -0
  125. package/dist/tabs/TerminalTabBar.js.map +1 -0
  126. package/dist/themes.d.ts +17 -0
  127. package/dist/themes.d.ts.map +1 -0
  128. package/dist/themes.js +153 -0
  129. package/dist/themes.js.map +1 -0
  130. package/dist/tree/TerminalTree.d.ts +19 -0
  131. package/dist/tree/TerminalTree.d.ts.map +1 -0
  132. package/dist/tree/TerminalTree.js +68 -0
  133. package/dist/tree/TerminalTree.js.map +1 -0
  134. package/package.json +53 -0
@@ -0,0 +1,105 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from 'react';
3
+ export function TerminalCommandPalette({ isOpen, onClose, groups, placeholder = 'Type a command or search (Esc to close)...', className, style, }) {
4
+ const [query, setQuery] = useState('');
5
+ const [selectedIndex, setSelectedIndex] = useState(0);
6
+ const inputRef = useRef(null);
7
+ useEffect(() => {
8
+ if (isOpen) {
9
+ setQuery('');
10
+ setSelectedIndex(0);
11
+ setTimeout(() => inputRef.current?.focus(), 50);
12
+ }
13
+ }, [isOpen]);
14
+ const filteredGroups = useMemo(() => {
15
+ if (!query.trim())
16
+ return groups;
17
+ const lower = query.toLowerCase();
18
+ return groups
19
+ .map((g) => ({
20
+ ...g,
21
+ items: g.items.filter((i) => i.label.toLowerCase().includes(lower) ||
22
+ (i.description && i.description.toLowerCase().includes(lower))),
23
+ }))
24
+ .filter((g) => g.items.length > 0);
25
+ }, [groups, query]);
26
+ const flatItems = useMemo(() => filteredGroups.flatMap((g) => g.items), [filteredGroups]);
27
+ const handleKeyDown = (e) => {
28
+ if (e.key === 'Escape') {
29
+ onClose();
30
+ }
31
+ else if (e.key === 'ArrowDown') {
32
+ e.preventDefault();
33
+ setSelectedIndex((prev) => (prev + 1) % (flatItems.length || 1));
34
+ }
35
+ else if (e.key === 'ArrowUp') {
36
+ e.preventDefault();
37
+ setSelectedIndex((prev) => (prev - 1 + flatItems.length) % (flatItems.length || 1));
38
+ }
39
+ else if (e.key === 'Enter') {
40
+ e.preventDefault();
41
+ if (flatItems[selectedIndex]) {
42
+ flatItems[selectedIndex].onSelect();
43
+ onClose();
44
+ }
45
+ }
46
+ };
47
+ if (!isOpen)
48
+ return null;
49
+ let currentFlatIdx = 0;
50
+ return (
51
+ // biome-ignore lint/a11y/noStaticElementInteractions lint/a11y/useKeyWithClickEvents: pointer-only backdrop dismiss; the dialog is fully keyboard-operable (Escape/arrows/Enter on the input).
52
+ _jsx("div", { onClick: onClose, style: {
53
+ position: 'fixed',
54
+ inset: 0,
55
+ zIndex: 9999,
56
+ display: 'flex',
57
+ alignItems: 'flex-start',
58
+ justifyContent: 'center',
59
+ paddingTop: '15vh',
60
+ backgroundColor: 'rgba(0, 0, 0, 0.65)',
61
+ backdropFilter: 'blur(8px)',
62
+ }, children: _jsxs("div", { className: className, onClick: (e) => e.stopPropagation(), style: {
63
+ width: '100%',
64
+ maxWidth: '560px',
65
+ backgroundColor: '#161920',
66
+ color: '#e6edf3',
67
+ border: '1px solid rgba(255, 255, 255, 0.15)',
68
+ borderRadius: '12px',
69
+ boxShadow: '0 16px 48px rgba(0, 0, 0, 0.5)',
70
+ overflow: 'hidden',
71
+ display: 'flex',
72
+ flexDirection: 'column',
73
+ ...style,
74
+ }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', padding: '12px 16px', borderBottom: '1px solid rgba(255, 255, 255, 0.1)' }, children: [_jsx("span", { style: { opacity: 0.5, marginRight: '10px' }, children: "\uD83D\uDD0D" }), _jsx("input", { ref: inputRef, type: "text", role: "combobox", "aria-expanded": flatItems.length > 0, "aria-controls": "termax-palette-listbox", "aria-activedescendant": `palette-option-${selectedIndex}`, "aria-label": placeholder || 'Command palette', placeholder: placeholder, value: query, onChange: (e) => {
75
+ setQuery(e.target.value);
76
+ setSelectedIndex(0);
77
+ }, onKeyDown: handleKeyDown, style: {
78
+ flex: 1,
79
+ background: 'transparent',
80
+ border: 'none',
81
+ outline: 'none',
82
+ color: 'inherit',
83
+ fontSize: '14px',
84
+ } })] }), _jsx("div", { id: "termax-palette-listbox", role: "listbox", "aria-label": "Commands", style: { maxHeight: '320px', overflowY: 'auto', padding: '8px' }, children: filteredGroups.length === 0 ? (_jsx("div", { style: { padding: '24px', textAlign: 'center', opacity: 0.5, fontSize: '13px' }, children: "No commands found" })) : (filteredGroups.map((group) => (_jsxs("div", { style: { marginBottom: '8px' }, children: [_jsx("div", { style: { fontSize: '11px', fontWeight: 600, opacity: 0.5, padding: '4px 8px', textTransform: 'uppercase', letterSpacing: '0.05em' }, children: group.heading }), group.items.map((item) => {
85
+ const idx = currentFlatIdx++;
86
+ const isSelected = idx === selectedIndex;
87
+ return (
88
+ // biome-ignore lint/a11y/noStaticElementInteractions lint/a11y/useKeyWithClickEvents lint/a11y/useFocusableInteractive: mouse targets in a textbox-driven listbox; focus stays in the input and arrows/Enter are handled there via aria-activedescendant.
89
+ _jsxs("div", { id: `palette-option-${idx}`, role: "option", "aria-selected": isSelected, onClick: () => {
90
+ item.onSelect();
91
+ onClose();
92
+ }, onMouseEnter: () => setSelectedIndex(idx), style: {
93
+ display: 'flex',
94
+ alignItems: 'center',
95
+ justifyContent: 'space-between',
96
+ padding: '8px 12px',
97
+ borderRadius: '6px',
98
+ cursor: 'pointer',
99
+ fontSize: '13px',
100
+ backgroundColor: isSelected ? 'rgba(88, 166, 255, 0.2)' : 'transparent',
101
+ color: isSelected ? '#58a6ff' : 'inherit',
102
+ }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '8px' }, children: [item.icon && _jsx("span", { children: item.icon }), _jsx("span", { children: item.label }), item.description && (_jsx("span", { style: { opacity: 0.5, fontSize: '11px', marginLeft: '6px' }, children: item.description }))] }), item.shortcut && (_jsx("span", { style: { fontSize: '11px', opacity: 0.6, padding: '2px 6px', borderRadius: '4px', backgroundColor: 'rgba(255, 255, 255, 0.08)' }, children: item.shortcut }))] }, item.id));
103
+ })] }, group.heading)))) })] }) }));
104
+ }
105
+ //# sourceMappingURL=TerminalCommandPalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalCommandPalette.js","sourceRoot":"","sources":["../../src/palette/TerminalCommandPalette.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface PanelImperativeHandle {
2
+ collapse: () => void;
3
+ expand: () => void;
4
+ resize: (size: number) => void;
5
+ getSize: () => {
6
+ asPercentage: number;
7
+ asPixels: number;
8
+ };
9
+ isCollapsed: () => boolean;
10
+ isExpanded: () => boolean;
11
+ }
12
+ export interface PanelGroupContextValue {
13
+ direction: 'horizontal' | 'vertical';
14
+ registerPanel: (id: string, defaultSize: number, minSize: number, maxSize?: number) => void;
15
+ unregisterPanel: (id: string) => void;
16
+ getPanelSize: (id: string) => number;
17
+ setPanelSize: (id: string, size: number) => void;
18
+ collapsePanel: (id: string) => void;
19
+ expandPanel: (id: string) => void;
20
+ startDragging: (handleIndex: number, clientPos: number) => void;
21
+ equalizeSizes: () => void;
22
+ }
23
+ export declare const PanelGroupContext: import("react").Context<PanelGroupContextValue | null>;
24
+ export declare function usePanelGroupContext(): PanelGroupContextValue;
25
+ //# sourceMappingURL=PanelContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelContext.d.ts","sourceRoot":"","sources":["../../src/panels/PanelContext.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,YAAY,GAAG,UAAU,CAAC;IACrC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,iBAAiB,wDAAqD,CAAC;AAEpF,wBAAgB,oBAAoB,IAAI,sBAAsB,CAM7D"}
@@ -0,0 +1,10 @@
1
+ import { createContext, useContext } from 'react';
2
+ export const PanelGroupContext = createContext(null);
3
+ export function usePanelGroupContext() {
4
+ const ctx = useContext(PanelGroupContext);
5
+ if (!ctx) {
6
+ throw new Error('usePanelGroupContext must be used within a <TerminalPanelGroup />');
7
+ }
8
+ return ctx;
9
+ }
10
+ //# sourceMappingURL=PanelContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelContext.js","sourceRoot":"","sources":["../../src/panels/PanelContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAuBlD,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAgC,IAAI,CAAC,CAAC;AAEpF,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React, { ReactNode } from 'react';
2
+ import { PanelImperativeHandle } from './PanelContext.js';
3
+ export interface TerminalPanelProps {
4
+ id?: string;
5
+ defaultSize?: number;
6
+ minSize?: number;
7
+ maxSize?: number;
8
+ collapsible?: boolean;
9
+ onCollapse?: () => void;
10
+ onExpand?: () => void;
11
+ onResize?: (size: number) => void;
12
+ children?: ReactNode;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ }
16
+ export declare const TerminalPanel: React.ForwardRefExoticComponent<TerminalPanelProps & React.RefAttributes<PanelImperativeHandle>>;
17
+ //# sourceMappingURL=TerminalPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalPanel.d.ts","sourceRoot":"","sources":["../../src/panels/TerminalPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,qBAAqB,EAAwB,MAAM,mBAAmB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,eAAO,MAAM,aAAa,kGAiFzB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef, useEffect, useId, useImperativeHandle, } from 'react';
3
+ import { usePanelGroupContext } from './PanelContext.js';
4
+ export const TerminalPanel = forwardRef(function TerminalPanel({ id: customId, defaultSize = 50, minSize = 10, maxSize = 100, children, className, style, }, ref) {
5
+ const autoId = useId();
6
+ const id = customId || autoId;
7
+ const { direction, registerPanel, unregisterPanel, getPanelSize, setPanelSize, collapsePanel, expandPanel, } = usePanelGroupContext();
8
+ useEffect(() => {
9
+ registerPanel(id, defaultSize, minSize, maxSize);
10
+ return () => unregisterPanel(id);
11
+ }, [id, defaultSize, minSize, maxSize, registerPanel, unregisterPanel]);
12
+ const size = getPanelSize(id);
13
+ useImperativeHandle(ref, () => ({
14
+ collapse: () => collapsePanel(id),
15
+ expand: () => expandPanel(id),
16
+ resize: (newSize) => setPanelSize(id, newSize),
17
+ getSize: () => ({ asPercentage: size, asPixels: 0 }),
18
+ isCollapsed: () => size <= 0,
19
+ isExpanded: () => size > 0,
20
+ }), [id, size, collapsePanel, expandPanel, setPanelSize]);
21
+ const isCollapsed = size <= 0;
22
+ const dimensionStyle = isCollapsed
23
+ ? { display: 'none' }
24
+ : direction === 'horizontal'
25
+ ? {
26
+ width: `${size}%`,
27
+ height: '100%',
28
+ flex: `${size} 1 0%`,
29
+ display: 'flex',
30
+ }
31
+ : {
32
+ height: `${size}%`,
33
+ width: '100%',
34
+ flex: `${size} 1 0%`,
35
+ display: 'flex',
36
+ };
37
+ return (_jsx("div", { id: id, className: className, style: {
38
+ position: 'relative',
39
+ flexDirection: 'column',
40
+ minWidth: direction === 'horizontal' && !isCollapsed ? `${minSize}%` : '0',
41
+ minHeight: direction === 'vertical' && !isCollapsed ? `${minSize}%` : '0',
42
+ overflow: 'hidden',
43
+ ...dimensionStyle,
44
+ ...style,
45
+ }, children: children }));
46
+ });
47
+ //# sourceMappingURL=TerminalPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalPanel.js","sourceRoot":"","sources":["../../src/panels/TerminalPanel.tsx"],"names":[],"mappings":";AAAA,OAAc,EAEZ,UAAU,EACV,SAAS,EACT,KAAK,EACL,mBAAmB,GACpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAyB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAgBhF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CACrC,SAAS,aAAa,CACpB,EACE,EAAE,EAAE,QAAQ,EACZ,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,EAAE,EACZ,OAAO,GAAG,GAAG,EACb,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EACD,GAAG;IAEH,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,QAAQ,IAAI,MAAM,CAAC;IAC9B,MAAM,EACJ,SAAS,EACT,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,GAAG,oBAAoB,EAAE,CAAC;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAE9B,mBAAmB,CACjB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;QACtD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACpD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;QAC5B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC;KAC3B,CAAC,EACF,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,CACrD,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC;IAE9B,MAAM,cAAc,GAAwB,WAAW;QACrD,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;QACrB,CAAC,CAAC,SAAS,KAAK,YAAY;YAC5B,CAAC,CAAC;gBACE,KAAK,EAAE,GAAG,IAAI,GAAG;gBACjB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,GAAG,IAAI,OAAO;gBACpB,OAAO,EAAE,MAAM;aAChB;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,GAAG,IAAI,GAAG;gBAClB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,GAAG,IAAI,OAAO;gBACpB,OAAO,EAAE,MAAM;aAChB,CAAC;IAEN,OAAO,CACL,cACE,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,SAAS,KAAK,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG;YAC1E,SAAS,EAAE,SAAS,KAAK,UAAU,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG;YACzE,QAAQ,EAAE,QAAQ;YAClB,GAAG,cAAc;YACjB,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React, { ReactNode } from 'react';
2
+ export interface TerminalPanelGroupProps {
3
+ direction?: 'horizontal' | 'vertical';
4
+ snapToGrid?: boolean;
5
+ cellWidth?: number;
6
+ cellHeight?: number;
7
+ onLayout?: (sizes: number[]) => void;
8
+ children?: ReactNode;
9
+ className?: string;
10
+ style?: React.CSSProperties;
11
+ }
12
+ export declare function TerminalPanelGroup({ direction, snapToGrid, cellWidth, cellHeight, onLayout, children, className, style, }: TerminalPanelGroupProps): React.JSX.Element;
13
+ //# sourceMappingURL=TerminalPanelGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalPanelGroup.d.ts","sourceRoot":"","sources":["../../src/panels/TerminalPanelGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAGf,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AASD,wBAAgB,kBAAkB,CAAC,EACjC,SAAwB,EACxB,UAAkB,EAClB,SAAa,EACb,UAAe,EACf,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,GACN,EAAE,uBAAuB,qBA4MzB"}
@@ -0,0 +1,167 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState, } from 'react';
3
+ import { PanelGroupContext } from './PanelContext.js';
4
+ export function TerminalPanelGroup({ direction = 'horizontal', snapToGrid = false, cellWidth = 9, cellHeight = 17, onLayout, children, className, style, }) {
5
+ const containerRef = useRef(null);
6
+ const panelsRef = useRef(new Map());
7
+ const [panelIds, setPanelIds] = useState([]);
8
+ const [sizes, setSizes] = useState([]);
9
+ const lastExpandedSizes = useRef({});
10
+ const onLayoutRef = useRef(onLayout);
11
+ onLayoutRef.current = onLayout;
12
+ const registerPanel = useCallback((id, defaultSize, minSize, maxSize = 100) => {
13
+ const existing = panelsRef.current.get(id);
14
+ panelsRef.current.set(id, { id, defaultSize, minSize, maxSize });
15
+ if (!existing) {
16
+ setPanelIds(Array.from(panelsRef.current.keys()));
17
+ }
18
+ lastExpandedSizes.current[id] = defaultSize;
19
+ }, []);
20
+ const unregisterPanel = useCallback((id) => {
21
+ if (panelsRef.current.has(id)) {
22
+ panelsRef.current.delete(id);
23
+ delete lastExpandedSizes.current[id];
24
+ setPanelIds(Array.from(panelsRef.current.keys()));
25
+ }
26
+ }, []);
27
+ useEffect(() => {
28
+ const count = panelIds.length;
29
+ if (count === 0)
30
+ return;
31
+ if (count === 1) {
32
+ setSizes([100]);
33
+ onLayoutRef.current?.([100]);
34
+ return;
35
+ }
36
+ setSizes((prev) => {
37
+ if (prev.length === count) {
38
+ return prev;
39
+ }
40
+ const equalSize = 100 / count;
41
+ const initial = panelIds.map((id) => panelsRef.current.get(id)?.defaultSize || equalSize);
42
+ const initialSum = initial.reduce((a, b) => a + b, 0) || 1;
43
+ const normalized = initial.map((s) => (s / initialSum) * 100);
44
+ onLayoutRef.current?.(normalized);
45
+ return normalized;
46
+ });
47
+ }, [panelIds]);
48
+ const getPanelSize = useCallback((id) => {
49
+ const count = panelIds.length;
50
+ if (count <= 1)
51
+ return 100;
52
+ const idx = panelIds.indexOf(id);
53
+ if (idx === -1)
54
+ return 100 / count;
55
+ return sizes[idx] ?? (100 / count);
56
+ }, [panelIds, sizes]);
57
+ const setPanelSize = useCallback((id, newSize) => {
58
+ const idx = panelIds.indexOf(id);
59
+ if (idx === -1)
60
+ return;
61
+ setSizes((prev) => {
62
+ const next = [...prev];
63
+ next[idx] = newSize;
64
+ onLayoutRef.current?.(next);
65
+ return next;
66
+ });
67
+ if (newSize > 0) {
68
+ lastExpandedSizes.current[id] = newSize;
69
+ }
70
+ }, [panelIds]);
71
+ const collapsePanel = useCallback((id) => {
72
+ const idx = panelIds.indexOf(id);
73
+ if (idx === -1)
74
+ return;
75
+ if (sizes[idx] > 0) {
76
+ lastExpandedSizes.current[id] = sizes[idx];
77
+ }
78
+ setPanelSize(id, 0);
79
+ }, [panelIds, sizes, setPanelSize]);
80
+ const expandPanel = useCallback((id) => {
81
+ const idx = panelIds.indexOf(id);
82
+ if (idx === -1)
83
+ return;
84
+ const targetSize = lastExpandedSizes.current[id] ||
85
+ panelsRef.current.get(id)?.defaultSize ||
86
+ (100 / (panelIds.length || 1));
87
+ setPanelSize(id, targetSize);
88
+ }, [panelIds, setPanelSize]);
89
+ const equalizeSizes = useCallback(() => {
90
+ const count = panelIds.length;
91
+ if (count === 0)
92
+ return;
93
+ const equal = 100 / count;
94
+ const newSizes = panelIds.map(() => equal);
95
+ setSizes(newSizes);
96
+ onLayoutRef.current?.(newSizes);
97
+ }, [panelIds]);
98
+ const startDragging = useCallback((handleIndex, startClientPos) => {
99
+ if (!containerRef.current)
100
+ return;
101
+ const rect = containerRef.current.getBoundingClientRect();
102
+ const totalDimension = direction === 'horizontal' ? rect.width : rect.height;
103
+ if (totalDimension <= 0)
104
+ return;
105
+ const initialSizes = [...sizes];
106
+ const handlePointerMove = (e) => {
107
+ const currentClientPos = direction === 'horizontal' ? e.clientX : e.clientY;
108
+ let deltaPx = currentClientPos - startClientPos;
109
+ if (snapToGrid) {
110
+ const step = direction === 'horizontal' ? cellWidth : cellHeight;
111
+ deltaPx = Math.round(deltaPx / step) * step;
112
+ }
113
+ const deltaPercent = (deltaPx / totalDimension) * 100;
114
+ const leftIdx = handleIndex;
115
+ const rightIdx = handleIndex + 1;
116
+ if (leftIdx >= initialSizes.length || rightIdx >= initialSizes.length)
117
+ return;
118
+ const leftId = panelIds[leftIdx];
119
+ const rightId = panelIds[rightIdx];
120
+ const leftMin = panelsRef.current.get(leftId)?.minSize || 5;
121
+ const rightMin = panelsRef.current.get(rightId)?.minSize || 5;
122
+ let newLeft = initialSizes[leftIdx] + deltaPercent;
123
+ let newRight = initialSizes[rightIdx] - deltaPercent;
124
+ if (newLeft < leftMin) {
125
+ const diff = leftMin - newLeft;
126
+ newLeft = leftMin;
127
+ newRight -= diff;
128
+ }
129
+ else if (newRight < rightMin) {
130
+ const diff = rightMin - newRight;
131
+ newRight = rightMin;
132
+ newLeft -= diff;
133
+ }
134
+ const nextSizes = [...initialSizes];
135
+ nextSizes[leftIdx] = Math.max(leftMin, newLeft);
136
+ nextSizes[rightIdx] = Math.max(rightMin, newRight);
137
+ setSizes(nextSizes);
138
+ onLayoutRef.current?.(nextSizes);
139
+ };
140
+ const handlePointerUp = () => {
141
+ window.removeEventListener('pointermove', handlePointerMove);
142
+ window.removeEventListener('pointerup', handlePointerUp);
143
+ };
144
+ window.addEventListener('pointermove', handlePointerMove);
145
+ window.addEventListener('pointerup', handlePointerUp);
146
+ }, [direction, snapToGrid, cellWidth, cellHeight, sizes, panelIds]);
147
+ return (_jsx(PanelGroupContext.Provider, { value: {
148
+ direction,
149
+ registerPanel,
150
+ unregisterPanel,
151
+ getPanelSize,
152
+ setPanelSize,
153
+ collapsePanel,
154
+ expandPanel,
155
+ startDragging,
156
+ equalizeSizes,
157
+ }, children: _jsx("div", { ref: containerRef, className: className, style: {
158
+ display: 'flex',
159
+ flexDirection: direction === 'horizontal' ? 'row' : 'column',
160
+ width: '100%',
161
+ height: '100%',
162
+ flex: '1 1 0%',
163
+ overflow: 'hidden',
164
+ ...style,
165
+ }, children: children }) }));
166
+ }
167
+ //# sourceMappingURL=TerminalPanelGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalPanelGroup.js","sourceRoot":"","sources":["../../src/panels/TerminalPanelGroup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface TerminalResizeHandleProps {
3
+ index?: number;
4
+ withHandle?: boolean;
5
+ isCollapsed?: boolean;
6
+ onHandleClick?: (e: React.MouseEvent) => void;
7
+ className?: string;
8
+ style?: React.CSSProperties;
9
+ children?: React.ReactNode;
10
+ }
11
+ export declare function TerminalResizeHandle({ index, withHandle, isCollapsed, onHandleClick, className, style, children, }: TerminalResizeHandleProps): React.JSX.Element;
12
+ //# sourceMappingURL=TerminalResizeHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalResizeHandle.d.ts","sourceRoot":"","sources":["../../src/panels/TerminalResizeHandle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE,yBAAyB,qBA4E3B"}
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { usePanelGroupContext } from './PanelContext.js';
4
+ export function TerminalResizeHandle({ index = 0, withHandle, isCollapsed, onHandleClick, className, style, children, }) {
5
+ const { direction, startDragging, equalizeSizes } = usePanelGroupContext();
6
+ const [isHovered, setIsHovered] = useState(false);
7
+ const handlePointerDown = (e) => {
8
+ e.preventDefault();
9
+ const clientPos = direction === 'horizontal' ? e.clientX : e.clientY;
10
+ startDragging(index, clientPos);
11
+ };
12
+ const handleDoubleClick = () => {
13
+ equalizeSizes();
14
+ };
15
+ const isHorizontal = direction === 'horizontal';
16
+ return (
17
+ // Pointer drag surface. Keyboard panel resizing is not implemented yet
18
+ // (see docs/xterm-parity.md Phase 5); the collapse toggle below stays
19
+ // keyboard-operable, so no focus stop is exposed here.
20
+ // biome-ignore lint/a11y/noStaticElementInteractions: pointer-only drag surface; keyboard resize tracked for Phase 5.
21
+ _jsxs("div", { "data-slot": "resizable-handle", className: className, onPointerDown: handlePointerDown, onDoubleClick: handleDoubleClick, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), style: {
22
+ position: 'relative',
23
+ display: 'flex',
24
+ alignItems: 'center',
25
+ justifyContent: 'center',
26
+ flexShrink: 0,
27
+ zIndex: 20,
28
+ width: isHorizontal ? '3px' : '100%',
29
+ height: isHorizontal ? '100%' : '3px',
30
+ cursor: isHorizontal ? 'col-resize' : 'row-resize',
31
+ backgroundColor: isHovered ? 'rgba(88, 166, 255, 0.7)' : 'rgba(255, 255, 255, 0.08)',
32
+ transition: 'background-color 0.15s ease',
33
+ userSelect: 'none',
34
+ touchAction: 'none',
35
+ ...style,
36
+ }, children: [children, withHandle && (_jsx("button", { type: "button", "aria-label": isCollapsed ? 'Expand panel' : 'Collapse panel', onClick: onHandleClick, style: {
37
+ position: 'absolute',
38
+ zIndex: 30,
39
+ display: 'flex',
40
+ alignItems: 'center',
41
+ justifyContent: 'center',
42
+ width: '12px',
43
+ height: '40px',
44
+ borderRadius: '9999px',
45
+ border: 'none',
46
+ backgroundColor: isHovered ? '#58a6ff' : 'rgba(255, 255, 255, 0.2)',
47
+ color: '#fff',
48
+ fontSize: '9px',
49
+ fontWeight: 'bold',
50
+ cursor: 'pointer',
51
+ userSelect: 'none',
52
+ transition: 'all 0.15s ease',
53
+ padding: 0,
54
+ }, children: isCollapsed !== undefined ? (isCollapsed ? '›' : '‹') : '' }))] }));
55
+ }
56
+ //# sourceMappingURL=TerminalResizeHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalResizeHandle.js","sourceRoot":"","sources":["../../src/panels/TerminalResizeHandle.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./rendererPool.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./rendererPool.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}