@phenx-inc/ctlsurf 0.1.15 → 0.1.16
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/out/renderer/assets/{cssMode-woG3Vtms.js → cssMode-CihsrbZY.js} +3 -3
- package/out/renderer/assets/{freemarker2-DgtqmvCd.js → freemarker2-DFrJ_l05.js} +1 -1
- package/out/renderer/assets/{handlebars-YEqC-zOn.js → handlebars-BZi7_LdH.js} +1 -1
- package/out/renderer/assets/{html-CwvkGxeB.js → html-CdaPU_YJ.js} +1 -1
- package/out/renderer/assets/{htmlMode-DzdyF21q.js → htmlMode-DZnUcBOX.js} +3 -3
- package/out/renderer/assets/{index-CpDga7fF.js → index-CKhIh5ZQ.js} +83 -57
- package/out/renderer/assets/{javascript-Dy9cX9Fu.js → javascript-DvV4owMk.js} +2 -2
- package/out/renderer/assets/{jsonMode-CPhJ_ION.js → jsonMode-DX3yX_PF.js} +3 -3
- package/out/renderer/assets/{liquid-BJdFPWrv.js → liquid-c7QWTywx.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-BMM3SRX4.js → lspLanguageFeatures-Dp-OZOZS.js} +1 -1
- package/out/renderer/assets/{mdx-kg2kuPRK.js → mdx-Bi7NE1tt.js} +1 -1
- package/out/renderer/assets/{python-aIrmxkmH.js → python-BeMAHtzr.js} +1 -1
- package/out/renderer/assets/{razor-DdymcPOc.js → razor-Cfc9e2QR.js} +1 -1
- package/out/renderer/assets/{tsMode-D7kqIJ_o.js → tsMode-CKrhuOxD.js} +1 -1
- package/out/renderer/assets/{typescript-Cq3g-z7h.js → typescript-BEFZ19OD.js} +1 -1
- package/out/renderer/assets/{xml-BuBP5jOc.js → xml-CVdJPpsd.js} +1 -1
- package/out/renderer/assets/{yaml-B-3hWmol.js → yaml-B_Px-4th.js} +1 -1
- package/out/renderer/index.html +1 -1
- package/package.json +1 -1
- package/src/renderer/App.tsx +25 -20
- package/src/renderer/components/PaneLayout.tsx +44 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages } from "./index-
|
|
2
|
-
import { C as CompletionAdapter, H as HoverAdapter, D as DocumentHighlightAdapter, a as DefinitionAdapter, R as ReferenceAdapter, b as DocumentSymbolAdapter, c as RenameAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, e as DiagnosticsAdapter, S as SelectionRangeAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider } from "./lspLanguageFeatures-
|
|
3
|
-
import { h, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages } from "./index-CKhIh5ZQ.js";
|
|
2
|
+
import { C as CompletionAdapter, H as HoverAdapter, D as DocumentHighlightAdapter, a as DefinitionAdapter, R as ReferenceAdapter, b as DocumentSymbolAdapter, c as RenameAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, e as DiagnosticsAdapter, S as SelectionRangeAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider } from "./lspLanguageFeatures-Dp-OZOZS.js";
|
|
3
|
+
import { h, i, j, t, k } from "./lspLanguageFeatures-Dp-OZOZS.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages } from "./index-
|
|
2
|
-
import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-
|
|
3
|
-
import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages } from "./index-CKhIh5ZQ.js";
|
|
2
|
+
import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-Dp-OZOZS.js";
|
|
3
|
+
import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-Dp-OZOZS.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-CihsrbZY.js","./lspLanguageFeatures-Dp-OZOZS.js","./htmlMode-DZnUcBOX.js","./jsonMode-DX3yX_PF.js","./javascript-DvV4owMk.js","./typescript-BEFZ19OD.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function getDefaultExportFromCjs(x) {
|
|
3
3
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
4
4
|
}
|
|
@@ -206492,7 +206492,7 @@ const lessDefaults = new LanguageServiceDefaultsImpl$3(
|
|
|
206492
206492
|
modeConfigurationDefault$2
|
|
206493
206493
|
);
|
|
206494
206494
|
function getMode$3() {
|
|
206495
|
-
return __vitePreload(() => import("./cssMode-
|
|
206495
|
+
return __vitePreload(() => import("./cssMode-CihsrbZY.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
|
|
206496
206496
|
}
|
|
206497
206497
|
languages.onLanguage("less", () => {
|
|
206498
206498
|
getMode$3().then((mode2) => mode2.setupMode(lessDefaults));
|
|
@@ -206597,7 +206597,7 @@ const razorLanguageService = registerHTMLLanguageService(
|
|
|
206597
206597
|
);
|
|
206598
206598
|
const razorDefaults = razorLanguageService.defaults;
|
|
206599
206599
|
function getMode$2() {
|
|
206600
|
-
return __vitePreload(() => import("./htmlMode-
|
|
206600
|
+
return __vitePreload(() => import("./htmlMode-DZnUcBOX.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
|
|
206601
206601
|
}
|
|
206602
206602
|
function registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {
|
|
206603
206603
|
const defaults = new LanguageServiceDefaultsImpl$2(languageId, options, modeConfiguration);
|
|
@@ -206681,7 +206681,7 @@ const jsonDefaults = new LanguageServiceDefaultsImpl$1(
|
|
|
206681
206681
|
);
|
|
206682
206682
|
const getWorker$1 = () => getMode$1().then((mode2) => mode2.getWorker());
|
|
206683
206683
|
function getMode$1() {
|
|
206684
|
-
return __vitePreload(() => import("./jsonMode-
|
|
206684
|
+
return __vitePreload(() => import("./jsonMode-DX3yX_PF.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
|
|
206685
206685
|
}
|
|
206686
206686
|
languages.register({
|
|
206687
206687
|
id: "json",
|
|
@@ -206927,7 +206927,7 @@ const getJavaScriptWorker = () => {
|
|
|
206927
206927
|
return getMode().then((mode) => mode.getJavaScriptWorker());
|
|
206928
206928
|
};
|
|
206929
206929
|
function getMode() {
|
|
206930
|
-
return __vitePreload(() => import("./tsMode-
|
|
206930
|
+
return __vitePreload(() => import("./tsMode-CKrhuOxD.js"), true ? [] : void 0, import.meta.url);
|
|
206931
206931
|
}
|
|
206932
206932
|
languages.onLanguage("typescript", () => {
|
|
206933
206933
|
return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));
|
|
@@ -207122,49 +207122,49 @@ registerLanguage({
|
|
|
207122
207122
|
extensions: [".ftl", ".ftlh", ".ftlx"],
|
|
207123
207123
|
aliases: ["FreeMarker2", "Apache FreeMarker2"],
|
|
207124
207124
|
loader: () => {
|
|
207125
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207125
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
207126
207126
|
}
|
|
207127
207127
|
});
|
|
207128
207128
|
registerLanguage({
|
|
207129
207129
|
id: "freemarker2.tag-angle.interpolation-dollar",
|
|
207130
207130
|
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
|
|
207131
207131
|
loader: () => {
|
|
207132
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207132
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationDollar);
|
|
207133
207133
|
}
|
|
207134
207134
|
});
|
|
207135
207135
|
registerLanguage({
|
|
207136
207136
|
id: "freemarker2.tag-bracket.interpolation-dollar",
|
|
207137
207137
|
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
|
|
207138
207138
|
loader: () => {
|
|
207139
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207139
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationDollar);
|
|
207140
207140
|
}
|
|
207141
207141
|
});
|
|
207142
207142
|
registerLanguage({
|
|
207143
207143
|
id: "freemarker2.tag-angle.interpolation-bracket",
|
|
207144
207144
|
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
|
|
207145
207145
|
loader: () => {
|
|
207146
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207146
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationBracket);
|
|
207147
207147
|
}
|
|
207148
207148
|
});
|
|
207149
207149
|
registerLanguage({
|
|
207150
207150
|
id: "freemarker2.tag-bracket.interpolation-bracket",
|
|
207151
207151
|
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
|
|
207152
207152
|
loader: () => {
|
|
207153
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207153
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationBracket);
|
|
207154
207154
|
}
|
|
207155
207155
|
});
|
|
207156
207156
|
registerLanguage({
|
|
207157
207157
|
id: "freemarker2.tag-auto.interpolation-dollar",
|
|
207158
207158
|
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
|
|
207159
207159
|
loader: () => {
|
|
207160
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207160
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
207161
207161
|
}
|
|
207162
207162
|
});
|
|
207163
207163
|
registerLanguage({
|
|
207164
207164
|
id: "freemarker2.tag-auto.interpolation-bracket",
|
|
207165
207165
|
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
|
|
207166
207166
|
loader: () => {
|
|
207167
|
-
return __vitePreload(() => import("./freemarker2-
|
|
207167
|
+
return __vitePreload(() => import("./freemarker2-DFrJ_l05.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationBracket);
|
|
207168
207168
|
}
|
|
207169
207169
|
});
|
|
207170
207170
|
registerLanguage({
|
|
@@ -207185,7 +207185,7 @@ registerLanguage({
|
|
|
207185
207185
|
extensions: [".handlebars", ".hbs"],
|
|
207186
207186
|
aliases: ["Handlebars", "handlebars", "hbs"],
|
|
207187
207187
|
mimetypes: ["text/x-handlebars-template"],
|
|
207188
|
-
loader: () => __vitePreload(() => import("./handlebars-
|
|
207188
|
+
loader: () => __vitePreload(() => import("./handlebars-BZi7_LdH.js"), true ? [] : void 0, import.meta.url)
|
|
207189
207189
|
});
|
|
207190
207190
|
registerLanguage({
|
|
207191
207191
|
id: "hcl",
|
|
@@ -207198,7 +207198,7 @@ registerLanguage({
|
|
|
207198
207198
|
extensions: [".html", ".htm", ".shtml", ".xhtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm"],
|
|
207199
207199
|
aliases: ["HTML", "htm", "html", "xhtml"],
|
|
207200
207200
|
mimetypes: ["text/html", "text/x-jshtm", "text/template", "text/ng-template"],
|
|
207201
|
-
loader: () => __vitePreload(() => import("./html-
|
|
207201
|
+
loader: () => __vitePreload(() => import("./html-CdaPU_YJ.js"), true ? [] : void 0, import.meta.url)
|
|
207202
207202
|
});
|
|
207203
207203
|
registerLanguage({
|
|
207204
207204
|
id: "ini",
|
|
@@ -207221,7 +207221,7 @@ registerLanguage({
|
|
|
207221
207221
|
filenames: ["jakefile"],
|
|
207222
207222
|
aliases: ["JavaScript", "javascript", "js"],
|
|
207223
207223
|
mimetypes: ["text/javascript"],
|
|
207224
|
-
loader: () => __vitePreload(() => import("./javascript-
|
|
207224
|
+
loader: () => __vitePreload(() => import("./javascript-DvV4owMk.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
|
|
207225
207225
|
});
|
|
207226
207226
|
registerLanguage({
|
|
207227
207227
|
id: "julia",
|
|
@@ -207260,7 +207260,7 @@ registerLanguage({
|
|
|
207260
207260
|
extensions: [".liquid", ".html.liquid"],
|
|
207261
207261
|
aliases: ["Liquid", "liquid"],
|
|
207262
207262
|
mimetypes: ["application/liquid"],
|
|
207263
|
-
loader: () => __vitePreload(() => import("./liquid-
|
|
207263
|
+
loader: () => __vitePreload(() => import("./liquid-c7QWTywx.js"), true ? [] : void 0, import.meta.url)
|
|
207264
207264
|
});
|
|
207265
207265
|
registerLanguage({
|
|
207266
207266
|
id: "m3",
|
|
@@ -207278,7 +207278,7 @@ registerLanguage({
|
|
|
207278
207278
|
id: "mdx",
|
|
207279
207279
|
extensions: [".mdx"],
|
|
207280
207280
|
aliases: ["MDX", "mdx"],
|
|
207281
|
-
loader: () => __vitePreload(() => import("./mdx-
|
|
207281
|
+
loader: () => __vitePreload(() => import("./mdx-Bi7NE1tt.js"), true ? [] : void 0, import.meta.url)
|
|
207282
207282
|
});
|
|
207283
207283
|
registerLanguage({
|
|
207284
207284
|
id: "mips",
|
|
@@ -207377,7 +207377,7 @@ registerLanguage({
|
|
|
207377
207377
|
extensions: [".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi"],
|
|
207378
207378
|
aliases: ["Python", "py"],
|
|
207379
207379
|
firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
|
|
207380
|
-
loader: () => __vitePreload(() => import("./python-
|
|
207380
|
+
loader: () => __vitePreload(() => import("./python-BeMAHtzr.js"), true ? [] : void 0, import.meta.url)
|
|
207381
207381
|
});
|
|
207382
207382
|
registerLanguage({
|
|
207383
207383
|
id: "qsharp",
|
|
@@ -207396,7 +207396,7 @@ registerLanguage({
|
|
|
207396
207396
|
extensions: [".cshtml"],
|
|
207397
207397
|
aliases: ["Razor", "razor"],
|
|
207398
207398
|
mimetypes: ["text/x-cshtml"],
|
|
207399
|
-
loader: () => __vitePreload(() => import("./razor-
|
|
207399
|
+
loader: () => __vitePreload(() => import("./razor-Cfc9e2QR.js"), true ? [] : void 0, import.meta.url)
|
|
207400
207400
|
});
|
|
207401
207401
|
registerLanguage({
|
|
207402
207402
|
id: "redis",
|
|
@@ -207529,7 +207529,7 @@ registerLanguage({
|
|
|
207529
207529
|
aliases: ["TypeScript", "ts", "typescript"],
|
|
207530
207530
|
mimetypes: ["text/typescript"],
|
|
207531
207531
|
loader: () => {
|
|
207532
|
-
return __vitePreload(() => import("./typescript-
|
|
207532
|
+
return __vitePreload(() => import("./typescript-BEFZ19OD.js"), true ? [] : void 0, import.meta.url);
|
|
207533
207533
|
}
|
|
207534
207534
|
});
|
|
207535
207535
|
registerLanguage({
|
|
@@ -207574,14 +207574,14 @@ registerLanguage({
|
|
|
207574
207574
|
firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
|
|
207575
207575
|
aliases: ["XML", "xml"],
|
|
207576
207576
|
mimetypes: ["text/xml", "application/xml", "application/xaml+xml", "application/xml-dtd"],
|
|
207577
|
-
loader: () => __vitePreload(() => import("./xml-
|
|
207577
|
+
loader: () => __vitePreload(() => import("./xml-CVdJPpsd.js"), true ? [] : void 0, import.meta.url)
|
|
207578
207578
|
});
|
|
207579
207579
|
registerLanguage({
|
|
207580
207580
|
id: "yaml",
|
|
207581
207581
|
extensions: [".yaml", ".yml"],
|
|
207582
207582
|
aliases: ["YAML", "yaml", "YML", "yml"],
|
|
207583
207583
|
mimetypes: ["application/x-yaml", "text/x-yaml"],
|
|
207584
|
-
loader: () => __vitePreload(() => import("./yaml-
|
|
207584
|
+
loader: () => __vitePreload(() => import("./yaml-B_Px-4th.js"), true ? [] : void 0, import.meta.url)
|
|
207585
207585
|
});
|
|
207586
207586
|
var __defProp = Object.defineProperty;
|
|
207587
207587
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -211152,7 +211152,7 @@ const DragContext = reactExports.createContext({
|
|
|
211152
211152
|
setDragPaneId: () => {
|
|
211153
211153
|
}
|
|
211154
211154
|
});
|
|
211155
|
-
function PaneLayout({ layout: layout2, panes, onLayoutChange, onToggle }) {
|
|
211155
|
+
function PaneLayout({ layout: layout2, panes, onLayoutChange, onToggle, paneHostPrefix }) {
|
|
211156
211156
|
const [dragPaneId, setDragPaneId] = reactExports.useState(null);
|
|
211157
211157
|
const handleDrop = reactExports.useCallback((targetPaneId, zone) => {
|
|
211158
211158
|
if (!dragPaneId || dragPaneId === targetPaneId) return;
|
|
@@ -211174,11 +211174,12 @@ function PaneLayout({ layout: layout2, panes, onLayoutChange, onToggle }) {
|
|
|
211174
211174
|
onToggle,
|
|
211175
211175
|
onLayoutChange,
|
|
211176
211176
|
parentDirection: null,
|
|
211177
|
-
path: []
|
|
211177
|
+
path: [],
|
|
211178
|
+
paneHostPrefix
|
|
211178
211179
|
}
|
|
211179
211180
|
) }) });
|
|
211180
211181
|
}
|
|
211181
|
-
function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, parentDirection, path }) {
|
|
211182
|
+
function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, parentDirection, path, paneHostPrefix }) {
|
|
211182
211183
|
if (node.type === "leaf") {
|
|
211183
211184
|
const pane = paneMap.get(node.paneId);
|
|
211184
211185
|
if (!pane) return null;
|
|
@@ -211187,7 +211188,8 @@ function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, paren
|
|
|
211187
211188
|
{
|
|
211188
211189
|
pane,
|
|
211189
211190
|
onDrop,
|
|
211190
|
-
onToggle
|
|
211191
|
+
onToggle,
|
|
211192
|
+
paneHostPrefix
|
|
211191
211193
|
}
|
|
211192
211194
|
);
|
|
211193
211195
|
}
|
|
@@ -211199,11 +211201,12 @@ function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, paren
|
|
|
211199
211201
|
onDrop,
|
|
211200
211202
|
onToggle,
|
|
211201
211203
|
onLayoutChange,
|
|
211202
|
-
path
|
|
211204
|
+
path,
|
|
211205
|
+
paneHostPrefix
|
|
211203
211206
|
}
|
|
211204
211207
|
);
|
|
211205
211208
|
}
|
|
211206
|
-
function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path }) {
|
|
211209
|
+
function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path, paneHostPrefix }) {
|
|
211207
211210
|
const containerRef = reactExports.useRef(null);
|
|
211208
211211
|
const draggingDivider = reactExports.useRef(null);
|
|
211209
211212
|
const sizesRef = reactExports.useRef(node.sizes);
|
|
@@ -211288,7 +211291,8 @@ function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path
|
|
|
211288
211291
|
onLayoutChange({ ...node, children: newChildren });
|
|
211289
211292
|
},
|
|
211290
211293
|
parentDirection: node.direction,
|
|
211291
|
-
path: [...path, i2]
|
|
211294
|
+
path: [...path, i2],
|
|
211295
|
+
paneHostPrefix
|
|
211292
211296
|
}
|
|
211293
211297
|
)
|
|
211294
211298
|
}
|
|
@@ -211310,10 +211314,34 @@ function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path
|
|
|
211310
211314
|
}
|
|
211311
211315
|
);
|
|
211312
211316
|
}
|
|
211313
|
-
function LeafPane({ pane, onDrop, onToggle }) {
|
|
211317
|
+
function LeafPane({ pane, onDrop, onToggle, paneHostPrefix }) {
|
|
211314
211318
|
const { dragPaneId, setDragPaneId } = reactExports.useContext(DragContext);
|
|
211315
211319
|
const [hoverZone, setHoverZone] = reactExports.useState(null);
|
|
211316
211320
|
const paneRef = reactExports.useRef(null);
|
|
211321
|
+
const contentRef = reactExports.useRef(null);
|
|
211322
|
+
reactExports.useEffect(() => {
|
|
211323
|
+
if (!paneHostPrefix || !contentRef.current) return;
|
|
211324
|
+
const hostEl = document.getElementById(`${paneHostPrefix}${pane.id}`);
|
|
211325
|
+
if (!hostEl) return;
|
|
211326
|
+
hostEl.style.position = "";
|
|
211327
|
+
hostEl.style.width = "100%";
|
|
211328
|
+
hostEl.style.height = "100%";
|
|
211329
|
+
hostEl.style.overflow = "";
|
|
211330
|
+
hostEl.style.opacity = "1";
|
|
211331
|
+
hostEl.style.pointerEvents = "";
|
|
211332
|
+
contentRef.current.appendChild(hostEl);
|
|
211333
|
+
return () => {
|
|
211334
|
+
if (hostEl.parentElement === contentRef.current) {
|
|
211335
|
+
document.body.appendChild(hostEl);
|
|
211336
|
+
hostEl.style.position = "absolute";
|
|
211337
|
+
hostEl.style.width = "1px";
|
|
211338
|
+
hostEl.style.height = "1px";
|
|
211339
|
+
hostEl.style.overflow = "hidden";
|
|
211340
|
+
hostEl.style.opacity = "0";
|
|
211341
|
+
hostEl.style.pointerEvents = "none";
|
|
211342
|
+
}
|
|
211343
|
+
};
|
|
211344
|
+
}, [pane.id, paneHostPrefix]);
|
|
211317
211345
|
const isDragging = dragPaneId === pane.id;
|
|
211318
211346
|
const isDropTarget = dragPaneId !== null && dragPaneId !== pane.id;
|
|
211319
211347
|
const computeZone = reactExports.useCallback((e) => {
|
|
@@ -211359,7 +211387,7 @@ function LeafPane({ pane, onDrop, onToggle }) {
|
|
|
211359
211387
|
]
|
|
211360
211388
|
}
|
|
211361
211389
|
),
|
|
211362
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "leaf-pane-content", children: pane.content }),
|
|
211390
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "leaf-pane-content", ref: contentRef, children: !paneHostPrefix && pane.content }),
|
|
211363
211391
|
isDropTarget && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
211364
211392
|
"div",
|
|
211365
211393
|
{
|
|
@@ -211613,6 +211641,14 @@ const DEFAULT_LAYOUT = {
|
|
|
211613
211641
|
sizes: [50, 50]
|
|
211614
211642
|
};
|
|
211615
211643
|
const ALL_PANE_IDS = ["editor", "terminal", "ctlsurf"];
|
|
211644
|
+
const offscreenStyle = {
|
|
211645
|
+
position: "absolute",
|
|
211646
|
+
width: "1px",
|
|
211647
|
+
height: "1px",
|
|
211648
|
+
overflow: "hidden",
|
|
211649
|
+
opacity: 0,
|
|
211650
|
+
pointerEvents: "none"
|
|
211651
|
+
};
|
|
211616
211652
|
function App() {
|
|
211617
211653
|
const [agents, setAgents] = reactExports.useState([]);
|
|
211618
211654
|
const [selectedAgent, setSelectedAgent] = reactExports.useState(null);
|
|
@@ -211745,15 +211781,14 @@ function App() {
|
|
|
211745
211781
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
211746
211782
|
}, [togglePane]);
|
|
211747
211783
|
const panes = [
|
|
211748
|
-
{ id: "editor", label: "Editor", content:
|
|
211749
|
-
{
|
|
211750
|
-
|
|
211751
|
-
label: "Terminal",
|
|
211752
|
-
content: /* @__PURE__ */ jsxRuntimeExports.jsx(TerminalPanel, { agent: selectedAgent, onSpawn: handleSpawn, onExit: handleExit })
|
|
211753
|
-
},
|
|
211754
|
-
{ id: "ctlsurf", label: "ctlsurf", content: /* @__PURE__ */ jsxRuntimeExports.jsx(CtlsurfPanel, {}) }
|
|
211784
|
+
{ id: "editor", label: "Editor", content: null },
|
|
211785
|
+
{ id: "terminal", label: "Terminal", content: null },
|
|
211786
|
+
{ id: "ctlsurf", label: "ctlsurf", content: null }
|
|
211755
211787
|
];
|
|
211756
211788
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "app", children: [
|
|
211789
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { id: "pane-host-editor", style: visiblePaneIds.includes("editor") ? void 0 : offscreenStyle, children: /* @__PURE__ */ jsxRuntimeExports.jsx(EditorPanel, { cwd: cwd2 }) }),
|
|
211790
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { id: "pane-host-terminal", style: visiblePaneIds.includes("terminal") ? void 0 : offscreenStyle, children: /* @__PURE__ */ jsxRuntimeExports.jsx(TerminalPanel, { agent: selectedAgent, onSpawn: handleSpawn, onExit: handleExit }) }),
|
|
211791
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { id: "pane-host-ctlsurf", style: visiblePaneIds.includes("ctlsurf") ? void 0 : offscreenStyle, children: /* @__PURE__ */ jsxRuntimeExports.jsx(CtlsurfPanel, {}) }),
|
|
211757
211792
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "titlebar", children: [
|
|
211758
211793
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "titlebar-title", children: "ctlsurf-worker" }),
|
|
211759
211794
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "titlebar-controls", children: [
|
|
@@ -211782,25 +211817,16 @@ function App() {
|
|
|
211782
211817
|
))
|
|
211783
211818
|
] })
|
|
211784
211819
|
] }),
|
|
211785
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
211786
|
-
|
|
211787
|
-
|
|
211788
|
-
|
|
211789
|
-
|
|
211790
|
-
|
|
211791
|
-
|
|
211792
|
-
|
|
211793
|
-
|
|
211794
|
-
|
|
211795
|
-
panes.filter((p) => !visiblePaneIds.includes(p.id)).map((p) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: {
|
|
211796
|
-
position: "absolute",
|
|
211797
|
-
width: "1px",
|
|
211798
|
-
height: "1px",
|
|
211799
|
-
overflow: "hidden",
|
|
211800
|
-
opacity: 0,
|
|
211801
|
-
pointerEvents: "none"
|
|
211802
|
-
}, children: p.content }, p.id))
|
|
211803
|
-
] }),
|
|
211820
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "main-content", children: visiblePaneIds.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "multi-split-empty", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "All panes hidden. Use the titlebar buttons to show a pane." }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
211821
|
+
PaneLayout,
|
|
211822
|
+
{
|
|
211823
|
+
layout: layout2,
|
|
211824
|
+
panes: panes.filter((p) => visiblePaneIds.includes(p.id)),
|
|
211825
|
+
onLayoutChange: setLayout,
|
|
211826
|
+
onToggle: togglePane,
|
|
211827
|
+
paneHostPrefix: "pane-host-"
|
|
211828
|
+
}
|
|
211829
|
+
) }),
|
|
211804
211830
|
/* @__PURE__ */ jsxRuntimeExports.jsx(StatusBar, { wsStatus, cwd: cwd2, onChangeCwd: handleChangeCwd }),
|
|
211805
211831
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SettingsDialog, { open: showSettings, onClose: () => setShowSettings(false) }),
|
|
211806
211832
|
showAgentPicker && agents.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { conf as conf$1, language as language$1 } from "./typescript-
|
|
2
|
-
import "./index-
|
|
1
|
+
import { conf as conf$1, language as language$1 } from "./typescript-BEFZ19OD.js";
|
|
2
|
+
import "./index-CKhIh5ZQ.js";
|
|
3
3
|
const conf = conf$1;
|
|
4
4
|
const language = {
|
|
5
5
|
// Set defaultToken to invalid to see what you do not tokenize yet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages, e as editor } from "./index-
|
|
2
|
-
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-
|
|
3
|
-
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages, e as editor } from "./index-CKhIh5ZQ.js";
|
|
2
|
+
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-Dp-OZOZS.js";
|
|
3
|
+
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-Dp-OZOZS.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
package/out/renderer/assets/{lspLanguageFeatures-BMM3SRX4.js → lspLanguageFeatures-Dp-OZOZS.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-
|
|
1
|
+
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-CKhIh5ZQ.js";
|
|
2
2
|
var DocumentUri;
|
|
3
3
|
(function(DocumentUri2) {
|
|
4
4
|
function is(value) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createWebWorker, e as editor, U as Uri, a as MarkerTag, M as MarkerSeverity, l as languages, t as typescriptDefaults, R as Range } from "./index-
|
|
1
|
+
import { c as createWebWorker, e as editor, U as Uri, a as MarkerTag, M as MarkerSeverity, l as languages, t as typescriptDefaults, R as Range } from "./index-CKhIh5ZQ.js";
|
|
2
2
|
class WorkerManager {
|
|
3
3
|
constructor(_modeId, _defaults) {
|
|
4
4
|
this._modeId = _modeId;
|
package/out/renderer/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>ctlsurf-worker</title>
|
|
7
|
-
<script type="module" crossorigin src="./assets/index-
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-CKhIh5ZQ.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="./assets/index-DK9wLFFm.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phenx-inc/ctlsurf",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Agent-agnostic terminal and desktop app for ctlsurf — run Claude Code, Codex, or any coding agent with live session logging and remote control",
|
|
5
5
|
"main": "out/main/index.js",
|
|
6
6
|
"bin": {
|
package/src/renderer/App.tsx
CHANGED
|
@@ -72,6 +72,15 @@ const DEFAULT_LAYOUT: LayoutNode = {
|
|
|
72
72
|
|
|
73
73
|
const ALL_PANE_IDS = ['editor', 'terminal', 'ctlsurf']
|
|
74
74
|
|
|
75
|
+
const offscreenStyle: React.CSSProperties = {
|
|
76
|
+
position: 'absolute',
|
|
77
|
+
width: '1px',
|
|
78
|
+
height: '1px',
|
|
79
|
+
overflow: 'hidden',
|
|
80
|
+
opacity: 0,
|
|
81
|
+
pointerEvents: 'none',
|
|
82
|
+
}
|
|
83
|
+
|
|
75
84
|
export default function App() {
|
|
76
85
|
const [agents, setAgents] = useState<AgentConfig[]>([])
|
|
77
86
|
const [selectedAgent, setSelectedAgent] = useState<AgentConfig | null>(null)
|
|
@@ -217,19 +226,26 @@ export default function App() {
|
|
|
217
226
|
return () => window.removeEventListener('keydown', handleKeyDown)
|
|
218
227
|
}, [togglePane])
|
|
219
228
|
|
|
220
|
-
//
|
|
229
|
+
// Pane definitions — content is rendered via portals to preserve React tree position
|
|
221
230
|
const panes: PaneContent[] = [
|
|
222
|
-
{ id: 'editor', label: 'Editor', content:
|
|
223
|
-
{
|
|
224
|
-
|
|
225
|
-
label: 'Terminal',
|
|
226
|
-
content: <TerminalPanel agent={selectedAgent} onSpawn={handleSpawn} onExit={handleExit} />,
|
|
227
|
-
},
|
|
228
|
-
{ id: 'ctlsurf', label: 'ctlsurf', content: <CtlsurfPanel /> },
|
|
231
|
+
{ id: 'editor', label: 'Editor', content: null },
|
|
232
|
+
{ id: 'terminal', label: 'Terminal', content: null },
|
|
233
|
+
{ id: 'ctlsurf', label: 'ctlsurf', content: null },
|
|
229
234
|
]
|
|
230
235
|
|
|
231
236
|
return (
|
|
232
237
|
<div className="app">
|
|
238
|
+
{/* Persistent component instances — never unmounted, positioned by portal targets */}
|
|
239
|
+
<div id="pane-host-editor" style={visiblePaneIds.includes('editor') ? undefined : offscreenStyle}>
|
|
240
|
+
<EditorPanel cwd={cwd} />
|
|
241
|
+
</div>
|
|
242
|
+
<div id="pane-host-terminal" style={visiblePaneIds.includes('terminal') ? undefined : offscreenStyle}>
|
|
243
|
+
<TerminalPanel agent={selectedAgent} onSpawn={handleSpawn} onExit={handleExit} />
|
|
244
|
+
</div>
|
|
245
|
+
<div id="pane-host-ctlsurf" style={visiblePaneIds.includes('ctlsurf') ? undefined : offscreenStyle}>
|
|
246
|
+
<CtlsurfPanel />
|
|
247
|
+
</div>
|
|
248
|
+
|
|
233
249
|
<div className="titlebar">
|
|
234
250
|
<span className="titlebar-title">ctlsurf-worker</span>
|
|
235
251
|
<div className="titlebar-controls">
|
|
@@ -272,20 +288,9 @@ export default function App() {
|
|
|
272
288
|
panes={panes.filter(p => visiblePaneIds.includes(p.id))}
|
|
273
289
|
onLayoutChange={setLayout}
|
|
274
290
|
onToggle={togglePane}
|
|
291
|
+
paneHostPrefix="pane-host-"
|
|
275
292
|
/>
|
|
276
293
|
)}
|
|
277
|
-
{panes.filter(p => !visiblePaneIds.includes(p.id)).map(p => (
|
|
278
|
-
<div key={p.id} style={{
|
|
279
|
-
position: 'absolute',
|
|
280
|
-
width: '1px',
|
|
281
|
-
height: '1px',
|
|
282
|
-
overflow: 'hidden',
|
|
283
|
-
opacity: 0,
|
|
284
|
-
pointerEvents: 'none',
|
|
285
|
-
}}>
|
|
286
|
-
{p.content}
|
|
287
|
-
</div>
|
|
288
|
-
))}
|
|
289
294
|
</div>
|
|
290
295
|
|
|
291
296
|
<StatusBar wsStatus={wsStatus} cwd={cwd} onChangeCwd={handleChangeCwd} />
|
|
@@ -116,9 +116,10 @@ interface PaneLayoutProps {
|
|
|
116
116
|
panes: PaneContent[]
|
|
117
117
|
onLayoutChange: (layout: LayoutNode) => void
|
|
118
118
|
onToggle: (id: string) => void
|
|
119
|
+
paneHostPrefix?: string
|
|
119
120
|
}
|
|
120
121
|
|
|
121
|
-
export function PaneLayout({ layout, panes, onLayoutChange, onToggle }: PaneLayoutProps) {
|
|
122
|
+
export function PaneLayout({ layout, panes, onLayoutChange, onToggle, paneHostPrefix }: PaneLayoutProps) {
|
|
122
123
|
const [dragPaneId, setDragPaneId] = useState<string | null>(null)
|
|
123
124
|
|
|
124
125
|
const handleDrop = useCallback((targetPaneId: string, zone: DropZone) => {
|
|
@@ -150,6 +151,7 @@ export function PaneLayout({ layout, panes, onLayoutChange, onToggle }: PaneLayo
|
|
|
150
151
|
onLayoutChange={onLayoutChange}
|
|
151
152
|
parentDirection={null}
|
|
152
153
|
path={[]}
|
|
154
|
+
paneHostPrefix={paneHostPrefix}
|
|
153
155
|
/>
|
|
154
156
|
</div>
|
|
155
157
|
</DragContext.Provider>
|
|
@@ -166,9 +168,10 @@ interface LayoutRendererProps {
|
|
|
166
168
|
onLayoutChange: (layout: LayoutNode) => void
|
|
167
169
|
parentDirection: SplitDirection | null
|
|
168
170
|
path: number[]
|
|
171
|
+
paneHostPrefix?: string
|
|
169
172
|
}
|
|
170
173
|
|
|
171
|
-
function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, parentDirection, path }: LayoutRendererProps) {
|
|
174
|
+
function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, parentDirection, path, paneHostPrefix }: LayoutRendererProps) {
|
|
172
175
|
if (node.type === 'leaf') {
|
|
173
176
|
const pane = paneMap.get(node.paneId)
|
|
174
177
|
if (!pane) return null
|
|
@@ -177,6 +180,7 @@ function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, paren
|
|
|
177
180
|
pane={pane}
|
|
178
181
|
onDrop={onDrop}
|
|
179
182
|
onToggle={onToggle}
|
|
183
|
+
paneHostPrefix={paneHostPrefix}
|
|
180
184
|
/>
|
|
181
185
|
)
|
|
182
186
|
}
|
|
@@ -189,6 +193,7 @@ function LayoutRenderer({ node, paneMap, onDrop, onToggle, onLayoutChange, paren
|
|
|
189
193
|
onToggle={onToggle}
|
|
190
194
|
onLayoutChange={onLayoutChange}
|
|
191
195
|
path={path}
|
|
196
|
+
paneHostPrefix={paneHostPrefix}
|
|
192
197
|
/>
|
|
193
198
|
)
|
|
194
199
|
}
|
|
@@ -202,9 +207,10 @@ interface SplitContainerProps {
|
|
|
202
207
|
onToggle: (id: string) => void
|
|
203
208
|
onLayoutChange: (layout: LayoutNode) => void
|
|
204
209
|
path: number[]
|
|
210
|
+
paneHostPrefix?: string
|
|
205
211
|
}
|
|
206
212
|
|
|
207
|
-
function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path }: SplitContainerProps) {
|
|
213
|
+
function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path, paneHostPrefix }: SplitContainerProps) {
|
|
208
214
|
const containerRef = useRef<HTMLDivElement>(null)
|
|
209
215
|
const draggingDivider = useRef<number | null>(null)
|
|
210
216
|
const sizesRef = useRef(node.sizes)
|
|
@@ -306,6 +312,7 @@ function SplitContainer({ node, paneMap, onDrop, onToggle, onLayoutChange, path
|
|
|
306
312
|
}}
|
|
307
313
|
parentDirection={node.direction}
|
|
308
314
|
path={[...path, i]}
|
|
315
|
+
paneHostPrefix={paneHostPrefix}
|
|
309
316
|
/>
|
|
310
317
|
</div>
|
|
311
318
|
{i < node.children.length - 1 && (
|
|
@@ -332,12 +339,43 @@ interface LeafPaneProps {
|
|
|
332
339
|
pane: PaneContent
|
|
333
340
|
onDrop: (targetPaneId: string, zone: DropZone) => void
|
|
334
341
|
onToggle: (id: string) => void
|
|
342
|
+
paneHostPrefix?: string
|
|
335
343
|
}
|
|
336
344
|
|
|
337
|
-
function LeafPane({ pane, onDrop, onToggle }: LeafPaneProps) {
|
|
345
|
+
function LeafPane({ pane, onDrop, onToggle, paneHostPrefix }: LeafPaneProps) {
|
|
338
346
|
const { dragPaneId, setDragPaneId } = useContext(DragContext)
|
|
339
347
|
const [hoverZone, setHoverZone] = useState<DropZone | null>(null)
|
|
340
348
|
const paneRef = useRef<HTMLDivElement>(null)
|
|
349
|
+
const contentRef = useRef<HTMLDivElement>(null)
|
|
350
|
+
|
|
351
|
+
// Reparent the persistent host element into this leaf's content area
|
|
352
|
+
useEffect(() => {
|
|
353
|
+
if (!paneHostPrefix || !contentRef.current) return
|
|
354
|
+
const hostEl = document.getElementById(`${paneHostPrefix}${pane.id}`)
|
|
355
|
+
if (!hostEl) return
|
|
356
|
+
|
|
357
|
+
// Move host element into this container
|
|
358
|
+
hostEl.style.position = ''
|
|
359
|
+
hostEl.style.width = '100%'
|
|
360
|
+
hostEl.style.height = '100%'
|
|
361
|
+
hostEl.style.overflow = ''
|
|
362
|
+
hostEl.style.opacity = '1'
|
|
363
|
+
hostEl.style.pointerEvents = ''
|
|
364
|
+
contentRef.current.appendChild(hostEl)
|
|
365
|
+
|
|
366
|
+
return () => {
|
|
367
|
+
// When this leaf unmounts, move host back to offscreen
|
|
368
|
+
if (hostEl.parentElement === contentRef.current) {
|
|
369
|
+
document.body.appendChild(hostEl)
|
|
370
|
+
hostEl.style.position = 'absolute'
|
|
371
|
+
hostEl.style.width = '1px'
|
|
372
|
+
hostEl.style.height = '1px'
|
|
373
|
+
hostEl.style.overflow = 'hidden'
|
|
374
|
+
hostEl.style.opacity = '0'
|
|
375
|
+
hostEl.style.pointerEvents = 'none'
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}, [pane.id, paneHostPrefix])
|
|
341
379
|
|
|
342
380
|
const isDragging = dragPaneId === pane.id
|
|
343
381
|
const isDropTarget = dragPaneId !== null && dragPaneId !== pane.id
|
|
@@ -385,8 +423,8 @@ function LeafPane({ pane, onDrop, onToggle }: LeafPaneProps) {
|
|
|
385
423
|
</div>
|
|
386
424
|
|
|
387
425
|
{/* Content */}
|
|
388
|
-
<div className="leaf-pane-content">
|
|
389
|
-
{pane.content}
|
|
426
|
+
<div className="leaf-pane-content" ref={contentRef}>
|
|
427
|
+
{!paneHostPrefix && pane.content}
|
|
390
428
|
</div>
|
|
391
429
|
|
|
392
430
|
{/* Drop zone overlay (only visible when another pane is being dragged) */}
|