@aptre/flex-layout 0.6.0 → 0.6.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.
- package/dist/index.mjs +368 -274
- package/dist/view/BorderTab.d.ts +1 -2
- package/dist/view/Icons.d.ts +6 -7
- package/dist/view/Layout.d.ts +24 -24
- package/dist/view/OptimizedLayout.d.ts +3 -3
- package/dist/view/SizeTracker.d.ts +3 -3
- package/dist/view/Utils.d.ts +2 -2
- package/package.json +1 -3
- package/tsconfig.json +1 -1
- package/typedoc/classes/Layout.html +16 -16
- package/typedoc/types/DragRectRenderCallback.html +1 -1
- package/typedoc/types/NodeMouseEvent.html +1 -1
- package/typedoc/types/ShowOverflowMenuCallback.html +1 -1
- package/typedoc/types/TabSetPlaceHolderCallback.html +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/view/Layout.tsx
|
|
2
|
-
import
|
|
2
|
+
import { Component as Component2, createRef } from "react";
|
|
3
3
|
import { createPortal as createPortal2 } from "react-dom";
|
|
4
4
|
import { createRoot } from "react-dom/client";
|
|
5
5
|
|
|
@@ -2953,13 +2953,10 @@ var BorderNode = class _BorderNode extends Node {
|
|
|
2953
2953
|
};
|
|
2954
2954
|
|
|
2955
2955
|
// src/view/BorderTab.tsx
|
|
2956
|
-
import
|
|
2956
|
+
import { useLayoutEffect, useRef as useRef2 } from "react";
|
|
2957
2957
|
|
|
2958
2958
|
// src/view/Splitter.tsx
|
|
2959
|
-
import
|
|
2960
|
-
|
|
2961
|
-
// src/view/Utils.tsx
|
|
2962
|
-
import * as React from "react";
|
|
2959
|
+
import { useEffect, useRef, useState } from "react";
|
|
2963
2960
|
|
|
2964
2961
|
// src/model/ICloseType.ts
|
|
2965
2962
|
var ICloseType = /* @__PURE__ */ ((ICloseType2) => {
|
|
@@ -2970,6 +2967,7 @@ var ICloseType = /* @__PURE__ */ ((ICloseType2) => {
|
|
|
2970
2967
|
})(ICloseType || {});
|
|
2971
2968
|
|
|
2972
2969
|
// src/view/Utils.tsx
|
|
2970
|
+
import { jsx } from "react/jsx-runtime";
|
|
2973
2971
|
function isDesktop() {
|
|
2974
2972
|
const desktop = typeof window !== "undefined" && window.matchMedia && window.matchMedia("(hover: hover) and (pointer: fine)").matches;
|
|
2975
2973
|
return desktop;
|
|
@@ -2983,9 +2981,9 @@ function getRenderStateEx(layout, node, iconAngle) {
|
|
|
2983
2981
|
}
|
|
2984
2982
|
if (leadingContent === void 0 && node.getIcon() !== void 0) {
|
|
2985
2983
|
if (iconAngle !== 0) {
|
|
2986
|
-
leadingContent = /* @__PURE__ */
|
|
2984
|
+
leadingContent = /* @__PURE__ */ jsx("img", { style: { width: "1em", height: "1em", transform: "rotate(" + iconAngle + "deg)" }, src: node.getIcon(), alt: "leadingContent" });
|
|
2987
2985
|
} else {
|
|
2988
|
-
leadingContent = /* @__PURE__ */
|
|
2986
|
+
leadingContent = /* @__PURE__ */ jsx("img", { style: { width: "1em", height: "1em" }, src: node.getIcon(), alt: "leadingContent" });
|
|
2989
2987
|
}
|
|
2990
2988
|
}
|
|
2991
2989
|
const buttons = [];
|
|
@@ -3050,23 +3048,24 @@ function isTabClosable(node, selected) {
|
|
|
3050
3048
|
}
|
|
3051
3049
|
|
|
3052
3050
|
// src/view/Splitter.tsx
|
|
3051
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
3053
3052
|
var Splitter = (props) => {
|
|
3054
3053
|
const { layout, node, index, horizontal } = props;
|
|
3055
|
-
const [dragging, setDragging] =
|
|
3056
|
-
const selfRef =
|
|
3057
|
-
const extendedRef =
|
|
3058
|
-
const pBounds =
|
|
3059
|
-
const outlineDiv =
|
|
3060
|
-
const handleDiv =
|
|
3061
|
-
const dragStartX =
|
|
3062
|
-
const dragStartY =
|
|
3063
|
-
const initalSizes =
|
|
3054
|
+
const [dragging, setDragging] = useState(false);
|
|
3055
|
+
const selfRef = useRef(null);
|
|
3056
|
+
const extendedRef = useRef(null);
|
|
3057
|
+
const pBounds = useRef([]);
|
|
3058
|
+
const outlineDiv = useRef(void 0);
|
|
3059
|
+
const handleDiv = useRef(void 0);
|
|
3060
|
+
const dragStartX = useRef(0);
|
|
3061
|
+
const dragStartY = useRef(0);
|
|
3062
|
+
const initalSizes = useRef({ initialSizes: [], sum: 0, startPosition: 0 });
|
|
3064
3063
|
const size = node.getModel().getSplitterSize();
|
|
3065
3064
|
let extra = node.getModel().getSplitterExtra();
|
|
3066
3065
|
if (!isDesktop()) {
|
|
3067
3066
|
extra = Math.max(30, extra + size) - size;
|
|
3068
3067
|
}
|
|
3069
|
-
|
|
3068
|
+
useEffect(() => {
|
|
3070
3069
|
selfRef.current?.addEventListener("touchstart", onTouchStart, { passive: false });
|
|
3071
3070
|
extendedRef.current?.addEventListener("touchstart", onTouchStart, { passive: false });
|
|
3072
3071
|
return () => {
|
|
@@ -3200,10 +3199,10 @@ var Splitter = (props) => {
|
|
|
3200
3199
|
}
|
|
3201
3200
|
let handle;
|
|
3202
3201
|
if (!dragging && node.getModel().isSplitterEnableHandle()) {
|
|
3203
|
-
handle = /* @__PURE__ */
|
|
3202
|
+
handle = /* @__PURE__ */ jsx2("div", { className: cm("flexlayout__splitter_handle" /* FLEXLAYOUT__SPLITTER_HANDLE */) + " " + (horizontal ? cm("flexlayout__splitter_handle_horz" /* FLEXLAYOUT__SPLITTER_HANDLE_HORZ */) : cm("flexlayout__splitter_handle_vert" /* FLEXLAYOUT__SPLITTER_HANDLE_VERT */)) });
|
|
3204
3203
|
}
|
|
3205
3204
|
if (extra === 0) {
|
|
3206
|
-
return /* @__PURE__ */
|
|
3205
|
+
return /* @__PURE__ */ jsx2("div", { className, style: style2, ref: selfRef, "data-layout-path": node.getPath() + "/s" + (index - 1), onPointerDown, children: handle });
|
|
3207
3206
|
} else {
|
|
3208
3207
|
const style22 = {};
|
|
3209
3208
|
if (node.getOrientation() === Orientation.HORZ) {
|
|
@@ -3216,16 +3215,17 @@ var Splitter = (props) => {
|
|
|
3216
3215
|
style22.cursor = "ns-resize";
|
|
3217
3216
|
}
|
|
3218
3217
|
const className2 = cm("flexlayout__splitter_extra" /* FLEXLAYOUT__SPLITTER_EXTRA */);
|
|
3219
|
-
return /* @__PURE__ */
|
|
3218
|
+
return /* @__PURE__ */ jsx2("div", { className, style: style2, ref: selfRef, "data-layout-path": node.getPath() + "/s" + (index - 1), onPointerDown, children: /* @__PURE__ */ jsx2("div", { style: style22, ref: extendedRef, className: className2, onPointerDown }) });
|
|
3220
3219
|
}
|
|
3221
3220
|
};
|
|
3222
3221
|
|
|
3223
3222
|
// src/view/BorderTab.tsx
|
|
3223
|
+
import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
3224
3224
|
function BorderTab(props) {
|
|
3225
3225
|
const { layout, border, show } = props;
|
|
3226
|
-
const selfRef =
|
|
3227
|
-
const isFirstRender =
|
|
3228
|
-
|
|
3226
|
+
const selfRef = useRef2(null);
|
|
3227
|
+
const isFirstRender = useRef2(true);
|
|
3228
|
+
useLayoutEffect(() => {
|
|
3229
3229
|
const outerRect = layout.getBoundingClientRect(selfRef.current);
|
|
3230
3230
|
const contentRect = Rect.getContentRect(selfRef.current).relativeTo(layout.getDomRect());
|
|
3231
3231
|
if (outerRect.width > 0) {
|
|
@@ -3254,21 +3254,28 @@ function BorderTab(props) {
|
|
|
3254
3254
|
style2.display = show ? "flex" : "none";
|
|
3255
3255
|
const className = layout.getClassName("flexlayout__border_tab_contents" /* FLEXLAYOUT__BORDER_TAB_CONTENTS */);
|
|
3256
3256
|
if (border.getLocation() === DockLocation.LEFT || border.getLocation() === DockLocation.TOP) {
|
|
3257
|
-
return /* @__PURE__ */
|
|
3257
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3258
|
+
/* @__PURE__ */ jsx3("div", { ref: selfRef, style: style2, className }),
|
|
3259
|
+
show && /* @__PURE__ */ jsx3(Splitter, { layout, node: border, index: 0, horizontal })
|
|
3260
|
+
] });
|
|
3258
3261
|
} else {
|
|
3259
|
-
return /* @__PURE__ */
|
|
3262
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3263
|
+
show && /* @__PURE__ */ jsx3(Splitter, { layout, node: border, index: 0, horizontal }),
|
|
3264
|
+
/* @__PURE__ */ jsx3("div", { ref: selfRef, style: style2, className })
|
|
3265
|
+
] });
|
|
3260
3266
|
}
|
|
3261
3267
|
}
|
|
3262
3268
|
|
|
3263
3269
|
// src/view/BorderTabSet.tsx
|
|
3264
|
-
import
|
|
3270
|
+
import { useLayoutEffect as useLayoutEffect4, useRef as useRef5 } from "react";
|
|
3265
3271
|
|
|
3266
3272
|
// src/view/BorderButton.tsx
|
|
3267
|
-
import
|
|
3273
|
+
import { useLayoutEffect as useLayoutEffect2, useRef as useRef3 } from "react";
|
|
3274
|
+
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
3268
3275
|
var BorderButton = (props) => {
|
|
3269
3276
|
const { layout, node, selected, border, icons, path } = props;
|
|
3270
|
-
const selfRef =
|
|
3271
|
-
const contentRef =
|
|
3277
|
+
const selfRef = useRef3(null);
|
|
3278
|
+
const contentRef = useRef3(null);
|
|
3272
3279
|
const onDragStart = (event) => {
|
|
3273
3280
|
if (node.isEnableDrag()) {
|
|
3274
3281
|
event.stopPropagation();
|
|
@@ -3308,7 +3315,7 @@ var BorderButton = (props) => {
|
|
|
3308
3315
|
const onClosePointerDown = (event) => {
|
|
3309
3316
|
event.stopPropagation();
|
|
3310
3317
|
};
|
|
3311
|
-
|
|
3318
|
+
useLayoutEffect2(() => {
|
|
3312
3319
|
node.setTabRect(layout.getBoundingClientRect(selfRef.current));
|
|
3313
3320
|
if (layout.getEditingTab() === node) {
|
|
3314
3321
|
contentRef.current.select();
|
|
@@ -3344,10 +3351,10 @@ var BorderButton = (props) => {
|
|
|
3344
3351
|
}
|
|
3345
3352
|
}
|
|
3346
3353
|
const renderState = getRenderStateEx(layout, node, iconAngle);
|
|
3347
|
-
let content = renderState.content ? /* @__PURE__ */
|
|
3348
|
-
const leading = renderState.leading ? /* @__PURE__ */
|
|
3354
|
+
let content = renderState.content ? /* @__PURE__ */ jsx4("div", { className: cm("flexlayout__border_button_content" /* FLEXLAYOUT__BORDER_BUTTON_CONTENT */), children: renderState.content }) : null;
|
|
3355
|
+
const leading = renderState.leading ? /* @__PURE__ */ jsx4("div", { className: cm("flexlayout__border_button_leading" /* FLEXLAYOUT__BORDER_BUTTON_LEADING */), children: renderState.leading }) : null;
|
|
3349
3356
|
if (layout.getEditingTab() === node) {
|
|
3350
|
-
content = /* @__PURE__ */
|
|
3357
|
+
content = /* @__PURE__ */ jsx4(
|
|
3351
3358
|
"input",
|
|
3352
3359
|
{
|
|
3353
3360
|
ref: contentRef,
|
|
@@ -3364,21 +3371,21 @@ var BorderButton = (props) => {
|
|
|
3364
3371
|
if (node.isEnableClose()) {
|
|
3365
3372
|
const closeTitle = layout.i18nName("Close" /* Close_Tab */);
|
|
3366
3373
|
renderState.buttons.push(
|
|
3367
|
-
/* @__PURE__ */
|
|
3374
|
+
/* @__PURE__ */ jsx4(
|
|
3368
3375
|
"div",
|
|
3369
3376
|
{
|
|
3370
|
-
key: "close",
|
|
3371
3377
|
"data-layout-path": path + "/button/close",
|
|
3372
3378
|
title: closeTitle,
|
|
3373
3379
|
className: cm("flexlayout__border_button_trailing" /* FLEXLAYOUT__BORDER_BUTTON_TRAILING */),
|
|
3374
3380
|
onPointerDown: onClosePointerDown,
|
|
3375
|
-
onClick: onClose
|
|
3381
|
+
onClick: onClose,
|
|
3382
|
+
children: typeof icons.close === "function" ? icons.close(node) : icons.close
|
|
3376
3383
|
},
|
|
3377
|
-
|
|
3384
|
+
"close"
|
|
3378
3385
|
)
|
|
3379
3386
|
);
|
|
3380
3387
|
}
|
|
3381
|
-
return /* @__PURE__ */
|
|
3388
|
+
return /* @__PURE__ */ jsxs2(
|
|
3382
3389
|
"div",
|
|
3383
3390
|
{
|
|
3384
3391
|
ref: selfRef,
|
|
@@ -3390,30 +3397,33 @@ var BorderButton = (props) => {
|
|
|
3390
3397
|
title: node.getHelpText(),
|
|
3391
3398
|
draggable: true,
|
|
3392
3399
|
onDragStart,
|
|
3393
|
-
onDragEnd
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3400
|
+
onDragEnd,
|
|
3401
|
+
children: [
|
|
3402
|
+
leading,
|
|
3403
|
+
content,
|
|
3404
|
+
renderState.buttons
|
|
3405
|
+
]
|
|
3406
|
+
}
|
|
3398
3407
|
);
|
|
3399
3408
|
};
|
|
3400
3409
|
|
|
3401
|
-
// src/view/PopupMenu.tsx
|
|
3402
|
-
import * as React6 from "react";
|
|
3403
|
-
|
|
3404
3410
|
// src/view/TabButtonStamp.tsx
|
|
3405
|
-
import
|
|
3411
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
3406
3412
|
var TabButtonStamp = (props) => {
|
|
3407
3413
|
const { layout, node } = props;
|
|
3408
3414
|
const cm = layout.getClassName;
|
|
3409
3415
|
const classNames = cm("flexlayout__tab_button_stamp" /* FLEXLAYOUT__TAB_BUTTON_STAMP */);
|
|
3410
3416
|
const renderState = getRenderStateEx(layout, node);
|
|
3411
|
-
const content = renderState.content ? /* @__PURE__ */
|
|
3412
|
-
const leading = renderState.leading ? /* @__PURE__ */
|
|
3413
|
-
return /* @__PURE__ */
|
|
3417
|
+
const content = renderState.content ? /* @__PURE__ */ jsx5("div", { className: cm("flexlayout__tab_button_content" /* FLEXLAYOUT__TAB_BUTTON_CONTENT */), children: renderState.content }) : node.getNameForOverflowMenu();
|
|
3418
|
+
const leading = renderState.leading ? /* @__PURE__ */ jsx5("div", { className: cm("flexlayout__tab_button_leading" /* FLEXLAYOUT__TAB_BUTTON_LEADING */), children: renderState.leading }) : null;
|
|
3419
|
+
return /* @__PURE__ */ jsxs3("div", { className: classNames, title: node.getHelpText(), children: [
|
|
3420
|
+
leading,
|
|
3421
|
+
content
|
|
3422
|
+
] });
|
|
3414
3423
|
};
|
|
3415
3424
|
|
|
3416
3425
|
// src/view/PopupMenu.tsx
|
|
3426
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
3417
3427
|
function showPopup(triggerElement, items, onSelect, layout) {
|
|
3418
3428
|
const layoutDiv = layout.getRootDiv();
|
|
3419
3429
|
const classNameMapper = layout.getClassName;
|
|
@@ -3453,7 +3463,7 @@ function showPopup(triggerElement, items, onSelect, layout) {
|
|
|
3453
3463
|
};
|
|
3454
3464
|
elm.addEventListener("pointerdown", onElementPointerDown);
|
|
3455
3465
|
currentDocument.addEventListener("pointerdown", onDocPointerDown);
|
|
3456
|
-
layout.showControlInPortal(/* @__PURE__ */
|
|
3466
|
+
layout.showControlInPortal(/* @__PURE__ */ jsx6(PopupMenu, { currentDocument, onSelect, onHide, items, classNameMapper, layout }), elm);
|
|
3457
3467
|
}
|
|
3458
3468
|
var PopupMenu = (props) => {
|
|
3459
3469
|
const { items, onHide, onSelect, classNameMapper, layout } = props;
|
|
@@ -3472,45 +3482,45 @@ var PopupMenu = (props) => {
|
|
|
3472
3482
|
const onDragEnd = (_event) => {
|
|
3473
3483
|
layout.clearDragMain();
|
|
3474
3484
|
};
|
|
3475
|
-
const itemElements = items.map((item, i) => /* @__PURE__ */
|
|
3485
|
+
const itemElements = items.map((item, i) => /* @__PURE__ */ jsx6(
|
|
3476
3486
|
"div",
|
|
3477
3487
|
{
|
|
3478
|
-
key: item.index,
|
|
3479
3488
|
className: classNameMapper("flexlayout__popup_menu_item" /* FLEXLAYOUT__POPUP_MENU_ITEM */),
|
|
3480
3489
|
"data-layout-path": "/popup-menu/tb" + i,
|
|
3481
3490
|
onClick: (event) => onItemClick(item, event),
|
|
3482
3491
|
draggable: true,
|
|
3483
3492
|
onDragStart: (e) => onDragStart(e, item.node),
|
|
3484
3493
|
onDragEnd,
|
|
3485
|
-
title: item.node.getHelpText()
|
|
3494
|
+
title: item.node.getHelpText(),
|
|
3495
|
+
children: /* @__PURE__ */ jsx6(TabButtonStamp, { node: item.node, layout })
|
|
3486
3496
|
},
|
|
3487
|
-
|
|
3497
|
+
item.index
|
|
3488
3498
|
));
|
|
3489
|
-
return /* @__PURE__ */
|
|
3499
|
+
return /* @__PURE__ */ jsx6("div", { className: classNameMapper("flexlayout__popup_menu" /* FLEXLAYOUT__POPUP_MENU */), "data-layout-path": "/popup-menu", children: itemElements });
|
|
3490
3500
|
};
|
|
3491
3501
|
|
|
3492
3502
|
// src/view/TabOverflowHook.tsx
|
|
3493
|
-
import
|
|
3503
|
+
import { useEffect as useEffect2, useLayoutEffect as useLayoutEffect3, useRef as useRef4, useState as useState2 } from "react";
|
|
3494
3504
|
var useTabOverflow = (node, orientation, toolbarRef, stickyButtonsRef) => {
|
|
3495
|
-
const firstRender =
|
|
3496
|
-
const tabsTruncated =
|
|
3497
|
-
const lastRect =
|
|
3498
|
-
const selfRef =
|
|
3499
|
-
const [position, setPosition] =
|
|
3500
|
-
const userControlledLeft =
|
|
3501
|
-
const [hiddenTabs, setHiddenTabs] =
|
|
3502
|
-
const lastHiddenCount =
|
|
3503
|
-
|
|
3505
|
+
const firstRender = useRef4(true);
|
|
3506
|
+
const tabsTruncated = useRef4(false);
|
|
3507
|
+
const lastRect = useRef4(Rect.empty());
|
|
3508
|
+
const selfRef = useRef4(null);
|
|
3509
|
+
const [position, setPosition] = useState2(0);
|
|
3510
|
+
const userControlledLeft = useRef4(false);
|
|
3511
|
+
const [hiddenTabs, setHiddenTabs] = useState2([]);
|
|
3512
|
+
const lastHiddenCount = useRef4(0);
|
|
3513
|
+
useLayoutEffect3(() => {
|
|
3504
3514
|
userControlledLeft.current = false;
|
|
3505
3515
|
}, [node.getSelectedNode(), node.getRect().width, node.getRect().height]);
|
|
3506
3516
|
const nodeRect = node instanceof TabSetNode ? node.getRect() : node.getTabHeaderRect();
|
|
3507
|
-
|
|
3517
|
+
useLayoutEffect3(() => {
|
|
3508
3518
|
if (nodeRect.width > 0 && nodeRect.height > 0) {
|
|
3509
3519
|
updateVisibleTabs();
|
|
3510
3520
|
}
|
|
3511
3521
|
}, [nodeRect.width, nodeRect.height]);
|
|
3512
3522
|
const instance = toolbarRef.current;
|
|
3513
|
-
|
|
3523
|
+
useEffect2(() => {
|
|
3514
3524
|
if (!instance) {
|
|
3515
3525
|
return;
|
|
3516
3526
|
}
|
|
@@ -3620,13 +3630,14 @@ var useTabOverflow = (node, orientation, toolbarRef, stickyButtonsRef) => {
|
|
|
3620
3630
|
};
|
|
3621
3631
|
|
|
3622
3632
|
// src/view/BorderTabSet.tsx
|
|
3633
|
+
import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
3623
3634
|
var BorderTabSet = (props) => {
|
|
3624
3635
|
const { border, layout, size } = props;
|
|
3625
|
-
const toolbarRef =
|
|
3626
|
-
const overflowbuttonRef =
|
|
3627
|
-
const stickyButtonsRef =
|
|
3636
|
+
const toolbarRef = useRef5(null);
|
|
3637
|
+
const overflowbuttonRef = useRef5(null);
|
|
3638
|
+
const stickyButtonsRef = useRef5(null);
|
|
3628
3639
|
const icons = layout.getIcons();
|
|
3629
|
-
|
|
3640
|
+
useLayoutEffect4(() => {
|
|
3630
3641
|
border.setTabHeaderRect(Rect.getBoundingClientRect(selfRef.current).relativeTo(layout.getDomRect()));
|
|
3631
3642
|
});
|
|
3632
3643
|
const { selfRef, position, userControlledLeft, hiddenTabs, onMouseWheel, tabsTruncated } = useTabOverflow(border, Orientation.flip(border.getOrientation()), toolbarRef, stickyButtonsRef);
|
|
@@ -3661,10 +3672,10 @@ var BorderTabSet = (props) => {
|
|
|
3661
3672
|
const isSelected = border.getSelected() === i;
|
|
3662
3673
|
const child = border.getChildren()[i];
|
|
3663
3674
|
tabButtons.push(
|
|
3664
|
-
/* @__PURE__ */
|
|
3675
|
+
/* @__PURE__ */ jsx7(BorderButton, { layout, border: border.getLocation().getName(), node: child, path: border.getPath() + "/tb" + i, selected: isSelected, icons }, child.getId())
|
|
3665
3676
|
);
|
|
3666
3677
|
if (i < border.getChildren().length - 1) {
|
|
3667
|
-
tabButtons.push(/* @__PURE__ */
|
|
3678
|
+
tabButtons.push(/* @__PURE__ */ jsx7("div", { className: cm("flexlayout__border_tab_divider" /* FLEXLAYOUT__BORDER_TAB_DIVIDER */) }, "divider" + i));
|
|
3668
3679
|
}
|
|
3669
3680
|
};
|
|
3670
3681
|
for (let i = 0; i < border.getChildren().length; i++) {
|
|
@@ -3687,18 +3698,18 @@ var BorderTabSet = (props) => {
|
|
|
3687
3698
|
buttons = [...stickyButtons, ...buttons];
|
|
3688
3699
|
} else {
|
|
3689
3700
|
tabButtons.push(
|
|
3690
|
-
/* @__PURE__ */
|
|
3701
|
+
/* @__PURE__ */ jsx7(
|
|
3691
3702
|
"div",
|
|
3692
3703
|
{
|
|
3693
3704
|
ref: stickyButtonsRef,
|
|
3694
|
-
key: "sticky_buttons_container",
|
|
3695
3705
|
onPointerDown: onInterceptPointerDown,
|
|
3696
3706
|
onDragStart: (e) => {
|
|
3697
3707
|
e.preventDefault();
|
|
3698
3708
|
},
|
|
3699
|
-
className: cm("flexlayout__tab_toolbar_sticky_buttons_container" /* FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER */)
|
|
3709
|
+
className: cm("flexlayout__tab_toolbar_sticky_buttons_container" /* FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER */),
|
|
3710
|
+
children: stickyButtons
|
|
3700
3711
|
},
|
|
3701
|
-
|
|
3712
|
+
"sticky_buttons_container"
|
|
3702
3713
|
)
|
|
3703
3714
|
);
|
|
3704
3715
|
}
|
|
@@ -3709,26 +3720,29 @@ var BorderTabSet = (props) => {
|
|
|
3709
3720
|
if (typeof icons.more === "function") {
|
|
3710
3721
|
overflowContent = icons.more(border, hiddenTabs);
|
|
3711
3722
|
} else {
|
|
3712
|
-
overflowContent = /* @__PURE__ */
|
|
3723
|
+
overflowContent = /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
3724
|
+
icons.more,
|
|
3725
|
+
/* @__PURE__ */ jsx7("div", { className: cm("flexlayout__tab_button_overflow_count" /* FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT */), children: hiddenTabs.length })
|
|
3726
|
+
] });
|
|
3713
3727
|
}
|
|
3714
3728
|
void buttons.splice(
|
|
3715
3729
|
Math.min(renderState.overflowPosition, buttons.length),
|
|
3716
3730
|
0,
|
|
3717
|
-
/* @__PURE__ */
|
|
3731
|
+
/* @__PURE__ */ jsx7(
|
|
3718
3732
|
"button",
|
|
3719
3733
|
{
|
|
3720
|
-
key: "overflowbutton",
|
|
3721
3734
|
ref: overflowbuttonRef,
|
|
3722
3735
|
className: cm("flexlayout__border_toolbar_button" /* FLEXLAYOUT__BORDER_TOOLBAR_BUTTON */) + " " + cm("flexlayout__border_toolbar_button_overflow" /* FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW */) + " " + cm("flexlayout__border_toolbar_button_overflow_" /* FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW_ */ + border.getLocation().getName()),
|
|
3723
3736
|
title: overflowTitle,
|
|
3724
3737
|
onClick: onOverflowClick,
|
|
3725
|
-
onPointerDown: onInterceptPointerDown
|
|
3738
|
+
onPointerDown: onInterceptPointerDown,
|
|
3739
|
+
children: overflowContent
|
|
3726
3740
|
},
|
|
3727
|
-
|
|
3741
|
+
"overflowbutton"
|
|
3728
3742
|
)
|
|
3729
3743
|
);
|
|
3730
3744
|
}
|
|
3731
|
-
const toolbar = /* @__PURE__ */
|
|
3745
|
+
const toolbar = /* @__PURE__ */ jsx7("div", { ref: toolbarRef, className: cm("flexlayout__border_toolbar" /* FLEXLAYOUT__BORDER_TOOLBAR */) + " " + cm("flexlayout__border_toolbar_" /* FLEXLAYOUT__BORDER_TOOLBAR_ */ + border.getLocation().getName()), children: buttons }, "toolbar");
|
|
3732
3746
|
let innerStyle;
|
|
3733
3747
|
let outerStyle;
|
|
3734
3748
|
const borderHeight = size - 1;
|
|
@@ -3742,7 +3756,7 @@ var BorderTabSet = (props) => {
|
|
|
3742
3756
|
innerStyle = { left: position };
|
|
3743
3757
|
outerStyle = { height: borderHeight };
|
|
3744
3758
|
}
|
|
3745
|
-
return /* @__PURE__ */
|
|
3759
|
+
return /* @__PURE__ */ jsxs4(
|
|
3746
3760
|
"div",
|
|
3747
3761
|
{
|
|
3748
3762
|
ref: selfRef,
|
|
@@ -3755,29 +3769,33 @@ var BorderTabSet = (props) => {
|
|
|
3755
3769
|
onClick: onAuxMouseClick,
|
|
3756
3770
|
onAuxClick: onAuxMouseClick,
|
|
3757
3771
|
onContextMenu,
|
|
3758
|
-
onWheel: onMouseWheel
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3772
|
+
onWheel: onMouseWheel,
|
|
3773
|
+
children: [
|
|
3774
|
+
/* @__PURE__ */ jsx7("div", { style: outerStyle, className: cm("flexlayout__border_inner" /* FLEXLAYOUT__BORDER_INNER */) + " " + cm("flexlayout__border_inner_" /* FLEXLAYOUT__BORDER_INNER_ */ + border.getLocation().getName()), children: /* @__PURE__ */ jsx7("div", { style: innerStyle, className: cm("flexlayout__border_inner_tab_container" /* FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER */) + " " + cm("flexlayout__border_inner_tab_container_" /* FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_ */ + border.getLocation().getName()), children: tabButtons }) }),
|
|
3775
|
+
toolbar
|
|
3776
|
+
]
|
|
3777
|
+
}
|
|
3762
3778
|
);
|
|
3763
3779
|
};
|
|
3764
3780
|
|
|
3765
3781
|
// src/view/DragContainer.tsx
|
|
3766
|
-
import
|
|
3782
|
+
import { useEffect as useEffect3, useRef as useRef6 } from "react";
|
|
3783
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
3767
3784
|
var DragContainer = (props) => {
|
|
3768
3785
|
const { layout, node } = props;
|
|
3769
|
-
const selfRef =
|
|
3770
|
-
|
|
3786
|
+
const selfRef = useRef6(null);
|
|
3787
|
+
useEffect3(() => {
|
|
3771
3788
|
node.setTabStamp(selfRef.current);
|
|
3772
3789
|
}, [node, selfRef.current]);
|
|
3773
3790
|
const cm = layout.getClassName;
|
|
3774
3791
|
const classNames = cm("flexlayout__drag_rect" /* FLEXLAYOUT__DRAG_RECT */);
|
|
3775
|
-
return /* @__PURE__ */
|
|
3792
|
+
return /* @__PURE__ */ jsx8("div", { ref: selfRef, className: classNames, children: /* @__PURE__ */ jsx8(TabButtonStamp, { layout, node }, node.getId()) });
|
|
3776
3793
|
};
|
|
3777
3794
|
|
|
3778
3795
|
// src/view/ErrorBoundary.tsx
|
|
3779
|
-
import
|
|
3780
|
-
|
|
3796
|
+
import { Component } from "react";
|
|
3797
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
3798
|
+
var ErrorBoundary = class extends Component {
|
|
3781
3799
|
constructor(props) {
|
|
3782
3800
|
super(props);
|
|
3783
3801
|
this.state = { hasError: false };
|
|
@@ -3791,62 +3809,75 @@ var ErrorBoundary = class extends React10.Component {
|
|
|
3791
3809
|
}
|
|
3792
3810
|
render() {
|
|
3793
3811
|
if (this.state.hasError) {
|
|
3794
|
-
return /* @__PURE__ */
|
|
3812
|
+
return /* @__PURE__ */ jsx9("div", { className: "flexlayout__error_boundary_container" /* FLEXLAYOUT__ERROR_BOUNDARY_CONTAINER */, children: /* @__PURE__ */ jsx9("div", { className: "flexlayout__error_boundary_content" /* FLEXLAYOUT__ERROR_BOUNDARY_CONTENT */, children: this.props.message }) });
|
|
3795
3813
|
}
|
|
3796
3814
|
return this.props.children;
|
|
3797
3815
|
}
|
|
3798
3816
|
};
|
|
3799
3817
|
|
|
3800
3818
|
// src/view/Icons.tsx
|
|
3801
|
-
import
|
|
3819
|
+
import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
3802
3820
|
var style = { width: "1em", height: "1em", display: "flex", alignItems: "center" };
|
|
3803
3821
|
var CloseIcon = () => {
|
|
3804
|
-
return /* @__PURE__ */
|
|
3822
|
+
return /* @__PURE__ */ jsxs5("svg", { xmlns: "http://www.w3.org/2000/svg", style, viewBox: "0 0 24 24", children: [
|
|
3823
|
+
/* @__PURE__ */ jsx10("path", { fill: "none", d: "M0 0h24v24H0z" }),
|
|
3824
|
+
/* @__PURE__ */ jsx10("path", { stroke: "var(--color-icon)", fill: "var(--color-icon)", d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })
|
|
3825
|
+
] });
|
|
3805
3826
|
};
|
|
3806
3827
|
var MaximizeIcon = () => {
|
|
3807
|
-
return /* @__PURE__ */
|
|
3828
|
+
return /* @__PURE__ */ jsxs5("svg", { xmlns: "http://www.w3.org/2000/svg", style, viewBox: "0 0 24 24", fill: "var(--color-icon)", children: [
|
|
3829
|
+
/* @__PURE__ */ jsx10("path", { d: "M0 0h24v24H0z", fill: "none" }),
|
|
3830
|
+
/* @__PURE__ */ jsx10("path", { stroke: "var(--color-icon)", d: "M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z" })
|
|
3831
|
+
] });
|
|
3808
3832
|
};
|
|
3809
3833
|
var OverflowIcon = () => {
|
|
3810
|
-
return /* @__PURE__ */
|
|
3834
|
+
return /* @__PURE__ */ jsxs5("svg", { xmlns: "http://www.w3.org/2000/svg", style, viewBox: "0 0 24 24", fill: "var(--color-icon)", children: [
|
|
3835
|
+
/* @__PURE__ */ jsx10("path", { d: "M0 0h24v24H0z", fill: "none" }),
|
|
3836
|
+
/* @__PURE__ */ jsx10("path", { stroke: "var(--color-icon)", d: "M7 10l5 5 5-5z" })
|
|
3837
|
+
] });
|
|
3811
3838
|
};
|
|
3812
3839
|
var EdgeIcon = () => {
|
|
3813
|
-
return /* @__PURE__ */
|
|
3840
|
+
return /* @__PURE__ */ jsx10("svg", { xmlns: "http://www.w3.org/2000/svg", style: { display: "block", width: 10, height: 10 }, preserveAspectRatio: "none", viewBox: "0 0 100 100", children: /* @__PURE__ */ jsx10("path", { fill: "var(--color-edge-icon)", stroke: "var(--color-edge-icon)", d: "M10 30 L90 30 l-40 40 Z" }) });
|
|
3814
3841
|
};
|
|
3815
3842
|
var RestoreIcon = () => {
|
|
3816
|
-
return /* @__PURE__ */
|
|
3843
|
+
return /* @__PURE__ */ jsxs5("svg", { xmlns: "http://www.w3.org/2000/svg", style, viewBox: "0 0 24 24", fill: "var(--color-icon)", children: [
|
|
3844
|
+
/* @__PURE__ */ jsx10("path", { d: "M0 0h24v24H0z", fill: "none" }),
|
|
3845
|
+
/* @__PURE__ */ jsx10("path", { stroke: "var(--color-icon)", d: "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" })
|
|
3846
|
+
] });
|
|
3817
3847
|
};
|
|
3818
3848
|
var AsterickIcon = () => {
|
|
3819
|
-
return /* @__PURE__ */
|
|
3849
|
+
return /* @__PURE__ */ jsx10("svg", { xmlns: "http://www.w3.org/2000/svg", style, height: "24px", viewBox: "0 -960 960 960", width: "24px", children: /* @__PURE__ */ jsx10(
|
|
3820
3850
|
"path",
|
|
3821
3851
|
{
|
|
3822
3852
|
fill: "var(--color-icon)",
|
|
3823
3853
|
stroke: "var(--color-icon)",
|
|
3824
3854
|
d: "M440-120v-264L254-197l-57-57 187-186H120v-80h264L197-706l57-57 186 187v-264h80v264l186-187 57 57-187 186h264v80H576l187 186-57 57-186-187v264h-80Z"
|
|
3825
3855
|
}
|
|
3826
|
-
));
|
|
3856
|
+
) });
|
|
3827
3857
|
};
|
|
3828
3858
|
|
|
3829
3859
|
// src/view/Overlay.tsx
|
|
3830
|
-
import
|
|
3860
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
3831
3861
|
var Overlay = (props) => {
|
|
3832
3862
|
const { layout, show } = props;
|
|
3833
|
-
return /* @__PURE__ */
|
|
3863
|
+
return /* @__PURE__ */ jsx11("div", { className: layout.getClassName("flexlayout__layout_overlay" /* FLEXLAYOUT__LAYOUT_OVERLAY */), style: { display: show ? "flex" : "none" } });
|
|
3834
3864
|
};
|
|
3835
3865
|
|
|
3836
3866
|
// src/view/Row.tsx
|
|
3837
|
-
import
|
|
3867
|
+
import { useLayoutEffect as useLayoutEffect6, useRef as useRef9 } from "react";
|
|
3838
3868
|
|
|
3839
3869
|
// src/view/TabSet.tsx
|
|
3840
|
-
import
|
|
3870
|
+
import { useEffect as useEffect4, useRef as useRef8 } from "react";
|
|
3841
3871
|
|
|
3842
3872
|
// src/view/TabButton.tsx
|
|
3843
|
-
import
|
|
3873
|
+
import { useLayoutEffect as useLayoutEffect5, useRef as useRef7 } from "react";
|
|
3874
|
+
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3844
3875
|
var TabButton = (props) => {
|
|
3845
3876
|
const { layout, node, selected, path } = props;
|
|
3846
|
-
const selfRef =
|
|
3847
|
-
const contentRef =
|
|
3877
|
+
const selfRef = useRef7(null);
|
|
3878
|
+
const contentRef = useRef7(null);
|
|
3848
3879
|
const icons = layout.getIcons();
|
|
3849
|
-
|
|
3880
|
+
useLayoutEffect5(() => {
|
|
3850
3881
|
node.setTabRect(layout.getBoundingClientRect(selfRef.current));
|
|
3851
3882
|
if (layout.getEditingTab() === node) {
|
|
3852
3883
|
contentRef.current.select();
|
|
@@ -3932,10 +3963,10 @@ var TabButton = (props) => {
|
|
|
3932
3963
|
classNames += " " + node.getClassName();
|
|
3933
3964
|
}
|
|
3934
3965
|
const renderState = getRenderStateEx(layout, node);
|
|
3935
|
-
let content = renderState.content ? /* @__PURE__ */
|
|
3936
|
-
const leading = renderState.leading ? /* @__PURE__ */
|
|
3966
|
+
let content = renderState.content ? /* @__PURE__ */ jsx12("div", { className: cm("flexlayout__tab_button_content" /* FLEXLAYOUT__TAB_BUTTON_CONTENT */), children: renderState.content }) : null;
|
|
3967
|
+
const leading = renderState.leading ? /* @__PURE__ */ jsx12("div", { className: cm("flexlayout__tab_button_leading" /* FLEXLAYOUT__TAB_BUTTON_LEADING */), children: renderState.leading }) : null;
|
|
3937
3968
|
if (layout.getEditingTab() === node) {
|
|
3938
|
-
content = /* @__PURE__ */
|
|
3969
|
+
content = /* @__PURE__ */ jsx12(
|
|
3939
3970
|
"input",
|
|
3940
3971
|
{
|
|
3941
3972
|
ref: contentRef,
|
|
@@ -3952,18 +3983,18 @@ var TabButton = (props) => {
|
|
|
3952
3983
|
if (node.isEnableClose() && !isStretch) {
|
|
3953
3984
|
const closeTitle = layout.i18nName("Close" /* Close_Tab */);
|
|
3954
3985
|
renderState.buttons.push(
|
|
3955
|
-
/* @__PURE__ */
|
|
3986
|
+
/* @__PURE__ */ jsx12(
|
|
3956
3987
|
"button",
|
|
3957
3988
|
{
|
|
3958
|
-
key: "close",
|
|
3959
3989
|
"data-layout-path": path + "/button/close",
|
|
3960
3990
|
title: closeTitle,
|
|
3961
3991
|
className: cm("flexlayout__tab_button_trailing" /* FLEXLAYOUT__TAB_BUTTON_TRAILING */),
|
|
3962
3992
|
onPointerDown: onClosePointerDown,
|
|
3963
3993
|
onClick: onClose,
|
|
3964
|
-
onKeyDown: onCloseKeyDown
|
|
3994
|
+
onKeyDown: onCloseKeyDown,
|
|
3995
|
+
children: typeof icons.close === "function" ? icons.close(node) : icons.close
|
|
3965
3996
|
},
|
|
3966
|
-
|
|
3997
|
+
"close"
|
|
3967
3998
|
)
|
|
3968
3999
|
);
|
|
3969
4000
|
}
|
|
@@ -3973,7 +4004,7 @@ var TabButton = (props) => {
|
|
|
3973
4004
|
onClick();
|
|
3974
4005
|
}
|
|
3975
4006
|
};
|
|
3976
|
-
return /* @__PURE__ */
|
|
4007
|
+
return /* @__PURE__ */ jsxs6(
|
|
3977
4008
|
"div",
|
|
3978
4009
|
{
|
|
3979
4010
|
ref: selfRef,
|
|
@@ -3990,27 +4021,30 @@ var TabButton = (props) => {
|
|
|
3990
4021
|
draggable: true,
|
|
3991
4022
|
onDragStart,
|
|
3992
4023
|
onDragEnd,
|
|
3993
|
-
onDoubleClick
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
4024
|
+
onDoubleClick,
|
|
4025
|
+
children: [
|
|
4026
|
+
leading,
|
|
4027
|
+
content,
|
|
4028
|
+
renderState.buttons
|
|
4029
|
+
]
|
|
4030
|
+
}
|
|
3998
4031
|
);
|
|
3999
4032
|
};
|
|
4000
4033
|
|
|
4001
4034
|
// src/view/TabSet.tsx
|
|
4002
4035
|
import { createPortal } from "react-dom";
|
|
4036
|
+
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
4003
4037
|
var TabSet = (props) => {
|
|
4004
4038
|
const { node, layout } = props;
|
|
4005
|
-
const tabStripRef =
|
|
4006
|
-
const tabStripInnerRef =
|
|
4007
|
-
const contentRef =
|
|
4008
|
-
const buttonBarRef =
|
|
4009
|
-
const overflowbuttonRef =
|
|
4010
|
-
const stickyButtonsRef =
|
|
4039
|
+
const tabStripRef = useRef8(null);
|
|
4040
|
+
const tabStripInnerRef = useRef8(null);
|
|
4041
|
+
const contentRef = useRef8(null);
|
|
4042
|
+
const buttonBarRef = useRef8(null);
|
|
4043
|
+
const overflowbuttonRef = useRef8(null);
|
|
4044
|
+
const stickyButtonsRef = useRef8(null);
|
|
4011
4045
|
const icons = layout.getIcons();
|
|
4012
|
-
const isFirstRender =
|
|
4013
|
-
|
|
4046
|
+
const isFirstRender = useRef8(true);
|
|
4047
|
+
useEffect4(() => {
|
|
4014
4048
|
node.setRect(layout.getBoundingClientRect(selfRef.current));
|
|
4015
4049
|
if (tabStripRef.current) {
|
|
4016
4050
|
node.setTabStripRect(layout.getBoundingClientRect(tabStripRef.current));
|
|
@@ -4099,9 +4133,9 @@ var TabSet = (props) => {
|
|
|
4099
4133
|
for (let i = 0; i < node.getChildren().length; i++) {
|
|
4100
4134
|
const child = node.getChildren()[i];
|
|
4101
4135
|
const isSelected = node.getSelected() === i;
|
|
4102
|
-
tabs.push(/* @__PURE__ */
|
|
4136
|
+
tabs.push(/* @__PURE__ */ jsx13(TabButton, { layout, node: child, path: path + "/tb" + i, selected: isSelected }, child.getId()));
|
|
4103
4137
|
if (i < node.getChildren().length - 1) {
|
|
4104
|
-
tabs.push(/* @__PURE__ */
|
|
4138
|
+
tabs.push(/* @__PURE__ */ jsx13("div", { className: cm("flexlayout__tabset_tab_divider" /* FLEXLAYOUT__TABSET_TAB_DIVIDER */) }, "divider" + i));
|
|
4105
4139
|
}
|
|
4106
4140
|
}
|
|
4107
4141
|
}
|
|
@@ -4121,18 +4155,18 @@ var TabSet = (props) => {
|
|
|
4121
4155
|
buttons = [...stickyButtons, ...buttons];
|
|
4122
4156
|
} else {
|
|
4123
4157
|
tabs.push(
|
|
4124
|
-
/* @__PURE__ */
|
|
4158
|
+
/* @__PURE__ */ jsx13(
|
|
4125
4159
|
"div",
|
|
4126
4160
|
{
|
|
4127
4161
|
ref: stickyButtonsRef,
|
|
4128
|
-
key: "sticky_buttons_container",
|
|
4129
4162
|
onPointerDown: onInterceptPointerDown,
|
|
4130
4163
|
onDragStart: (e) => {
|
|
4131
4164
|
e.preventDefault();
|
|
4132
4165
|
},
|
|
4133
|
-
className: cm("flexlayout__tab_toolbar_sticky_buttons_container" /* FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER */)
|
|
4166
|
+
className: cm("flexlayout__tab_toolbar_sticky_buttons_container" /* FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER */),
|
|
4167
|
+
children: stickyButtons
|
|
4134
4168
|
},
|
|
4135
|
-
|
|
4169
|
+
"sticky_buttons_container"
|
|
4136
4170
|
)
|
|
4137
4171
|
);
|
|
4138
4172
|
}
|
|
@@ -4144,23 +4178,26 @@ var TabSet = (props) => {
|
|
|
4144
4178
|
if (typeof icons.more === "function") {
|
|
4145
4179
|
overflowContent = icons.more(node, hiddenTabs);
|
|
4146
4180
|
} else {
|
|
4147
|
-
overflowContent = /* @__PURE__ */
|
|
4181
|
+
overflowContent = /* @__PURE__ */ jsxs7(Fragment3, { children: [
|
|
4182
|
+
icons.more,
|
|
4183
|
+
/* @__PURE__ */ jsx13("div", { className: cm("flexlayout__tab_button_overflow_count" /* FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT */), children: hiddenTabs.length })
|
|
4184
|
+
] });
|
|
4148
4185
|
}
|
|
4149
4186
|
void buttons.splice(
|
|
4150
4187
|
Math.min(renderState.overflowPosition, buttons.length),
|
|
4151
4188
|
0,
|
|
4152
|
-
/* @__PURE__ */
|
|
4189
|
+
/* @__PURE__ */ jsx13(
|
|
4153
4190
|
"button",
|
|
4154
4191
|
{
|
|
4155
|
-
key: "overflowbutton",
|
|
4156
4192
|
"data-layout-path": path + "/button/overflow",
|
|
4157
4193
|
ref: overflowbuttonRef,
|
|
4158
4194
|
className: cm("flexlayout__tab_toolbar_button" /* FLEXLAYOUT__TAB_TOOLBAR_BUTTON */) + " " + cm("flexlayout__tab_button_overflow" /* FLEXLAYOUT__TAB_BUTTON_OVERFLOW */),
|
|
4159
4195
|
title: overflowTitle,
|
|
4160
4196
|
onClick: onOverflowClick,
|
|
4161
|
-
onPointerDown: onInterceptPointerDown
|
|
4197
|
+
onPointerDown: onInterceptPointerDown,
|
|
4198
|
+
children: overflowContent
|
|
4162
4199
|
},
|
|
4163
|
-
|
|
4200
|
+
"overflowbutton"
|
|
4164
4201
|
)
|
|
4165
4202
|
);
|
|
4166
4203
|
}
|
|
@@ -4169,55 +4206,55 @@ var TabSet = (props) => {
|
|
|
4169
4206
|
const minTitle = layout.i18nName("Restore tab set" /* Restore */);
|
|
4170
4207
|
const maxTitle = layout.i18nName("Maximize tab set" /* Maximize */);
|
|
4171
4208
|
buttons.push(
|
|
4172
|
-
/* @__PURE__ */
|
|
4209
|
+
/* @__PURE__ */ jsx13(
|
|
4173
4210
|
"button",
|
|
4174
4211
|
{
|
|
4175
|
-
key: "max",
|
|
4176
4212
|
"data-layout-path": path + "/button/max",
|
|
4177
4213
|
title: node.isMaximized() ? minTitle : maxTitle,
|
|
4178
4214
|
className: cm("flexlayout__tab_toolbar_button" /* FLEXLAYOUT__TAB_TOOLBAR_BUTTON */) + " " + cm("flexlayout__tab_toolbar_button-" /* FLEXLAYOUT__TAB_TOOLBAR_BUTTON_ */ + (node.isMaximized() ? "max" : "min")),
|
|
4179
4215
|
onClick: onMaximizeToggle,
|
|
4180
|
-
onPointerDown: onInterceptPointerDown
|
|
4216
|
+
onPointerDown: onInterceptPointerDown,
|
|
4217
|
+
children: node.isMaximized() ? typeof icons.restore === "function" ? icons.restore(node) : icons.restore : typeof icons.maximize === "function" ? icons.maximize(node) : icons.maximize
|
|
4181
4218
|
},
|
|
4182
|
-
|
|
4219
|
+
"max"
|
|
4183
4220
|
)
|
|
4184
4221
|
);
|
|
4185
4222
|
}
|
|
4186
4223
|
if (!node.isMaximized() && showClose) {
|
|
4187
4224
|
const title = isTabStretch ? layout.i18nName("Close" /* Close_Tab */) : layout.i18nName("Close tab set" /* Close_Tabset */);
|
|
4188
4225
|
buttons.push(
|
|
4189
|
-
/* @__PURE__ */
|
|
4226
|
+
/* @__PURE__ */ jsx13(
|
|
4190
4227
|
"button",
|
|
4191
4228
|
{
|
|
4192
|
-
key: "close",
|
|
4193
4229
|
"data-layout-path": path + "/button/close",
|
|
4194
4230
|
title,
|
|
4195
4231
|
className: cm("flexlayout__tab_toolbar_button" /* FLEXLAYOUT__TAB_TOOLBAR_BUTTON */) + " " + cm("flexlayout__tab_toolbar_button-close" /* FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE */),
|
|
4196
4232
|
onClick: isTabStretch ? onCloseTab : onClose,
|
|
4197
|
-
onPointerDown: onInterceptPointerDown
|
|
4233
|
+
onPointerDown: onInterceptPointerDown,
|
|
4234
|
+
children: typeof icons.closeTabset === "function" ? icons.closeTabset(node) : icons.closeTabset
|
|
4198
4235
|
},
|
|
4199
|
-
|
|
4236
|
+
"close"
|
|
4200
4237
|
)
|
|
4201
4238
|
);
|
|
4202
4239
|
}
|
|
4203
4240
|
if (node.isActive() && node.isEnableActiveIcon()) {
|
|
4204
4241
|
const title = layout.i18nName("Active tab set" /* Active_Tabset */);
|
|
4205
4242
|
buttons.push(
|
|
4206
|
-
/* @__PURE__ */
|
|
4243
|
+
/* @__PURE__ */ jsx13("div", { "data-layout-path": path + "/button/active", title, className: cm("flexlayout__tab_toolbar_icon" /* FLEXLAYOUT__TAB_TOOLBAR_ICON */), children: typeof icons.activeTabset === "function" ? icons.activeTabset(node) : icons.activeTabset }, "active")
|
|
4207
4244
|
);
|
|
4208
4245
|
}
|
|
4209
|
-
const buttonbar = /* @__PURE__ */
|
|
4246
|
+
const buttonbar = /* @__PURE__ */ jsx13(
|
|
4210
4247
|
"div",
|
|
4211
4248
|
{
|
|
4212
|
-
key: "buttonbar",
|
|
4213
4249
|
ref: buttonBarRef,
|
|
4214
4250
|
className: cm("flexlayout__tab_toolbar" /* FLEXLAYOUT__TAB_TOOLBAR */),
|
|
4215
4251
|
onPointerDown: onInterceptPointerDown,
|
|
4216
4252
|
onDragStart: (e) => {
|
|
4217
4253
|
e.preventDefault();
|
|
4218
|
-
}
|
|
4254
|
+
},
|
|
4255
|
+
children: buttons
|
|
4219
4256
|
},
|
|
4220
|
-
|
|
4257
|
+
"buttonbar"
|
|
4221
4258
|
);
|
|
4222
4259
|
let tabStrip;
|
|
4223
4260
|
let tabStripClasses = cm("flexlayout__tabset_tabbar_outer" /* FLEXLAYOUT__TABSET_TABBAR_OUTER */);
|
|
@@ -4239,7 +4276,7 @@ var TabSet = (props) => {
|
|
|
4239
4276
|
}
|
|
4240
4277
|
if (node.isEnableTabWrap()) {
|
|
4241
4278
|
if (node.isEnableTabStrip()) {
|
|
4242
|
-
tabStrip = /* @__PURE__ */
|
|
4279
|
+
tabStrip = /* @__PURE__ */ jsxs7(
|
|
4243
4280
|
"div",
|
|
4244
4281
|
{
|
|
4245
4282
|
className: tabStripClasses,
|
|
@@ -4252,16 +4289,18 @@ var TabSet = (props) => {
|
|
|
4252
4289
|
onClick: onAuxMouseClick,
|
|
4253
4290
|
onAuxClick: onAuxMouseClick,
|
|
4254
4291
|
draggable: true,
|
|
4255
|
-
onDragStart
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4292
|
+
onDragStart,
|
|
4293
|
+
children: [
|
|
4294
|
+
tabs,
|
|
4295
|
+
/* @__PURE__ */ jsx13("div", { style: { flexGrow: 1 } }),
|
|
4296
|
+
buttonbar
|
|
4297
|
+
]
|
|
4298
|
+
}
|
|
4260
4299
|
);
|
|
4261
4300
|
}
|
|
4262
4301
|
} else {
|
|
4263
4302
|
if (node.isEnableTabStrip()) {
|
|
4264
|
-
tabStrip = /* @__PURE__ */
|
|
4303
|
+
tabStrip = /* @__PURE__ */ jsxs7(
|
|
4265
4304
|
"div",
|
|
4266
4305
|
{
|
|
4267
4306
|
className: tabStripClasses,
|
|
@@ -4274,17 +4313,19 @@ var TabSet = (props) => {
|
|
|
4274
4313
|
onAuxClick: onAuxMouseClick,
|
|
4275
4314
|
draggable: true,
|
|
4276
4315
|
onWheel: onMouseWheel,
|
|
4277
|
-
onDragStart
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4287
|
-
|
|
4316
|
+
onDragStart,
|
|
4317
|
+
children: [
|
|
4318
|
+
/* @__PURE__ */ jsx13("div", { ref: tabStripInnerRef, className: cm("flexlayout__tabset_tabbar_inner" /* FLEXLAYOUT__TABSET_TABBAR_INNER */) + " " + cm("flexlayout__tabset_tabbar_inner_" /* FLEXLAYOUT__TABSET_TABBAR_INNER_ */ + node.getTabLocation()), children: /* @__PURE__ */ jsx13(
|
|
4319
|
+
"div",
|
|
4320
|
+
{
|
|
4321
|
+
style: { left: position, width: isTabStretch ? "100%" : "10000px" },
|
|
4322
|
+
className: cm("flexlayout__tabset_tabbar_inner_tab_container" /* FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER */) + " " + cm("flexlayout__tabset_tabbar_inner_tab_container_" /* FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_ */ + node.getTabLocation()),
|
|
4323
|
+
children: tabs
|
|
4324
|
+
}
|
|
4325
|
+
) }),
|
|
4326
|
+
buttonbar
|
|
4327
|
+
]
|
|
4328
|
+
}
|
|
4288
4329
|
);
|
|
4289
4330
|
}
|
|
4290
4331
|
}
|
|
@@ -4295,11 +4336,17 @@ var TabSet = (props) => {
|
|
|
4295
4336
|
emptyTabset = placeHolderCallback(node);
|
|
4296
4337
|
}
|
|
4297
4338
|
}
|
|
4298
|
-
let content = /* @__PURE__ */
|
|
4339
|
+
let content = /* @__PURE__ */ jsx13("div", { ref: contentRef, className: cm("flexlayout__tabset_content" /* FLEXLAYOUT__TABSET_CONTENT */), children: emptyTabset });
|
|
4299
4340
|
if (node.getTabLocation() === "top") {
|
|
4300
|
-
content = /* @__PURE__ */
|
|
4341
|
+
content = /* @__PURE__ */ jsxs7(Fragment3, { children: [
|
|
4342
|
+
tabStrip,
|
|
4343
|
+
content
|
|
4344
|
+
] });
|
|
4301
4345
|
} else {
|
|
4302
|
-
content = /* @__PURE__ */
|
|
4346
|
+
content = /* @__PURE__ */ jsxs7(Fragment3, { children: [
|
|
4347
|
+
content,
|
|
4348
|
+
tabStrip
|
|
4349
|
+
] });
|
|
4303
4350
|
}
|
|
4304
4351
|
const style2 = {
|
|
4305
4352
|
flexGrow: Math.max(1, node.getWeight() * 1e3),
|
|
@@ -4311,11 +4358,11 @@ var TabSet = (props) => {
|
|
|
4311
4358
|
if (node.getModel().getMaximizedTabset(layout.getWindowId()) !== void 0 && !node.isMaximized()) {
|
|
4312
4359
|
style2.display = "none";
|
|
4313
4360
|
}
|
|
4314
|
-
const tabset = /* @__PURE__ */
|
|
4361
|
+
const tabset = /* @__PURE__ */ jsx13("div", { ref: selfRef, className: cm("flexlayout__tabset_container" /* FLEXLAYOUT__TABSET_CONTAINER */), style: style2, children: /* @__PURE__ */ jsx13("div", { className: cm("flexlayout__tabset" /* FLEXLAYOUT__TABSET */), "data-layout-path": path, children: content }) });
|
|
4315
4362
|
if (node.isMaximized()) {
|
|
4316
4363
|
if (layout.getMainElement()) {
|
|
4317
4364
|
return createPortal(
|
|
4318
|
-
/* @__PURE__ */
|
|
4365
|
+
/* @__PURE__ */ jsx13(
|
|
4319
4366
|
"div",
|
|
4320
4367
|
{
|
|
4321
4368
|
style: {
|
|
@@ -4325,9 +4372,9 @@ var TabSet = (props) => {
|
|
|
4325
4372
|
left: 0,
|
|
4326
4373
|
bottom: 0,
|
|
4327
4374
|
right: 0
|
|
4328
|
-
}
|
|
4329
|
-
|
|
4330
|
-
|
|
4375
|
+
},
|
|
4376
|
+
children: tabset
|
|
4377
|
+
}
|
|
4331
4378
|
),
|
|
4332
4379
|
layout.getMainElement()
|
|
4333
4380
|
);
|
|
@@ -4340,23 +4387,24 @@ var TabSet = (props) => {
|
|
|
4340
4387
|
};
|
|
4341
4388
|
|
|
4342
4389
|
// src/view/Row.tsx
|
|
4390
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
4343
4391
|
var Row = (props) => {
|
|
4344
4392
|
const { layout, node } = props;
|
|
4345
|
-
const selfRef =
|
|
4393
|
+
const selfRef = useRef9(null);
|
|
4346
4394
|
const horizontal = node.getOrientation() === Orientation.HORZ;
|
|
4347
|
-
|
|
4395
|
+
useLayoutEffect6(() => {
|
|
4348
4396
|
node.setRect(layout.getBoundingClientRect(selfRef.current));
|
|
4349
4397
|
});
|
|
4350
4398
|
const items = [];
|
|
4351
4399
|
let i = 0;
|
|
4352
4400
|
for (const child of node.getChildren()) {
|
|
4353
4401
|
if (i > 0) {
|
|
4354
|
-
items.push(/* @__PURE__ */
|
|
4402
|
+
items.push(/* @__PURE__ */ jsx14(Splitter, { layout, node, index: i, horizontal }, "splitter" + i));
|
|
4355
4403
|
}
|
|
4356
4404
|
if (child instanceof RowNode) {
|
|
4357
|
-
items.push(/* @__PURE__ */
|
|
4405
|
+
items.push(/* @__PURE__ */ jsx14(Row, { layout, node: child }, child.getId()));
|
|
4358
4406
|
} else if (child instanceof TabSetNode) {
|
|
4359
|
-
items.push(/* @__PURE__ */
|
|
4407
|
+
items.push(/* @__PURE__ */ jsx14(TabSet, { layout, node: child }, child.getId()));
|
|
4360
4408
|
}
|
|
4361
4409
|
i++;
|
|
4362
4410
|
}
|
|
@@ -4373,18 +4421,19 @@ var Row = (props) => {
|
|
|
4373
4421
|
} else {
|
|
4374
4422
|
style2.flexDirection = "column";
|
|
4375
4423
|
}
|
|
4376
|
-
return /* @__PURE__ */
|
|
4424
|
+
return /* @__PURE__ */ jsx14("div", { ref: selfRef, className: layout.getClassName("flexlayout__row" /* FLEXLAYOUT__ROW */), style: style2, children: items });
|
|
4377
4425
|
};
|
|
4378
4426
|
|
|
4379
4427
|
// src/view/Tab.tsx
|
|
4380
|
-
import
|
|
4428
|
+
import { useEffect as useEffect5, useLayoutEffect as useLayoutEffect7, useRef as useRef10 } from "react";
|
|
4429
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
4381
4430
|
var Tab = (props) => {
|
|
4382
4431
|
const { layout, selected, node, path } = props;
|
|
4383
|
-
const selfRef =
|
|
4384
|
-
const firstSelect =
|
|
4432
|
+
const selfRef = useRef10(null);
|
|
4433
|
+
const firstSelect = useRef10(true);
|
|
4385
4434
|
const parentNode = node.getParent();
|
|
4386
4435
|
const rect = parentNode.getContentRect();
|
|
4387
|
-
|
|
4436
|
+
useLayoutEffect7(() => {
|
|
4388
4437
|
const element = node.getMoveableElement();
|
|
4389
4438
|
selfRef.current.appendChild(element);
|
|
4390
4439
|
node.setMoveableElement(element);
|
|
@@ -4401,7 +4450,7 @@ var Tab = (props) => {
|
|
|
4401
4450
|
node.setVisible(false);
|
|
4402
4451
|
};
|
|
4403
4452
|
}, []);
|
|
4404
|
-
|
|
4453
|
+
useEffect5(() => {
|
|
4405
4454
|
if (node.isSelected()) {
|
|
4406
4455
|
if (firstSelect.current) {
|
|
4407
4456
|
node.restoreScrollPosition();
|
|
@@ -4409,10 +4458,10 @@ var Tab = (props) => {
|
|
|
4409
4458
|
}
|
|
4410
4459
|
}
|
|
4411
4460
|
}, [selected]);
|
|
4412
|
-
|
|
4461
|
+
useLayoutEffect7(() => {
|
|
4413
4462
|
node.setRect(rect);
|
|
4414
4463
|
}, [rect, node]);
|
|
4415
|
-
|
|
4464
|
+
useLayoutEffect7(() => {
|
|
4416
4465
|
node.setVisible(selected);
|
|
4417
4466
|
}, [selected, node]);
|
|
4418
4467
|
const onPointerDown = () => {
|
|
@@ -4446,14 +4495,15 @@ var Tab = (props) => {
|
|
|
4446
4495
|
if (node.getContentClassName() !== void 0) {
|
|
4447
4496
|
className += " " + node.getContentClassName();
|
|
4448
4497
|
}
|
|
4449
|
-
return /* @__PURE__ */
|
|
4498
|
+
return /* @__PURE__ */ jsx15("div", { ref: selfRef, style: style2, className, "data-layout-path": path });
|
|
4450
4499
|
};
|
|
4451
4500
|
|
|
4452
4501
|
// src/view/SizeTracker.tsx
|
|
4453
|
-
import
|
|
4454
|
-
|
|
4502
|
+
import { memo } from "react";
|
|
4503
|
+
import { Fragment as Fragment4, jsx as jsx16 } from "react/jsx-runtime";
|
|
4504
|
+
var SizeTracker = memo(
|
|
4455
4505
|
({ children }) => {
|
|
4456
|
-
return /* @__PURE__ */
|
|
4506
|
+
return /* @__PURE__ */ jsx16(Fragment4, { children });
|
|
4457
4507
|
},
|
|
4458
4508
|
(prevProps, nextProps) => {
|
|
4459
4509
|
return prevProps.rect.equalSize(nextProps.rect) && prevProps.selected === nextProps.selected && prevProps.forceRevision === nextProps.forceRevision && prevProps.tabsRevision === nextProps.tabsRevision;
|
|
@@ -4462,7 +4512,8 @@ var SizeTracker = React17.memo(
|
|
|
4462
4512
|
SizeTracker.displayName = "SizeTracker";
|
|
4463
4513
|
|
|
4464
4514
|
// src/view/Layout.tsx
|
|
4465
|
-
|
|
4515
|
+
import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
4516
|
+
var Layout = class extends Component2 {
|
|
4466
4517
|
/** @internal */
|
|
4467
4518
|
selfRef;
|
|
4468
4519
|
/** @internal */
|
|
@@ -4471,7 +4522,7 @@ var Layout = class extends React18.Component {
|
|
|
4471
4522
|
/** @internal */
|
|
4472
4523
|
constructor(props) {
|
|
4473
4524
|
super(props);
|
|
4474
|
-
this.selfRef =
|
|
4525
|
+
this.selfRef = createRef();
|
|
4475
4526
|
this.revision = 0;
|
|
4476
4527
|
}
|
|
4477
4528
|
/** re-render the layout */
|
|
@@ -4531,10 +4582,10 @@ var Layout = class extends React18.Component {
|
|
|
4531
4582
|
}
|
|
4532
4583
|
/** @internal */
|
|
4533
4584
|
render() {
|
|
4534
|
-
return /* @__PURE__ */
|
|
4585
|
+
return /* @__PURE__ */ jsx17(LayoutInternal, { ref: this.selfRef, ...this.props, renderRevision: this.revision++ });
|
|
4535
4586
|
}
|
|
4536
4587
|
};
|
|
4537
|
-
var LayoutInternal = class _LayoutInternal extends
|
|
4588
|
+
var LayoutInternal = class _LayoutInternal extends Component2 {
|
|
4538
4589
|
static dragState = void 0;
|
|
4539
4590
|
selfRef;
|
|
4540
4591
|
moveablesRef;
|
|
@@ -4554,10 +4605,10 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4554
4605
|
constructor(props) {
|
|
4555
4606
|
super(props);
|
|
4556
4607
|
this.orderedIds = [];
|
|
4557
|
-
this.selfRef =
|
|
4558
|
-
this.moveablesRef =
|
|
4559
|
-
this.mainRef =
|
|
4560
|
-
this.findBorderBarSizeRef =
|
|
4608
|
+
this.selfRef = createRef();
|
|
4609
|
+
this.moveablesRef = createRef();
|
|
4610
|
+
this.mainRef = createRef();
|
|
4611
|
+
this.findBorderBarSizeRef = createRef();
|
|
4561
4612
|
this.icons = { ...defaultIcons, ...props.icons };
|
|
4562
4613
|
this.state = {
|
|
4563
4614
|
rect: Rect.empty(),
|
|
@@ -4608,7 +4659,10 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4608
4659
|
}
|
|
4609
4660
|
render() {
|
|
4610
4661
|
if (!this.selfRef.current) {
|
|
4611
|
-
return /* @__PURE__ */
|
|
4662
|
+
return /* @__PURE__ */ jsxs8("div", { ref: this.selfRef, className: this.getClassName("flexlayout__layout" /* FLEXLAYOUT__LAYOUT */), children: [
|
|
4663
|
+
/* @__PURE__ */ jsx17("div", { ref: this.moveablesRef, className: this.getClassName("flexlayout__layout_moveables" /* FLEXLAYOUT__LAYOUT_MOVEABLES */) }, "__moveables__"),
|
|
4664
|
+
this.renderMetricsElements()
|
|
4665
|
+
] });
|
|
4612
4666
|
}
|
|
4613
4667
|
const model = this.props.model;
|
|
4614
4668
|
model.getRoot().calcMinMaxSize();
|
|
@@ -4620,8 +4674,8 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4620
4674
|
const reorderedTabs = this.reorderComponents(tabs, this.orderedIds);
|
|
4621
4675
|
const metricElements = this.renderMetricsElements();
|
|
4622
4676
|
const tabMoveables = this.renderTabMoveables();
|
|
4623
|
-
const tabStamps = /* @__PURE__ */
|
|
4624
|
-
return /* @__PURE__ */
|
|
4677
|
+
const tabStamps = /* @__PURE__ */ jsx17("div", { className: this.getClassName("flexlayout__layout_tab_stamps" /* FLEXLAYOUT__LAYOUT_TAB_STAMPS */), children: this.renderTabStamps() }, "__tabStamps__");
|
|
4678
|
+
return /* @__PURE__ */ jsxs8(
|
|
4625
4679
|
"div",
|
|
4626
4680
|
{
|
|
4627
4681
|
ref: this.selfRef,
|
|
@@ -4629,46 +4683,83 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4629
4683
|
onDragEnter: this.onDragEnterRaw,
|
|
4630
4684
|
onDragLeave: this.onDragLeaveRaw,
|
|
4631
4685
|
onDragOver: this.onDragOver,
|
|
4632
|
-
onDrop: this.onDrop
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4686
|
+
onDrop: this.onDrop,
|
|
4687
|
+
children: [
|
|
4688
|
+
/* @__PURE__ */ jsx17("div", { ref: this.moveablesRef, className: this.getClassName("flexlayout__layout_moveables" /* FLEXLAYOUT__LAYOUT_MOVEABLES */) }, "__moveables__"),
|
|
4689
|
+
metricElements,
|
|
4690
|
+
/* @__PURE__ */ jsx17(Overlay, { layout: this, show: this.state.showOverlay }, "__overlay__"),
|
|
4691
|
+
outer,
|
|
4692
|
+
reorderedTabs,
|
|
4693
|
+
tabMoveables,
|
|
4694
|
+
tabStamps,
|
|
4695
|
+
this.state.portal
|
|
4696
|
+
]
|
|
4697
|
+
}
|
|
4642
4698
|
);
|
|
4643
4699
|
}
|
|
4644
4700
|
renderBorders(inner) {
|
|
4645
4701
|
const classMain = this.getClassName("flexlayout__layout_main" /* FLEXLAYOUT__LAYOUT_MAIN */);
|
|
4646
4702
|
const borders = this.props.model.getBorderSet().getBorderMap();
|
|
4647
4703
|
if (borders.size > 0) {
|
|
4648
|
-
inner = /* @__PURE__ */
|
|
4704
|
+
inner = /* @__PURE__ */ jsx17("div", { className: classMain, ref: this.mainRef, children: inner });
|
|
4649
4705
|
const borderSetComponents = /* @__PURE__ */ new Map();
|
|
4650
4706
|
const borderSetContentComponents = /* @__PURE__ */ new Map();
|
|
4651
4707
|
for (const [_, location] of DockLocation.values) {
|
|
4652
4708
|
const border = borders.get(location);
|
|
4653
4709
|
const showBorder = border && (!border.isAutoHide() || border.isAutoHide() && (border.getChildren().length > 0 || this.state.showHiddenBorder === location));
|
|
4654
4710
|
if (showBorder) {
|
|
4655
|
-
borderSetComponents.set(location, /* @__PURE__ */
|
|
4656
|
-
borderSetContentComponents.set(location, /* @__PURE__ */
|
|
4711
|
+
borderSetComponents.set(location, /* @__PURE__ */ jsx17(BorderTabSet, { layout: this, border, size: this.state.calculatedBorderBarSize }));
|
|
4712
|
+
borderSetContentComponents.set(location, /* @__PURE__ */ jsx17(BorderTab, { layout: this, border, show: border.getSelected() !== -1 }));
|
|
4657
4713
|
}
|
|
4658
4714
|
}
|
|
4659
4715
|
const classBorderOuter = this.getClassName("flexlayout__layout_border_container" /* FLEXLAYOUT__LAYOUT_BORDER_CONTAINER */);
|
|
4660
4716
|
const classBorderInner = this.getClassName("flexlayout__layout_border_container_inner" /* FLEXLAYOUT__LAYOUT_BORDER_CONTAINER_INNER */);
|
|
4661
4717
|
if (this.props.model.getBorderSet().getLayoutHorizontal()) {
|
|
4662
|
-
const innerWithBorderTabs2 = /* @__PURE__ */
|
|
4663
|
-
|
|
4718
|
+
const innerWithBorderTabs2 = /* @__PURE__ */ jsxs8("div", { className: classBorderInner, style: { flexDirection: "column" }, children: [
|
|
4719
|
+
borderSetContentComponents.get(DockLocation.TOP),
|
|
4720
|
+
/* @__PURE__ */ jsxs8("div", { className: classBorderInner, style: { flexDirection: "row" }, children: [
|
|
4721
|
+
borderSetContentComponents.get(DockLocation.LEFT),
|
|
4722
|
+
inner,
|
|
4723
|
+
borderSetContentComponents.get(DockLocation.RIGHT)
|
|
4724
|
+
] }),
|
|
4725
|
+
borderSetContentComponents.get(DockLocation.BOTTOM)
|
|
4726
|
+
] });
|
|
4727
|
+
return /* @__PURE__ */ jsxs8("div", { className: classBorderOuter, style: { flexDirection: "column" }, children: [
|
|
4728
|
+
borderSetComponents.get(DockLocation.TOP),
|
|
4729
|
+
/* @__PURE__ */ jsxs8("div", { className: classBorderInner, style: { flexDirection: "row" }, children: [
|
|
4730
|
+
borderSetComponents.get(DockLocation.LEFT),
|
|
4731
|
+
innerWithBorderTabs2,
|
|
4732
|
+
borderSetComponents.get(DockLocation.RIGHT)
|
|
4733
|
+
] }),
|
|
4734
|
+
borderSetComponents.get(DockLocation.BOTTOM)
|
|
4735
|
+
] });
|
|
4664
4736
|
}
|
|
4665
|
-
const innerWithBorderTabs = /* @__PURE__ */
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4737
|
+
const innerWithBorderTabs = /* @__PURE__ */ jsxs8("div", { className: classBorderInner, style: { flexDirection: "row" }, children: [
|
|
4738
|
+
borderSetContentComponents.get(DockLocation.LEFT),
|
|
4739
|
+
/* @__PURE__ */ jsxs8("div", { className: classBorderInner, style: { flexDirection: "column" }, children: [
|
|
4740
|
+
borderSetContentComponents.get(DockLocation.TOP),
|
|
4741
|
+
inner,
|
|
4742
|
+
borderSetContentComponents.get(DockLocation.BOTTOM)
|
|
4743
|
+
] }),
|
|
4744
|
+
borderSetContentComponents.get(DockLocation.RIGHT)
|
|
4745
|
+
] });
|
|
4746
|
+
return /* @__PURE__ */ jsxs8("div", { className: classBorderOuter, style: { flexDirection: "row" }, children: [
|
|
4747
|
+
borderSetComponents.get(DockLocation.LEFT),
|
|
4748
|
+
/* @__PURE__ */ jsxs8("div", { className: classBorderInner, style: { flexDirection: "column" }, children: [
|
|
4749
|
+
borderSetComponents.get(DockLocation.TOP),
|
|
4750
|
+
innerWithBorderTabs,
|
|
4751
|
+
borderSetComponents.get(DockLocation.BOTTOM)
|
|
4752
|
+
] }),
|
|
4753
|
+
borderSetComponents.get(DockLocation.RIGHT)
|
|
4754
|
+
] });
|
|
4755
|
+
}
|
|
4756
|
+
return /* @__PURE__ */ jsx17("div", { className: classMain, ref: this.mainRef, style: { position: "absolute", top: 0, left: 0, bottom: 0, right: 0, display: "flex" }, children: inner });
|
|
4669
4757
|
}
|
|
4670
4758
|
renderLayout() {
|
|
4671
|
-
return /* @__PURE__ */
|
|
4759
|
+
return /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
4760
|
+
/* @__PURE__ */ jsx17(Row, { layout: this, node: this.props.model.getRoot() }, "__row__"),
|
|
4761
|
+
this.renderEdgeIndicators()
|
|
4762
|
+
] });
|
|
4672
4763
|
}
|
|
4673
4764
|
renderEdgeIndicators() {
|
|
4674
4765
|
const edges = [];
|
|
@@ -4681,47 +4772,47 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4681
4772
|
const className = this.getClassName("flexlayout__edge_rect" /* FLEXLAYOUT__EDGE_RECT */);
|
|
4682
4773
|
const radius = 50;
|
|
4683
4774
|
edges.push(
|
|
4684
|
-
/* @__PURE__ */
|
|
4775
|
+
/* @__PURE__ */ jsx17(
|
|
4685
4776
|
"div",
|
|
4686
4777
|
{
|
|
4687
|
-
key: "North",
|
|
4688
4778
|
style: { top: 0, left: r.width / 2 - offset, width: length, height: width, borderBottomLeftRadius: radius, borderBottomRightRadius: radius },
|
|
4689
|
-
className: className + " " + this.getClassName("flexlayout__edge_rect_top" /* FLEXLAYOUT__EDGE_RECT_TOP */)
|
|
4779
|
+
className: className + " " + this.getClassName("flexlayout__edge_rect_top" /* FLEXLAYOUT__EDGE_RECT_TOP */),
|
|
4780
|
+
children: /* @__PURE__ */ jsx17("div", { style: { transform: "rotate(180deg)" }, children: arrowIcon })
|
|
4690
4781
|
},
|
|
4691
|
-
|
|
4782
|
+
"North"
|
|
4692
4783
|
)
|
|
4693
4784
|
);
|
|
4694
4785
|
edges.push(
|
|
4695
|
-
/* @__PURE__ */
|
|
4786
|
+
/* @__PURE__ */ jsx17(
|
|
4696
4787
|
"div",
|
|
4697
4788
|
{
|
|
4698
|
-
key: "West",
|
|
4699
4789
|
style: { top: r.height / 2 - offset, left: 0, width, height: length, borderTopRightRadius: radius, borderBottomRightRadius: radius },
|
|
4700
|
-
className: className + " " + this.getClassName("flexlayout__edge_rect_left" /* FLEXLAYOUT__EDGE_RECT_LEFT */)
|
|
4790
|
+
className: className + " " + this.getClassName("flexlayout__edge_rect_left" /* FLEXLAYOUT__EDGE_RECT_LEFT */),
|
|
4791
|
+
children: /* @__PURE__ */ jsx17("div", { style: { transform: "rotate(90deg)" }, children: arrowIcon })
|
|
4701
4792
|
},
|
|
4702
|
-
|
|
4793
|
+
"West"
|
|
4703
4794
|
)
|
|
4704
4795
|
);
|
|
4705
4796
|
edges.push(
|
|
4706
|
-
/* @__PURE__ */
|
|
4797
|
+
/* @__PURE__ */ jsx17(
|
|
4707
4798
|
"div",
|
|
4708
4799
|
{
|
|
4709
|
-
key: "South",
|
|
4710
4800
|
style: { top: r.height - width, left: r.width / 2 - offset, width: length, height: width, borderTopLeftRadius: radius, borderTopRightRadius: radius },
|
|
4711
|
-
className: className + " " + this.getClassName("flexlayout__edge_rect_bottom" /* FLEXLAYOUT__EDGE_RECT_BOTTOM */)
|
|
4801
|
+
className: className + " " + this.getClassName("flexlayout__edge_rect_bottom" /* FLEXLAYOUT__EDGE_RECT_BOTTOM */),
|
|
4802
|
+
children: /* @__PURE__ */ jsx17("div", { children: arrowIcon })
|
|
4712
4803
|
},
|
|
4713
|
-
|
|
4804
|
+
"South"
|
|
4714
4805
|
)
|
|
4715
4806
|
);
|
|
4716
4807
|
edges.push(
|
|
4717
|
-
/* @__PURE__ */
|
|
4808
|
+
/* @__PURE__ */ jsx17(
|
|
4718
4809
|
"div",
|
|
4719
4810
|
{
|
|
4720
|
-
key: "East",
|
|
4721
4811
|
style: { top: r.height / 2 - offset, left: r.width - width, width, height: length, borderTopLeftRadius: radius, borderBottomLeftRadius: radius },
|
|
4722
|
-
className: className + " " + this.getClassName("flexlayout__edge_rect_right" /* FLEXLAYOUT__EDGE_RECT_RIGHT */)
|
|
4812
|
+
className: className + " " + this.getClassName("flexlayout__edge_rect_right" /* FLEXLAYOUT__EDGE_RECT_RIGHT */),
|
|
4813
|
+
children: /* @__PURE__ */ jsx17("div", { style: { transform: "rotate(-90deg)" }, children: arrowIcon })
|
|
4723
4814
|
},
|
|
4724
|
-
|
|
4815
|
+
"East"
|
|
4725
4816
|
)
|
|
4726
4817
|
);
|
|
4727
4818
|
}
|
|
@@ -4741,7 +4832,7 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4741
4832
|
const key = child.getId();
|
|
4742
4833
|
tabMoveables.push(
|
|
4743
4834
|
createPortal2(
|
|
4744
|
-
/* @__PURE__ */
|
|
4835
|
+
/* @__PURE__ */ jsx17(SizeTracker, { rect, selected: child.isSelected(), forceRevision: this.state.forceRevision, tabsRevision: this.props.renderRevision, children: /* @__PURE__ */ jsx17(ErrorBoundary, { message: this.i18nName("Error rendering component" /* Error_rendering_component */), children: this.props.factory(child) }) }, key),
|
|
4745
4836
|
element,
|
|
4746
4837
|
key
|
|
4747
4838
|
)
|
|
@@ -4757,7 +4848,7 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4757
4848
|
this.props.model.visitNodes((node) => {
|
|
4758
4849
|
if (node instanceof TabNode) {
|
|
4759
4850
|
const child = node;
|
|
4760
|
-
tabStamps.push(/* @__PURE__ */
|
|
4851
|
+
tabStamps.push(/* @__PURE__ */ jsx17(DragContainer, { layout: this, node: child }, child.getId()));
|
|
4761
4852
|
}
|
|
4762
4853
|
});
|
|
4763
4854
|
return tabStamps;
|
|
@@ -4771,14 +4862,14 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
4771
4862
|
const path = child.getPath();
|
|
4772
4863
|
const renderTab = child.isRendered() || selected || !child.isEnableRenderOnDemand();
|
|
4773
4864
|
if (renderTab) {
|
|
4774
|
-
tabs.set(child.getId(), /* @__PURE__ */
|
|
4865
|
+
tabs.set(child.getId(), /* @__PURE__ */ jsx17(Tab, { layout: this, path, node: child, selected }, child.getId()));
|
|
4775
4866
|
}
|
|
4776
4867
|
}
|
|
4777
4868
|
});
|
|
4778
4869
|
return tabs;
|
|
4779
4870
|
}
|
|
4780
4871
|
renderMetricsElements() {
|
|
4781
|
-
return /* @__PURE__ */
|
|
4872
|
+
return /* @__PURE__ */ jsx17("div", { ref: this.findBorderBarSizeRef, className: this.getClassName("flexlayout__border_sizer" /* FLEXLAYOUT__BORDER_SIZER */), children: "FindBorderBarSize" }, "findBorderBarSize");
|
|
4782
4873
|
}
|
|
4783
4874
|
checkForBorderToShow(x, y) {
|
|
4784
4875
|
const r = this.getBoundingClientRect(this.mainRef.current);
|
|
@@ -5053,7 +5144,7 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
5053
5144
|
const y = isInVerticalBorder ? 10 : offsetY;
|
|
5054
5145
|
let rendered = false;
|
|
5055
5146
|
if (this.props.onRenderDragRect) {
|
|
5056
|
-
const content = /* @__PURE__ */
|
|
5147
|
+
const content = /* @__PURE__ */ jsx17(TabButtonStamp, { layout: this, node }, node.getId());
|
|
5057
5148
|
const dragComponent = this.props.onRenderDragRect(content, node, void 0);
|
|
5058
5149
|
if (dragComponent) {
|
|
5059
5150
|
this.setDragComponent(event, dragComponent, x, y);
|
|
@@ -5062,7 +5153,7 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
5062
5153
|
}
|
|
5063
5154
|
if (!rendered) {
|
|
5064
5155
|
if (isSafari()) {
|
|
5065
|
-
this.setDragComponent(event, /* @__PURE__ */
|
|
5156
|
+
this.setDragComponent(event, /* @__PURE__ */ jsx17(TabButtonStamp, { node, layout: this }), x, y);
|
|
5066
5157
|
} else {
|
|
5067
5158
|
event.dataTransfer.setDragImage(node.getTabStamp(), x, y);
|
|
5068
5159
|
}
|
|
@@ -5070,7 +5161,7 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
5070
5161
|
}
|
|
5071
5162
|
};
|
|
5072
5163
|
setDragComponent(event, component, x, y) {
|
|
5073
|
-
const dragElement = /* @__PURE__ */
|
|
5164
|
+
const dragElement = /* @__PURE__ */ jsx17("div", { style: { position: "unset" }, className: this.getClassName("flexlayout__layout" /* FLEXLAYOUT__LAYOUT */) + " " + this.getClassName("flexlayout__drag_rect" /* FLEXLAYOUT__DRAG_RECT */), children: component });
|
|
5074
5165
|
const tempDiv = this.currentDocument.createElement("div");
|
|
5075
5166
|
tempDiv.setAttribute("data-layout-path", "/drag-rectangle");
|
|
5076
5167
|
tempDiv.style.position = "absolute";
|
|
@@ -5201,13 +5292,13 @@ var LayoutInternal = class _LayoutInternal extends React18.Component {
|
|
|
5201
5292
|
};
|
|
5202
5293
|
var FlexLayoutVersion = "0.8.1";
|
|
5203
5294
|
var defaultIcons = {
|
|
5204
|
-
close: /* @__PURE__ */
|
|
5205
|
-
closeTabset: /* @__PURE__ */
|
|
5206
|
-
maximize: /* @__PURE__ */
|
|
5207
|
-
restore: /* @__PURE__ */
|
|
5208
|
-
more: /* @__PURE__ */
|
|
5209
|
-
edgeArrow: /* @__PURE__ */
|
|
5210
|
-
activeTabset: /* @__PURE__ */
|
|
5295
|
+
close: /* @__PURE__ */ jsx17(CloseIcon, {}),
|
|
5296
|
+
closeTabset: /* @__PURE__ */ jsx17(CloseIcon, {}),
|
|
5297
|
+
maximize: /* @__PURE__ */ jsx17(MaximizeIcon, {}),
|
|
5298
|
+
restore: /* @__PURE__ */ jsx17(RestoreIcon, {}),
|
|
5299
|
+
more: /* @__PURE__ */ jsx17(OverflowIcon, {}),
|
|
5300
|
+
edgeArrow: /* @__PURE__ */ jsx17(EdgeIcon, {}),
|
|
5301
|
+
activeTabset: /* @__PURE__ */ jsx17(AsterickIcon, {})
|
|
5211
5302
|
};
|
|
5212
5303
|
var edgeRectLength = 100;
|
|
5213
5304
|
var edgeRectWidth = 10;
|
|
@@ -5227,8 +5318,8 @@ var DragState = class {
|
|
|
5227
5318
|
};
|
|
5228
5319
|
|
|
5229
5320
|
// src/view/OptimizedLayout.tsx
|
|
5230
|
-
import * as React19 from "react";
|
|
5231
5321
|
import { memo as memo2, useCallback, useEffect as useEffect6, useLayoutEffect as useLayoutEffect8, useMemo, useRef as useRef11, useState as useState3 } from "react";
|
|
5322
|
+
import { jsx as jsx18, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
5232
5323
|
function createTabInfo(node) {
|
|
5233
5324
|
const parent = node.getParent();
|
|
5234
5325
|
const contentRect = parent?.getContentRect() ?? Rect.empty();
|
|
@@ -5314,7 +5405,7 @@ var TabPanel = memo2(function TabPanel2({
|
|
|
5314
5405
|
isHidden = true;
|
|
5315
5406
|
}
|
|
5316
5407
|
}
|
|
5317
|
-
return /* @__PURE__ */
|
|
5408
|
+
return /* @__PURE__ */ jsx18(
|
|
5318
5409
|
"div",
|
|
5319
5410
|
{
|
|
5320
5411
|
ref: selfRef,
|
|
@@ -5332,9 +5423,9 @@ var TabPanel = memo2(function TabPanel2({
|
|
|
5332
5423
|
zIndex,
|
|
5333
5424
|
// Tab panels receive pointer events when visible and not dragging
|
|
5334
5425
|
pointerEvents: !isHidden && !isDragging ? "auto" : "none"
|
|
5335
|
-
}
|
|
5336
|
-
|
|
5337
|
-
|
|
5426
|
+
},
|
|
5427
|
+
children: content
|
|
5428
|
+
}
|
|
5338
5429
|
);
|
|
5339
5430
|
});
|
|
5340
5431
|
function TabContainer({
|
|
@@ -5350,13 +5441,12 @@ function TabContainer({
|
|
|
5350
5441
|
const maximizedTabset = model.getMaximizedTabset(Model.MAIN_WINDOW_ID);
|
|
5351
5442
|
const hasMaximizedTabset = maximizedTabset !== void 0;
|
|
5352
5443
|
const containerStyle = hasMaximizedTabset ? { zIndex: 10 } : {};
|
|
5353
|
-
return /* @__PURE__ */
|
|
5444
|
+
return /* @__PURE__ */ jsx18("div", { className: "flexlayout__optimized_layout_tab_container", "data-layout-path": "/tab-container", style: containerStyle, children: Array.from(tabs.entries()).map(([nodeId, tabInfo]) => {
|
|
5354
5445
|
const parent = tabInfo.node.getParent();
|
|
5355
5446
|
const isMaximized = parent instanceof TabSetNode && parent.isMaximized();
|
|
5356
|
-
return /* @__PURE__ */
|
|
5447
|
+
return /* @__PURE__ */ jsx18(
|
|
5357
5448
|
TabPanel,
|
|
5358
5449
|
{
|
|
5359
|
-
key: nodeId,
|
|
5360
5450
|
nodeId,
|
|
5361
5451
|
node: tabInfo.node,
|
|
5362
5452
|
rect: tabInfo.rect,
|
|
@@ -5368,9 +5458,10 @@ function TabContainer({
|
|
|
5368
5458
|
model,
|
|
5369
5459
|
isMaximized,
|
|
5370
5460
|
hasMaximizedTabset
|
|
5371
|
-
}
|
|
5461
|
+
},
|
|
5462
|
+
nodeId
|
|
5372
5463
|
);
|
|
5373
|
-
}));
|
|
5464
|
+
}) });
|
|
5374
5465
|
}
|
|
5375
5466
|
function OptimizedLayout({ model, renderTab, classNameMapper, onDragStateChange, onModelChange: userOnModelChange, ...layoutProps }) {
|
|
5376
5467
|
const [isDragging, setIsDragging] = useState3(false);
|
|
@@ -5477,11 +5568,14 @@ function OptimizedLayout({ model, renderTab, classNameMapper, onDragStateChange,
|
|
|
5477
5568
|
);
|
|
5478
5569
|
const factory = useCallback(
|
|
5479
5570
|
(node) => {
|
|
5480
|
-
return /* @__PURE__ */
|
|
5571
|
+
return /* @__PURE__ */ jsx18(TabRef, { node, selected: node.isSelected(), onTabMount: handleTabMount, onRectChange: handleRectChange, onVisibilityChange: handleVisibilityChange }, node.getId());
|
|
5481
5572
|
},
|
|
5482
5573
|
[handleTabMount, handleRectChange, handleVisibilityChange]
|
|
5483
5574
|
);
|
|
5484
|
-
return /* @__PURE__ */
|
|
5575
|
+
return /* @__PURE__ */ jsxs9("div", { className: "flexlayout__optimized_layout", children: [
|
|
5576
|
+
/* @__PURE__ */ jsx18(Layout, { model, factory, classNameMapper, onDragStateChange: handleDragStateChange, onModelChange: handleModelChange, ...layoutProps }),
|
|
5577
|
+
/* @__PURE__ */ jsx18(TabContainer, { tabs, renderTab, isDragging, classNameMapper, model, maximizedTabsetId })
|
|
5578
|
+
] });
|
|
5485
5579
|
}
|
|
5486
5580
|
|
|
5487
5581
|
// src/model/walk.ts
|