flexlayout-react 0.6.3 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/ChangeLog.txt +13 -0
  2. package/declarations/Types.d.ts +2 -0
  3. package/declarations/model/Model.d.ts +1 -2
  4. package/declarations/model/RowNode.d.ts +0 -2
  5. package/dist/flexlayout.js +193 -319
  6. package/dist/flexlayout_min.js +1 -1
  7. package/lib/Attribute.js +1 -1
  8. package/lib/Attribute.js.map +1 -1
  9. package/lib/AttributeDefinitions.js +21 -12
  10. package/lib/AttributeDefinitions.js.map +1 -1
  11. package/lib/DockLocation.js +6 -6
  12. package/lib/DockLocation.js.map +1 -1
  13. package/lib/DragDrop.js +24 -22
  14. package/lib/DragDrop.js.map +1 -1
  15. package/lib/Orientation.js +1 -1
  16. package/lib/Orientation.js.map +1 -1
  17. package/lib/PopupMenu.js +6 -6
  18. package/lib/PopupMenu.js.map +1 -1
  19. package/lib/Rect.js +1 -1
  20. package/lib/Rect.js.map +1 -1
  21. package/lib/Types.js +2 -0
  22. package/lib/Types.js.map +1 -1
  23. package/lib/model/BorderNode.js +31 -31
  24. package/lib/model/BorderNode.js.map +1 -1
  25. package/lib/model/BorderSet.js +18 -14
  26. package/lib/model/BorderSet.js.map +1 -1
  27. package/lib/model/Model.js +40 -35
  28. package/lib/model/Model.js.map +1 -1
  29. package/lib/model/Node.js +29 -28
  30. package/lib/model/Node.js.map +1 -1
  31. package/lib/model/RowNode.js +53 -50
  32. package/lib/model/RowNode.js.map +1 -1
  33. package/lib/model/SplitterNode.js +11 -11
  34. package/lib/model/SplitterNode.js.map +1 -1
  35. package/lib/model/TabNode.js +17 -17
  36. package/lib/model/TabNode.js.map +1 -1
  37. package/lib/model/TabSetNode.js +52 -51
  38. package/lib/model/TabSetNode.js.map +1 -1
  39. package/lib/model/Utils.js +3 -3
  40. package/lib/model/Utils.js.map +1 -1
  41. package/lib/view/BorderButton.js +52 -12
  42. package/lib/view/BorderButton.js.map +1 -1
  43. package/lib/view/BorderTabSet.js +5 -4
  44. package/lib/view/BorderTabSet.js.map +1 -1
  45. package/lib/view/ErrorBoundary.js +1 -1
  46. package/lib/view/ErrorBoundary.js.map +1 -1
  47. package/lib/view/FloatingWindow.js +27 -16
  48. package/lib/view/FloatingWindow.js.map +1 -1
  49. package/lib/view/FloatingWindowTab.js +1 -1
  50. package/lib/view/FloatingWindowTab.js.map +1 -1
  51. package/lib/view/Layout.js +80 -75
  52. package/lib/view/Layout.js.map +1 -1
  53. package/lib/view/Splitter.js +1 -1
  54. package/lib/view/Splitter.js.map +1 -1
  55. package/lib/view/Tab.js +5 -5
  56. package/lib/view/Tab.js.map +1 -1
  57. package/lib/view/TabButton.js +10 -15
  58. package/lib/view/TabButton.js.map +1 -1
  59. package/lib/view/TabButtonStamp.js +2 -2
  60. package/lib/view/TabButtonStamp.js.map +1 -1
  61. package/lib/view/TabFloating.js +8 -2
  62. package/lib/view/TabFloating.js.map +1 -1
  63. package/lib/view/TabOverflowHook.js +1 -1
  64. package/lib/view/TabOverflowHook.js.map +1 -1
  65. package/lib/view/TabSet.js +17 -12
  66. package/lib/view/TabSet.js.map +1 -1
  67. package/lib/view/Utils.js +3 -3
  68. package/lib/view/Utils.js.map +1 -1
  69. package/package.json +22 -16
  70. package/src/Attribute.ts +1 -1
  71. package/src/AttributeDefinitions.ts +16 -12
  72. package/src/DockLocation.ts +9 -9
  73. package/src/DragDrop.ts +42 -38
  74. package/src/Orientation.ts +2 -2
  75. package/src/PopupMenu.tsx +4 -4
  76. package/src/Rect.ts +1 -1
  77. package/src/Types.ts +2 -0
  78. package/src/model/BorderNode.ts +29 -28
  79. package/src/model/BorderSet.ts +16 -16
  80. package/src/model/IDraggable.ts +2 -2
  81. package/src/model/IDropTarget.ts +3 -3
  82. package/src/model/Model.ts +41 -41
  83. package/src/model/Node.ts +38 -38
  84. package/src/model/RowNode.ts +46 -44
  85. package/src/model/SplitterNode.ts +11 -11
  86. package/src/model/TabNode.ts +21 -21
  87. package/src/model/TabSetNode.ts +46 -44
  88. package/src/model/Utils.ts +3 -3
  89. package/src/view/BorderButton.tsx +82 -14
  90. package/src/view/BorderTabSet.tsx +6 -2
  91. package/src/view/ErrorBoundary.tsx +3 -3
  92. package/src/view/FloatingWindow.tsx +8 -6
  93. package/src/view/FloatingWindowTab.tsx +2 -2
  94. package/src/view/Layout.tsx +93 -93
  95. package/src/view/Splitter.tsx +2 -2
  96. package/src/view/Tab.tsx +3 -3
  97. package/src/view/TabButton.tsx +11 -15
  98. package/src/view/TabButtonStamp.tsx +2 -2
  99. package/src/view/TabFloating.tsx +11 -2
  100. package/src/view/TabOverflowHook.tsx +1 -1
  101. package/src/view/TabSet.tsx +6 -5
  102. package/src/view/Utils.tsx +3 -3
  103. package/style/_base.scss +55 -43
  104. package/style/dark.css +86 -45
  105. package/style/dark.css.map +1 -1
  106. package/style/dark.scss +70 -25
  107. package/style/gray.css +84 -60
  108. package/style/gray.css.map +1 -1
  109. package/style/gray.scss +70 -24
  110. package/style/light.css +84 -45
  111. package/style/light.css.map +1 -1
  112. package/style/light.scss +68 -19
  113. package/style/underline.css +557 -0
  114. package/style/underline.css.map +1 -0
  115. package/style/underline.scss +172 -0
