flexlayout-react 0.8.10 → 0.8.12
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/ChangeLog.txt +9 -0
- package/README.md +28 -20
- package/declarations/view/BorderTab.d.ts +1 -2
- package/declarations/view/Icons.d.ts +7 -8
- package/declarations/view/Layout.d.ts +1 -1
- package/declarations/view/SizeTracker.d.ts +1 -1
- package/dist/flexlayout.js +49 -29
- package/dist/flexlayout_min.js +1 -1
- package/dist/flexlayout_min.js.LICENSE.txt +10 -0
- package/dist/src/Attribute.js +43 -0
- package/dist/src/Attribute.js.map +1 -0
- package/dist/src/AttributeDefinitions.js +132 -0
- package/dist/src/AttributeDefinitions.js.map +1 -0
- package/dist/src/DockLocation.js +121 -0
- package/dist/src/DockLocation.js.map +1 -0
- package/dist/src/DropInfo.js +10 -0
- package/dist/src/DropInfo.js.map +1 -0
- package/dist/src/I18nLabel.js +14 -0
- package/dist/src/I18nLabel.js.map +1 -0
- package/dist/src/Orientation.js +23 -0
- package/dist/src/Orientation.js.map +1 -0
- package/dist/src/Rect.js +111 -0
- package/dist/src/Rect.js.map +1 -0
- package/dist/src/Types.js +95 -0
- package/dist/src/Types.js.map +1 -0
- package/dist/src/index.js +22 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/model/Action.js +7 -0
- package/dist/src/model/Action.js.map +1 -0
- package/dist/src/model/Actions.js +170 -0
- package/dist/src/model/Actions.js.map +1 -0
- package/dist/src/model/BorderNode.js +390 -0
- package/dist/src/model/BorderNode.js.map +1 -0
- package/dist/src/model/BorderSet.js +67 -0
- package/dist/src/model/BorderSet.js.map +1 -0
- package/dist/src/model/ICloseType.js +7 -0
- package/dist/src/model/ICloseType.js.map +1 -0
- package/dist/src/model/IDraggable.js +2 -0
- package/dist/src/model/IDraggable.js.map +1 -0
- package/dist/src/model/IDropTarget.js +2 -0
- package/dist/src/model/IDropTarget.js.map +1 -0
- package/dist/src/model/IJsonModel.js +2 -0
- package/dist/src/model/IJsonModel.js.map +1 -0
- package/dist/src/model/LayoutWindow.js +81 -0
- package/dist/src/model/LayoutWindow.js.map +1 -0
- package/dist/src/model/Model.js +608 -0
- package/dist/src/model/Model.js.map +1 -0
- package/dist/src/model/Node.js +218 -0
- package/dist/src/model/Node.js.map +1 -0
- package/dist/src/model/RowNode.js +492 -0
- package/dist/src/model/RowNode.js.map +1 -0
- package/dist/src/model/TabNode.js +293 -0
- package/dist/src/model/TabNode.js.map +1 -0
- package/dist/src/model/TabSetNode.js +469 -0
- package/dist/src/model/TabSetNode.js.map +1 -0
- package/dist/src/model/Utils.js +48 -0
- package/dist/src/model/Utils.js.map +1 -0
- package/dist/src/view/BorderButton.js +126 -0
- package/dist/src/view/BorderButton.js.map +1 -0
- package/dist/src/view/BorderTab.js +44 -0
- package/dist/src/view/BorderTab.js.map +1 -0
- package/dist/src/view/BorderTabSet.js +138 -0
- package/dist/src/view/BorderTabSet.js.map +1 -0
- package/dist/src/view/DragContainer.js +16 -0
- package/dist/src/view/DragContainer.js.map +1 -0
- package/dist/src/view/ErrorBoundary.js +24 -0
- package/dist/src/view/ErrorBoundary.js.map +1 -0
- package/dist/src/view/Icons.js +29 -0
- package/dist/src/view/Icons.js.map +1 -0
- package/dist/src/view/Layout.js +881 -0
- package/dist/src/view/Layout.js.map +1 -0
- package/dist/src/view/Overlay.js +9 -0
- package/dist/src/view/Overlay.js.map +1 -0
- package/dist/src/view/PopoutWindow.js +129 -0
- package/dist/src/view/PopoutWindow.js.map +1 -0
- package/dist/src/view/PopupMenu.js +89 -0
- package/dist/src/view/PopupMenu.js.map +1 -0
- package/dist/src/view/Row.js +46 -0
- package/dist/src/view/Row.js.map +1 -0
- package/dist/src/view/SizeTracker.js +12 -0
- package/dist/src/view/SizeTracker.js.map +1 -0
- package/dist/src/view/Splitter.js +192 -0
- package/dist/src/view/Splitter.js.map +1 -0
- package/dist/src/view/Tab.js +91 -0
- package/dist/src/view/Tab.js.map +1 -0
- package/dist/src/view/TabButton.js +124 -0
- package/dist/src/view/TabButton.js.map +1 -0
- package/dist/src/view/TabButtonStamp.js +15 -0
- package/dist/src/view/TabButtonStamp.js.map +1 -0
- package/dist/src/view/TabOverflowHook.js +266 -0
- package/dist/src/view/TabOverflowHook.js.map +1 -0
- package/dist/src/view/TabSet.js +256 -0
- package/dist/src/view/TabSet.js.map +1 -0
- package/dist/src/view/Utils.js +110 -0
- package/dist/src/view/Utils.js.map +1 -0
- package/lib/view/BorderButton.js +6 -8
- package/lib/view/BorderButton.js.map +1 -1
- package/lib/view/BorderTab.js +18 -9
- package/lib/view/BorderTab.js.map +1 -1
- package/lib/view/BorderTabSet.js +11 -17
- package/lib/view/BorderTabSet.js.map +1 -1
- package/lib/view/DragContainer.js +2 -2
- package/lib/view/DragContainer.js.map +1 -1
- package/lib/view/ErrorBoundary.js +2 -2
- package/lib/view/ErrorBoundary.js.map +1 -1
- package/lib/view/Icons.js +8 -20
- package/lib/view/Icons.js.map +1 -1
- package/lib/view/Layout.js +36 -79
- package/lib/view/Layout.js.map +1 -1
- package/lib/view/Overlay.js +2 -2
- package/lib/view/Overlay.js.map +1 -1
- package/lib/view/PopupMenu.js +4 -5
- package/lib/view/PopupMenu.js.map +1 -1
- package/lib/view/Row.js +5 -4
- package/lib/view/Row.js.map +1 -1
- package/lib/view/SizeTracker.js +2 -1
- package/lib/view/SizeTracker.js.map +1 -1
- package/lib/view/Splitter.js +9 -4
- package/lib/view/Splitter.js.map +1 -1
- package/lib/view/Tab.js +3 -4
- package/lib/view/Tab.js.map +1 -1
- package/lib/view/TabButton.js +6 -8
- package/lib/view/TabButton.js.map +1 -1
- package/lib/view/TabButtonStamp.js +4 -6
- package/lib/view/TabButtonStamp.js.map +1 -1
- package/lib/view/TabSet.js +38 -42
- package/lib/view/TabSet.js.map +1 -1
- package/lib/view/Utils.js +3 -3
- package/lib/view/Utils.js.map +1 -1
- package/package.json +87 -82
- package/src/view/BorderTab.tsx +18 -7
- package/src/view/Icons.tsx +0 -2
- package/src/view/Layout.tsx +2 -2
- package/src/view/Overlay.tsx +0 -1
- package/src/view/Splitter.tsx +6 -0
- package/src/view/TabButtonStamp.tsx +0 -1
- package/src/view/TabSet.tsx +16 -7
- package/eslint.config.mjs +0 -19
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { BorderNode } from "./BorderNode";
|
|
2
|
+
export class BorderSet {
|
|
3
|
+
/** @internal */
|
|
4
|
+
static fromJson(json, model) {
|
|
5
|
+
const borderSet = new BorderSet(model);
|
|
6
|
+
borderSet.borders = json.map((borderJson) => BorderNode.fromJson(borderJson, model));
|
|
7
|
+
for (const border of borderSet.borders) {
|
|
8
|
+
borderSet.borderMap.set(border.getLocation(), border);
|
|
9
|
+
}
|
|
10
|
+
return borderSet;
|
|
11
|
+
}
|
|
12
|
+
/** @internal */
|
|
13
|
+
constructor(_model) {
|
|
14
|
+
this.borders = [];
|
|
15
|
+
this.borderMap = new Map();
|
|
16
|
+
this.layoutHorizontal = true;
|
|
17
|
+
}
|
|
18
|
+
toJson() {
|
|
19
|
+
return this.borders.map((borderNode) => borderNode.toJson());
|
|
20
|
+
}
|
|
21
|
+
/** @internal */
|
|
22
|
+
getLayoutHorizontal() {
|
|
23
|
+
return this.layoutHorizontal;
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
getBorders() {
|
|
27
|
+
return this.borders;
|
|
28
|
+
}
|
|
29
|
+
/** @internal */
|
|
30
|
+
getBorderMap() {
|
|
31
|
+
return this.borderMap;
|
|
32
|
+
}
|
|
33
|
+
/** @internal */
|
|
34
|
+
forEachNode(fn) {
|
|
35
|
+
for (const borderNode of this.borders) {
|
|
36
|
+
fn(borderNode, 0);
|
|
37
|
+
for (const node of borderNode.getChildren()) {
|
|
38
|
+
node.forEachNode(fn, 1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** @internal */
|
|
43
|
+
setPaths() {
|
|
44
|
+
for (const borderNode of this.borders) {
|
|
45
|
+
const path = "/border/" + borderNode.getLocation().getName();
|
|
46
|
+
borderNode.setPath(path);
|
|
47
|
+
let i = 0;
|
|
48
|
+
for (const node of borderNode.getChildren()) {
|
|
49
|
+
node.setPath(path + "/t" + i);
|
|
50
|
+
i++;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** @internal */
|
|
55
|
+
findDropTargetNode(dragNode, x, y) {
|
|
56
|
+
for (const border of this.borders) {
|
|
57
|
+
if (border.isShowing()) {
|
|
58
|
+
const dropInfo = border.canDrop(dragNode, x, y);
|
|
59
|
+
if (dropInfo !== undefined) {
|
|
60
|
+
return dropInfo;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=BorderSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BorderSet.js","sourceRoot":"","sources":["../../../src/model/BorderSet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,MAAM,OAAO,SAAS;IAClB,gBAAgB;IAChB,MAAM,CAAC,QAAQ,CAAC,IAAS,EAAE,KAAY;QACnC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,UAAe,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACrC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAQD,gBAAgB;IAChB,YAAY,MAAa;QACrB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QACrD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,gBAAgB;IAChB,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,gBAAgB;IAChB,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,gBAAgB;IAChB,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,gBAAgB;IAChB,WAAW,CAAC,EAAuC;QAC/C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAEG,gBAAgB;IAChB,QAAQ;QACJ,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;YAC7D,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAE,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC/B,CAAC,EAAE,CAAC;YACR,CAAC;QACL,CAAC;IACL,CAAC;IAGL,gBAAgB;IAChB,kBAAkB,CAAC,QAA2B,EAAE,CAAS,EAAE,CAAS;QAChE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,QAAQ,CAAC;gBACpB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var ICloseType;
|
|
2
|
+
(function (ICloseType) {
|
|
3
|
+
ICloseType[ICloseType["Visible"] = 1] = "Visible";
|
|
4
|
+
ICloseType[ICloseType["Always"] = 2] = "Always";
|
|
5
|
+
ICloseType[ICloseType["Selected"] = 3] = "Selected";
|
|
6
|
+
})(ICloseType || (ICloseType = {}));
|
|
7
|
+
//# sourceMappingURL=ICloseType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICloseType.js","sourceRoot":"","sources":["../../../src/model/ICloseType.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,iDAAW,CAAA;IACX,+CAAU,CAAA;IACV,mDAAY,CAAA;AAChB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDraggable.js","sourceRoot":"","sources":["../../../src/model/IDraggable.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDropTarget.js","sourceRoot":"","sources":["../../../src/model/IDropTarget.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IJsonModel.js","sourceRoot":"","sources":["../../../src/model/IJsonModel.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Rect } from "../Rect";
|
|
2
|
+
import { RowNode } from "./RowNode";
|
|
3
|
+
export class LayoutWindow {
|
|
4
|
+
constructor(windowId, rect) {
|
|
5
|
+
this._windowId = windowId;
|
|
6
|
+
this._rect = rect;
|
|
7
|
+
this._toScreenRectFunction = (r) => r;
|
|
8
|
+
}
|
|
9
|
+
visitNodes(fn) {
|
|
10
|
+
this.root.forEachNode(fn, 0);
|
|
11
|
+
}
|
|
12
|
+
get windowId() {
|
|
13
|
+
return this._windowId;
|
|
14
|
+
}
|
|
15
|
+
get rect() {
|
|
16
|
+
return this._rect;
|
|
17
|
+
}
|
|
18
|
+
get layout() {
|
|
19
|
+
return this._layout;
|
|
20
|
+
}
|
|
21
|
+
get window() {
|
|
22
|
+
return this._window;
|
|
23
|
+
}
|
|
24
|
+
get root() {
|
|
25
|
+
return this._root;
|
|
26
|
+
}
|
|
27
|
+
get maximizedTabSet() {
|
|
28
|
+
return this._maximizedTabSet;
|
|
29
|
+
}
|
|
30
|
+
get activeTabSet() {
|
|
31
|
+
return this._activeTabSet;
|
|
32
|
+
}
|
|
33
|
+
/** @internal */
|
|
34
|
+
set rect(value) {
|
|
35
|
+
this._rect = value;
|
|
36
|
+
}
|
|
37
|
+
/** @internal */
|
|
38
|
+
set layout(value) {
|
|
39
|
+
this._layout = value;
|
|
40
|
+
}
|
|
41
|
+
/** @internal */
|
|
42
|
+
set window(value) {
|
|
43
|
+
this._window = value;
|
|
44
|
+
}
|
|
45
|
+
/** @internal */
|
|
46
|
+
set root(value) {
|
|
47
|
+
this._root = value;
|
|
48
|
+
}
|
|
49
|
+
/** @internal */
|
|
50
|
+
set maximizedTabSet(value) {
|
|
51
|
+
this._maximizedTabSet = value;
|
|
52
|
+
}
|
|
53
|
+
/** @internal */
|
|
54
|
+
set activeTabSet(value) {
|
|
55
|
+
this._activeTabSet = value;
|
|
56
|
+
}
|
|
57
|
+
/** @internal */
|
|
58
|
+
get toScreenRectFunction() {
|
|
59
|
+
return this._toScreenRectFunction;
|
|
60
|
+
}
|
|
61
|
+
/** @internal */
|
|
62
|
+
set toScreenRectFunction(value) {
|
|
63
|
+
this._toScreenRectFunction = value;
|
|
64
|
+
}
|
|
65
|
+
toJson() {
|
|
66
|
+
// chrome sets top,left to large -ve values when minimized, dont save in this case
|
|
67
|
+
if (this._window && this._window.screenTop > -10000) {
|
|
68
|
+
this.rect = new Rect(this._window.screenLeft, this._window.screenTop, this._window.outerWidth, this._window.outerHeight);
|
|
69
|
+
}
|
|
70
|
+
return { layout: this.root.toJson(), rect: this.rect.toJson() };
|
|
71
|
+
}
|
|
72
|
+
static fromJson(windowJson, model, windowId) {
|
|
73
|
+
const count = model.getwindowsMap().size;
|
|
74
|
+
let rect = windowJson.rect ? Rect.fromJson(windowJson.rect) : new Rect(50 + 50 * count, 50 + 50 * count, 600, 400);
|
|
75
|
+
rect.snap(10); // snapping prevents issue where window moves 1 pixel per save/restore on Chrome
|
|
76
|
+
const layoutWindow = new LayoutWindow(windowId, rect);
|
|
77
|
+
layoutWindow.root = RowNode.fromJson(windowJson.layout, model, layoutWindow);
|
|
78
|
+
return layoutWindow;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=LayoutWindow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutWindow.js","sourceRoot":"","sources":["../../../src/model/LayoutWindow.ts"],"names":[],"mappings":"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"}
|