@@ -1,3 +1,4 @@
1
+ import { v4 as getUUID } from "uuid";
1
2
  import { Attribute } from "../Attribute";
2
3
  import { AttributeDefinitions } from "../AttributeDefinitions";
3
4
  import { DockLocation } from "../DockLocation";
@@ -10,16 +11,14 @@ import { BorderNode } from "./BorderNode";
10
11
  import { BorderSet } from "./BorderSet";
11
12
  import { IDraggable } from "./IDraggable";
12
13
  import { IDropTarget } from "./IDropTarget";
13
- import { IJsonModel } from "./IJsonModel";
14
+ import { IJsonModel, ITabSetAttributes } from "./IJsonModel";
14
15
  import { Node } from "./Node";
15
16
  import { RowNode } from "./RowNode";
16
17
  import { TabNode } from "./TabNode";
17
18
  import { TabSetNode } from "./TabSetNode";
18
- import { ITabSetAttributes } from "./IJsonModel";
19
19
  import { adjustSelectedIndexAfterDock, adjustSelectedIndexAfterFloat } from "./Utils";
20
- import * as uuid from "uuid";
21
20
 
22
- /** @hidden @internal */
21
+ /** @internal */
23
22
  export interface ILayoutMetrics {
24
23
  headerBarSize: number;
25
24
  tabBarSize: number;
@@ -46,10 +45,10 @@ export class Model {
46
45
  model._tidy(); // initial tidy of node tree
47
46
  return model;
48
47
  }
49
- /** @hidden @internal */
48
+ /** @internal */
50
49
  private static _attributeDefinitions: AttributeDefinitions = Model._createAttributeDefinitions();
51
50
 
52
- /** @hidden @internal */
51
+ /** @internal */
53
52
  private static _createAttributeDefinitions(): AttributeDefinitions {
54
53
  const attributeDefinitions = new AttributeDefinitions();
55
54
 
@@ -111,35 +110,35 @@ export class Model {
111
110
  return attributeDefinitions;
112
111
  }
113
112
 
114
- /** @hidden @internal */
113
+ /** @internal */
115
114
  private _attributes: Record<string, any>;
116
- /** @hidden @internal */
115
+ /** @internal */
117
116
  private _idMap: Record<string, Node>;
118
- /** @hidden @internal */
117
+ /** @internal */
119
118
  private _changeListener?: () => void;
120
- /** @hidden @internal */
119
+ /** @internal */
121
120
  private _root?: RowNode;
122
- /** @hidden @internal */
121
+ /** @internal */
123
122
  private _borders: BorderSet;
124
- /** @hidden @internal */
123
+ /** @internal */
125
124
  private _onAllowDrop?: (dragNode: Node, dropInfo: DropInfo) => boolean;
126
- /** @hidden @internal */
125
+ /** @internal */
127
126
  private _maximizedTabSet?: TabSetNode;
128
- /** @hidden @internal */
127
+ /** @internal */
129
128
  private _activeTabSet?: TabSetNode;
130
- /** @hidden @internal */
129
+ /** @internal */
131
130
  private _borderRects: { inner: Rect; outer: Rect } = { inner: Rect.empty(), outer: Rect.empty() };
132
- /** @hidden @internal */
131
+ /** @internal */
133
132
  private _pointerFine: boolean;
134
- /** @hidden @internal */
133
+ /** @internal */
135
134
  private _onCreateTabSet?: (tabNode?: TabNode) => ITabSetAttributes;
136
- /** @hidden @internal */
135
+ /** @internal */
137
136
  private _showHiddenBorder: DockLocation;
138
137
 
139
138
 
140
139
  /**
141
140
  * 'private' constructor. Use the static method Model.fromJson(json) to create a model
142
- * @hidden @internal
141
+ * @internal
143
142
  */
144
143
 
145
144
  private constructor() {
@@ -150,7 +149,7 @@ export class Model {
150
149
  this._showHiddenBorder = DockLocation.CENTER;
151
150
  }
152
151
 
153
- /** @hidden @internal */
152
+ /** @internal */
154
153
  _setChangeListener(listener: (() => void) | undefined) {
155
154
  this._changeListener = listener;
156
155
  }
@@ -166,17 +165,17 @@ export class Model {
166
165
  }
167
166
  }
168
167
 
169
- /** @hidden @internal */
168
+ /** @internal */
170
169
  _getShowHiddenBorder() {
171
170
  return this._showHiddenBorder;
172
171
  }
173
172
 
174
- /** @hidden @internal */
173
+ /** @internal */
175
174
  _setShowHiddenBorder(location: DockLocation) {
176
175
  this._showHiddenBorder = location;
177
176
  }
178
177
 
179
- /** @hidden @internal */
178
+ /** @internal */
180
179
  _setActiveTabset(tabsetNode: TabSetNode | undefined) {
181
180
  this._activeTabSet = tabsetNode;
182
181
  }
@@ -188,7 +187,7 @@ export class Model {
188
187
  return this._maximizedTabSet;
189
188
  }
190
189
 
191
- /** @hidden @internal */
190
+ /** @internal */
192
191
  _setMaximizedTabset(tabsetNode: (TabSetNode | undefined)) {
193
192
  this._maximizedTabSet = tabsetNode;
194
193
  }
@@ -217,17 +216,17 @@ export class Model {
217
216
  return this._borders;
218
217
  }
219
218
 
220
- /** @hidden @internal */
219
+ /** @internal */
221
220
  _getOuterInnerRects() {
222
221
  return this._borderRects;
223
222
  }
224
223
 
225
- /** @hidden @internal */
224
+ /** @internal */
226
225
  _getPointerFine() {
227
226
  return this._pointerFine;
228
227
  }
229
228
 
230
- /** @hidden @internal */
229
+ /** @internal */
231
230
  _setPointerFine(pointerFine: boolean) {
232
231
  this._pointerFine = pointerFine;
233
232
  }
@@ -291,11 +290,12 @@ export class Model {
291
290
  if (node instanceof TabSetNode) {
292
291
  // first delete all child tabs that are closeable
293
292
  const children = [...node.getChildren()];
294
- children.forEach((child, i) => {
293
+ for (let i = 0; i < children.length; i++) {
294
+ const child = children[i];
295
295
  if ((child as TabNode).isEnableClose()) {
296
296
  (child as TabNode)._delete();
297
297
  }
298
- });
298
+ }
299
299
 
300
300
  if (node.getChildren().length === 0) {
301
301
  node._delete();
@@ -408,7 +408,7 @@ export class Model {
408
408
  return returnVal;
409
409
  }
410
410
 
411
- /** @hidden @internal */
411
+ /** @internal */
412
412
  _updateIdMap() {
413
413
  // regenerate idMap to stop it building up
414
414
  this._idMap = {};
@@ -416,7 +416,7 @@ export class Model {
416
416
  // console.log(JSON.stringify(Object.keys(this._idMap)));
417
417
  }
418
418
 
419
- /** @hidden @internal */
419
+ /** @internal */
420
420
  _adjustSplitSide(node: TabSetNode | RowNode, weight: number, pixels: number) {
421
421
  node._setWeight(weight);
422
422
  if (node.getWidth() != null && node.getOrientation() === Orientation.VERT) {
@@ -463,7 +463,7 @@ export class Model {
463
463
  return this._attributes.enableEdgeDock as boolean;
464
464
  }
465
465
 
466
- /** @hidden @internal */
466
+ /** @internal */
467
467
  _addNode(node: Node) {
468
468
  const id = node.getId();
469
469
  if (this._idMap[id] !== undefined) {
@@ -475,7 +475,7 @@ export class Model {
475
475
  }
476
476
  }
477
477
 
478
- /** @hidden @internal */
478
+ /** @internal */
479
479
  _layout(rect: Rect, metrics: ILayoutMetrics) {
480
480
  // let start = Date.now();
481
481
  this._borderRects = this._borders._layoutBorder({ outer: rect, inner: rect }, metrics);
@@ -487,7 +487,7 @@ export class Model {
487
487
  return rect;
488
488
  }
489
489
 
490
- /** @hidden @internal */
490
+ /** @internal */
491
491
  _findDropTargetNode(dragNode: Node & IDraggable, x: number, y: number) {
492
492
  let node = (this._root as RowNode)._findDropTargetNode(dragNode, x, y);
493
493
  if (node === undefined) {
@@ -496,24 +496,24 @@ export class Model {
496
496
  return node;
497
497
  }
498
498
 
499
- /** @hidden @internal */
499
+ /** @internal */
500
500
  _tidy() {
501
501
  // console.log("before _tidy", this.toString());
502
502
  (this._root as RowNode)._tidy();
503
503
  // console.log("after _tidy", this.toString());
504
504
  }
505
505
 
506
- /** @hidden @internal */
506
+ /** @internal */
507
507
  _updateAttrs(json: any) {
508
508
  Model._attributeDefinitions.update(json, this._attributes);
509
509
  }
510
510
 
511
- /** @hidden @internal */
511
+ /** @internal */
512
512
  _nextUniqueId() {
513
- return '#' + uuid.v4();
513
+ return '#' + getUUID();
514
514
  }
515
515
 
516
- /** @hidden @internal */
516
+ /** @internal */
517
517
  _getAttribute(name: string): any {
518
518
  return this._attributes[name];
519
519
  }
@@ -526,7 +526,7 @@ export class Model {
526
526
  this._onAllowDrop = onAllowDrop;
527
527
  }
528
528
 
529
- /** @hidden @internal */
529
+ /** @internal */
530
530
  _getOnAllowDrop() {
531
531
  return this._onAllowDrop;
532
532
  }
@@ -541,7 +541,7 @@ export class Model {
541
541
  this._onCreateTabSet = onCreateTabSet;
542
542
  }
543
543
 
544
- /** @hidden @internal */
544
+ /** @internal */
545
545
  _getOnCreateTabSet() {
546
546
  return this._onCreateTabSet;
547
547
  }
package/src/model/Node.ts CHANGED
@@ -8,28 +8,28 @@ import { IJsonBorderNode, IJsonRowNode, IJsonTabNode, IJsonTabSetNode } from "./
8
8
  import { Model, ILayoutMetrics } from "./Model";
9
9
 
10
10
  export abstract class Node {
11
- /** @hidden @internal */
11
+ /** @internal */
12
12
  protected _model: Model;
13
- /** @hidden @internal */
13
+ /** @internal */
14
14
  protected _attributes: Record<string, any>;
15
- /** @hidden @internal */
15
+ /** @internal */
16
16
  protected _parent?: Node;
17
- /** @hidden @internal */
17
+ /** @internal */
18
18
  protected _children: Node[];
19
- /** @hidden @internal */
19
+ /** @internal */
20
20
  protected _fixed: boolean;
21
- /** @hidden @internal */
21
+ /** @internal */
22
22
  protected _rect: Rect;
23
- /** @hidden @internal */
23
+ /** @internal */
24
24
  protected _visible: boolean;
25
- /** @hidden @internal */
25
+ /** @internal */
26
26
  protected _listeners: Record<string, (params: any) => void>;
27
- /** @hidden @internal */
27
+ /** @internal */
28
28
  protected _dirty: boolean = false;
29
- /** @hidden @internal */
29
+ /** @internal */
30
30
  protected _tempSize: number = 0;
31
31
 
32
- /** @hidden @internal */
32
+ /** @internal */
33
33
  protected constructor(model: Model) {
34
34
  this._model = model;
35
35
  this._attributes = {};
@@ -95,12 +95,12 @@ export abstract class Node {
95
95
 
96
96
  abstract toJson(): IJsonRowNode | IJsonBorderNode | IJsonTabSetNode | IJsonTabNode | undefined;
97
97
 
98
- /** @hidden @internal */
98
+ /** @internal */
99
99
  _setId(id: string) {
100
100
  this._attributes.id = id;
101
101
  }
102
102
 
103
- /** @hidden @internal */
103
+ /** @internal */
104
104
  _fireEvent(event: string, params: any) {
105
105
  // console.log(this._type, " fireEvent " + event + " " + JSON.stringify(params));
106
106
  if (this._listeners[event] !== undefined) {
@@ -108,7 +108,7 @@ export abstract class Node {
108
108
  }
109
109
  }
110
110
 
111
- /** @hidden @internal */
111
+ /** @internal */
112
112
  _getAttr(name: string) {
113
113
  let val = this._attributes[name];
114
114
 
@@ -123,16 +123,16 @@ export abstract class Node {
123
123
  return val;
124
124
  }
125
125
 
126
- /** @hidden @internal */
126
+ /** @internal */
127
127
  _forEachNode(fn: (node: Node, level: number) => void, level: number) {
128
128
  fn(this, level);
129
129
  level++;
130
- this._children.forEach((node) => {
130
+ for (const node of this._children) {
131
131
  node._forEachNode(fn, level);
132
- });
132
+ }
133
133
  }
134
134
 
135
- /** @hidden @internal */
135
+ /** @internal */
136
136
  _setVisible(visible: boolean) {
137
137
  if (visible !== this._visible) {
138
138
  this._fireEvent("visibility", { visible });
@@ -140,42 +140,42 @@ export abstract class Node {
140
140
  }
141
141
  }
142
142
 
143
- /** @hidden @internal */
143
+ /** @internal */
144
144
  _getDrawChildren(): Node[] | undefined {
145
145
  return this._children;
146
146
  }
147
147
 
148
- /** @hidden @internal */
148
+ /** @internal */
149
149
  _setParent(parent: Node) {
150
150
  this._parent = parent;
151
151
  }
152
152
 
153
- /** @hidden @internal */
153
+ /** @internal */
154
154
  _setRect(rect: Rect) {
155
155
  this._rect = rect;
156
156
  }
157
157
 
158
- /** @hidden @internal */
158
+ /** @internal */
159
159
  _setWeight(weight: number) {
160
160
  this._attributes.weight = weight;
161
161
  }
162
162
 
163
- /** @hidden @internal */
163
+ /** @internal */
164
164
  _setSelected(index: number) {
165
165
  this._attributes.selected = index;
166
166
  }
167
167
 
168
- /** @hidden @internal */
168
+ /** @internal */
169
169
  _isFixed() {
170
170
  return this._fixed;
171
171
  }
172
172
 
173
- /** @hidden @internal */
173
+ /** @internal */
174
174
  _layout(rect: Rect, metrics: ILayoutMetrics) {
175
175
  this._rect = rect;
176
176
  }
177
177
 
178
- /** @hidden @internal */
178
+ /** @internal */
179
179
  _findDropTargetNode(dragNode: Node & IDraggable, x: number, y: number): DropInfo | undefined {
180
180
  let rtn: DropInfo | undefined;
181
181
  if (this._rect.contains(x, y)) {
@@ -195,12 +195,12 @@ export abstract class Node {
195
195
  return rtn;
196
196
  }
197
197
 
198
- /** @hidden @internal */
198
+ /** @internal */
199
199
  canDrop(dragNode: Node & IDraggable, x: number, y: number): DropInfo | undefined {
200
200
  return undefined;
201
201
  }
202
202
 
203
- /** @hidden @internal */
203
+ /** @internal */
204
204
  _canDockInto(dragNode: Node & IDraggable, dropInfo: DropInfo | undefined): boolean {
205
205
  if (dropInfo != null) {
206
206
  if (dropInfo.location === DockLocation.CENTER && dropInfo.node.isEnableDrop() === false) {
@@ -224,7 +224,7 @@ export abstract class Node {
224
224
  return true;
225
225
  }
226
226
 
227
- /** @hidden @internal */
227
+ /** @internal */
228
228
  _removeChild(childNode: Node) {
229
229
  const pos = this._children.indexOf(childNode);
230
230
  if (pos !== -1) {
@@ -234,7 +234,7 @@ export abstract class Node {
234
234
  return pos;
235
235
  }
236
236
 
237
- /** @hidden @internal */
237
+ /** @internal */
238
238
  _addChild(childNode: Node, pos?: number) {
239
239
  if (pos != null) {
240
240
  this._children.splice(pos, 0, childNode);
@@ -247,13 +247,13 @@ export abstract class Node {
247
247
  return pos;
248
248
  }
249
249
 
250
- /** @hidden @internal */
250
+ /** @internal */
251
251
  _removeAll() {
252
252
  this._children = [];
253
253
  this._dirty = true;
254
254
  }
255
255
 
256
- /** @hidden @internal */
256
+ /** @internal */
257
257
  _styleWithPosition(style?: Record<string, any>) {
258
258
  if (style == null) {
259
259
  style = {};
@@ -261,29 +261,29 @@ export abstract class Node {
261
261
  return this._rect.styleWithPosition(style);
262
262
  }
263
263
 
264
- /** @hidden @internal */
264
+ /** @internal */
265
265
  _getTempSize() {
266
266
  return this._tempSize;
267
267
  }
268
268
 
269
- /** @hidden @internal */
269
+ /** @internal */
270
270
  _setTempSize(value: number) {
271
271
  this._tempSize = value;
272
272
  }
273
273
 
274
- /** @hidden @internal */
274
+ /** @internal */
275
275
  isEnableDivide() {
276
276
  return true;
277
277
  }
278
278
 
279
- /** @hidden @internal */
279
+ /** @internal */
280
280
  _toAttributeString() {
281
281
  return JSON.stringify(this._attributes, undefined, "\t");
282
282
  }
283
283
 
284
284
  // implemented by subclasses
285
- /** @hidden @internal */
285
+ /** @internal */
286
286
  abstract _updateAttrs(json: any): void;
287
- /** @hidden @internal */
287
+ /** @internal */
288
288
  abstract _getAttributeDefinitions(): AttributeDefinitions;
289
289
  }