@datagrok-libraries/dock-spawn-dg 0.0.1 → 0.0.3

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 (261) hide show
  1. package/README.md +0 -3
  2. package/index.d.ts +33 -0
  3. package/index.d.ts.map +1 -0
  4. package/index.js +32 -0
  5. package/package.json +10 -17
  6. package/src/BrowserDialogHelper.d.ts.map +1 -0
  7. package/{lib → src}/BrowserDialogHelper.js +18 -12
  8. package/src/BrowserDialogHelper.ts +48 -47
  9. package/src/ContainerType.d.ts.map +1 -0
  10. package/src/ContainerType.ts +1 -1
  11. package/{lib → src}/Dialog.d.ts +7 -7
  12. package/src/Dialog.d.ts.map +1 -0
  13. package/{lib → src}/Dialog.js +46 -58
  14. package/src/Dialog.ts +253 -250
  15. package/src/DockConfig.d.ts.map +1 -0
  16. package/{lib → src}/DockConfig.js +0 -5
  17. package/src/DockConfig.ts +1 -1
  18. package/{lib → src}/DockGraphDeserializer.d.ts +6 -6
  19. package/src/DockGraphDeserializer.d.ts.map +1 -0
  20. package/src/DockGraphDeserializer.js +133 -0
  21. package/src/DockGraphDeserializer.ts +113 -108
  22. package/src/DockGraphSerializer.d.ts +14 -0
  23. package/src/DockGraphSerializer.d.ts.map +1 -0
  24. package/{lib → src}/DockGraphSerializer.js +11 -11
  25. package/src/DockGraphSerializer.ts +48 -47
  26. package/{lib → src}/DockLayoutEngine.d.ts +12 -12
  27. package/src/DockLayoutEngine.d.ts.map +1 -0
  28. package/{lib → src}/DockLayoutEngine.js +49 -53
  29. package/src/DockLayoutEngine.ts +351 -346
  30. package/{lib → src}/DockManager.d.ts +34 -34
  31. package/src/DockManager.d.ts.map +1 -0
  32. package/{lib → src}/DockManager.js +170 -152
  33. package/src/DockManager.ts +860 -833
  34. package/{lib → src}/DockManagerContext.d.ts +3 -3
  35. package/src/DockManagerContext.d.ts.map +1 -0
  36. package/{lib → src}/DockManagerContext.js +2 -5
  37. package/src/DockManagerContext.ts +5 -5
  38. package/{lib → src}/DockModel.d.ts +2 -2
  39. package/src/DockModel.d.ts.map +1 -0
  40. package/{lib → src}/DockModel.js +0 -3
  41. package/src/DockModel.ts +2 -2
  42. package/{lib → src}/DockNode.d.ts +1 -1
  43. package/src/DockNode.d.ts.map +1 -0
  44. package/{lib → src}/DockNode.js +0 -3
  45. package/src/DockNode.ts +2 -2
  46. package/{lib → src}/DockWheel.d.ts +5 -5
  47. package/src/DockWheel.d.ts.map +1 -0
  48. package/{lib → src}/DockWheel.js +3 -11
  49. package/src/DockWheel.ts +6 -6
  50. package/{lib → src}/DockWheelItem.d.ts +3 -3
  51. package/src/DockWheelItem.d.ts.map +1 -0
  52. package/{lib → src}/DockWheelItem.js +1 -8
  53. package/src/DockWheelItem.ts +4 -4
  54. package/{lib → src}/DocumentManagerContainer.d.ts +4 -4
  55. package/src/DocumentManagerContainer.d.ts.map +1 -0
  56. package/{lib → src}/DocumentManagerContainer.js +3 -3
  57. package/src/DocumentManagerContainer.ts +9 -9
  58. package/{lib → src}/DocumentTabPage.d.ts +3 -3
  59. package/src/DocumentTabPage.d.ts.map +1 -0
  60. package/{lib → src}/DocumentTabPage.js +2 -2
  61. package/src/DocumentTabPage.ts +6 -6
  62. package/{lib → src}/DraggableContainer.d.ts +7 -7
  63. package/src/DraggableContainer.d.ts.map +1 -0
  64. package/{lib → src}/DraggableContainer.js +3 -16
  65. package/src/DraggableContainer.ts +10 -10
  66. package/src/EventHandler.d.ts.map +1 -0
  67. package/{lib → src}/EventHandler.js +0 -3
  68. package/src/EventHandler.ts +1 -1
  69. package/{lib → src}/FillDockContainer.d.ts +8 -8
  70. package/src/FillDockContainer.d.ts.map +1 -0
  71. package/{lib → src}/FillDockContainer.js +4 -14
  72. package/src/FillDockContainer.ts +10 -10
  73. package/src/HorizontalDockContainer.d.ts +7 -0
  74. package/src/HorizontalDockContainer.d.ts.map +1 -0
  75. package/{lib → src}/HorizontalDockContainer.js +3 -3
  76. package/src/HorizontalDockContainer.ts +6 -6
  77. package/{lib → src}/PanelContainer.d.ts +21 -20
  78. package/src/PanelContainer.d.ts.map +1 -0
  79. package/{lib → src}/PanelContainer.js +144 -146
  80. package/src/PanelContainer.ts +590 -574
  81. package/src/Point.d.ts.map +1 -0
  82. package/{lib → src}/Point.js +0 -2
  83. package/{lib → src}/ResizableContainer.d.ts +8 -8
  84. package/src/ResizableContainer.d.ts.map +1 -0
  85. package/{lib → src}/ResizableContainer.js +4 -17
  86. package/src/ResizableContainer.ts +11 -11
  87. package/{lib → src}/ResizeHandle.d.ts +1 -1
  88. package/src/ResizeHandle.d.ts.map +1 -0
  89. package/{lib → src}/ResizeHandle.js +0 -10
  90. package/src/ResizeHandle.ts +2 -2
  91. package/{lib → src}/SplitterBar.d.ts +3 -3
  92. package/src/SplitterBar.d.ts.map +1 -0
  93. package/{lib → src}/SplitterBar.js +2 -14
  94. package/src/SplitterBar.ts +5 -5
  95. package/{lib → src}/SplitterDockContainer.d.ts +7 -7
  96. package/src/SplitterDockContainer.d.ts.map +1 -0
  97. package/{lib → src}/SplitterDockContainer.js +1 -11
  98. package/src/SplitterDockContainer.ts +8 -8
  99. package/{lib → src}/SplitterPanel.d.ts +2 -2
  100. package/src/SplitterPanel.d.ts.map +1 -0
  101. package/{lib → src}/SplitterPanel.js +2 -6
  102. package/src/SplitterPanel.ts +4 -4
  103. package/{lib → src}/TabHandle.d.ts +5 -5
  104. package/src/TabHandle.d.ts.map +1 -0
  105. package/{lib → src}/TabHandle.js +81 -95
  106. package/src/TabHandle.ts +314 -311
  107. package/{lib → src}/TabHost.d.ts +6 -6
  108. package/src/TabHost.d.ts.map +1 -0
  109. package/{lib → src}/TabHost.js +4 -19
  110. package/src/TabHost.ts +9 -9
  111. package/{lib → src}/TabPage.d.ts +4 -4
  112. package/src/TabPage.d.ts.map +1 -0
  113. package/{lib → src}/TabPage.js +3 -10
  114. package/src/TabPage.ts +6 -6
  115. package/{lib → src}/UndockInitiator.d.ts +4 -4
  116. package/src/UndockInitiator.d.ts.map +1 -0
  117. package/{lib → src}/UndockInitiator.js +2 -14
  118. package/src/UndockInitiator.ts +7 -7
  119. package/src/Utils.d.ts.map +1 -0
  120. package/{lib → src}/Utils.js +1 -1
  121. package/src/Utils.ts +1 -1
  122. package/src/VerticalDockContainer.d.ts +7 -0
  123. package/src/VerticalDockContainer.d.ts.map +1 -0
  124. package/{lib → src}/VerticalDockContainer.js +3 -3
  125. package/src/VerticalDockContainer.ts +7 -7
  126. package/src/enums/PanelType.d.ts.map +1 -0
  127. package/src/enums/PanelType.ts +1 -1
  128. package/src/enums/TabHostDirection.d.ts.map +1 -0
  129. package/src/enums/TabHostDirection.ts +1 -1
  130. package/src/enums/WheelTypes.d.ts.map +1 -0
  131. package/src/enums/WheelTypes.ts +1 -1
  132. package/src/i18n/Defaults.d.ts.map +1 -0
  133. package/src/i18n/Defaults.ts +2 -2
  134. package/{lib → src}/i18n/Localizer.d.ts +1 -1
  135. package/src/i18n/Localizer.d.ts.map +1 -0
  136. package/{lib → src}/i18n/Localizer.js +3 -3
  137. package/src/i18n/Localizer.ts +2 -2
  138. package/src/index.d.ts.map +1 -0
  139. package/{lib → src}/interfaces/IDockContainer.d.ts +4 -4
  140. package/src/interfaces/IDockContainer.d.ts.map +1 -0
  141. package/src/interfaces/IDockContainer.ts +7 -7
  142. package/src/interfaces/IDockContainerWithSize.d.ts +6 -0
  143. package/src/interfaces/IDockContainerWithSize.d.ts.map +1 -0
  144. package/src/interfaces/IDockContainerWithSize.ts +3 -3
  145. package/{lib → src}/interfaces/ILayoutEventListener.d.ts +6 -6
  146. package/src/interfaces/ILayoutEventListener.d.ts.map +1 -0
  147. package/src/interfaces/ILayoutEventListener.ts +7 -7
  148. package/src/interfaces/IMouseOrTouchEvent.d.ts.map +1 -0
  149. package/src/interfaces/IMouseOrTouchEvent.ts +1 -1
  150. package/src/interfaces/INodeInfo.d.ts +8 -0
  151. package/src/interfaces/INodeInfo.d.ts.map +1 -0
  152. package/src/interfaces/INodeInfo.ts +2 -2
  153. package/src/interfaces/IPanelInfo.d.ts +10 -0
  154. package/src/interfaces/IPanelInfo.d.ts.map +1 -0
  155. package/src/interfaces/IPanelInfo.ts +3 -3
  156. package/src/interfaces/IRectangle.d.ts.map +1 -0
  157. package/src/interfaces/IRectangle.ts +1 -1
  158. package/src/interfaces/ISize.d.ts.map +1 -0
  159. package/{lib → src}/interfaces/IState.d.ts +1 -0
  160. package/src/interfaces/IState.d.ts.map +1 -0
  161. package/src/interfaces/IState.ts +1 -0
  162. package/src/interfaces/IThickness.d.ts.map +1 -0
  163. package/src/interfaces/IThickness.ts +1 -1
  164. package/{lib → src}/webcomponent/DockSpawnTsWebcomponent.d.ts +4 -4
  165. package/src/webcomponent/DockSpawnTsWebcomponent.d.ts.map +1 -0
  166. package/{lib → src}/webcomponent/DockSpawnTsWebcomponent.js +71 -63
  167. package/src/webcomponent/DockSpawnTsWebcomponent.ts +239 -239
  168. package/src/webcomponent/styles.d.ts.map +1 -0
  169. package/{lib → src}/webcomponent/styles.js +2 -1
  170. package/tsconfig.json +13 -26
  171. package/.eslintrc.json +0 -47
  172. package/lib/BrowserDialogHelper.d.ts.map +0 -1
  173. package/lib/ContainerType.d.ts.map +0 -1
  174. package/lib/Dialog.d.ts.map +0 -1
  175. package/lib/DockConfig.d.ts.map +0 -1
  176. package/lib/DockGraphDeserializer.d.ts.map +0 -1
  177. package/lib/DockGraphDeserializer.js +0 -114
  178. package/lib/DockGraphSerializer.d.ts +0 -14
  179. package/lib/DockGraphSerializer.d.ts.map +0 -1
  180. package/lib/DockLayoutEngine.d.ts.map +0 -1
  181. package/lib/DockManager.d.ts.map +0 -1
  182. package/lib/DockManagerContext.d.ts.map +0 -1
  183. package/lib/DockModel.d.ts.map +0 -1
  184. package/lib/DockNode.d.ts.map +0 -1
  185. package/lib/DockWheel.d.ts.map +0 -1
  186. package/lib/DockWheelItem.d.ts.map +0 -1
  187. package/lib/DocumentManagerContainer.d.ts.map +0 -1
  188. package/lib/DocumentTabPage.d.ts.map +0 -1
  189. package/lib/DraggableContainer.d.ts.map +0 -1
  190. package/lib/EventHandler.d.ts.map +0 -1
  191. package/lib/FillDockContainer.d.ts.map +0 -1
  192. package/lib/HorizontalDockContainer.d.ts +0 -7
  193. package/lib/HorizontalDockContainer.d.ts.map +0 -1
  194. package/lib/PanelContainer.d.ts.map +0 -1
  195. package/lib/Point.d.ts.map +0 -1
  196. package/lib/ResizableContainer.d.ts.map +0 -1
  197. package/lib/ResizeHandle.d.ts.map +0 -1
  198. package/lib/SplitterBar.d.ts.map +0 -1
  199. package/lib/SplitterDockContainer.d.ts.map +0 -1
  200. package/lib/SplitterPanel.d.ts.map +0 -1
  201. package/lib/TabHandle.d.ts.map +0 -1
  202. package/lib/TabHost.d.ts.map +0 -1
  203. package/lib/TabPage.d.ts.map +0 -1
  204. package/lib/UndockInitiator.d.ts.map +0 -1
  205. package/lib/Utils.d.ts.map +0 -1
  206. package/lib/VerticalDockContainer.d.ts +0 -7
  207. package/lib/VerticalDockContainer.d.ts.map +0 -1
  208. package/lib/enums/PanelType.d.ts.map +0 -1
  209. package/lib/enums/TabHostDirection.d.ts.map +0 -1
  210. package/lib/enums/WheelTypes.d.ts.map +0 -1
  211. package/lib/i18n/Defaults.d.ts.map +0 -1
  212. package/lib/i18n/Localizer.d.ts.map +0 -1
  213. package/lib/index.d.ts.map +0 -1
  214. package/lib/interfaces/IDockContainer.d.ts.map +0 -1
  215. package/lib/interfaces/IDockContainerWithSize.d.ts +0 -6
  216. package/lib/interfaces/IDockContainerWithSize.d.ts.map +0 -1
  217. package/lib/interfaces/ILayoutEventListener.d.ts.map +0 -1
  218. package/lib/interfaces/IMouseOrTouchEvent.d.ts.map +0 -1
  219. package/lib/interfaces/INodeInfo.d.ts +0 -8
  220. package/lib/interfaces/INodeInfo.d.ts.map +0 -1
  221. package/lib/interfaces/IPanelInfo.d.ts +0 -10
  222. package/lib/interfaces/IPanelInfo.d.ts.map +0 -1
  223. package/lib/interfaces/IRectangle.d.ts.map +0 -1
  224. package/lib/interfaces/ISize.d.ts.map +0 -1
  225. package/lib/interfaces/IState.d.ts.map +0 -1
  226. package/lib/interfaces/IThickness.d.ts.map +0 -1
  227. package/lib/webcomponent/DockSpawnTsWebcomponent.d.ts.map +0 -1
  228. package/lib/webcomponent/styles.d.ts.map +0 -1
  229. package/tsconfig.tsbuildinfo +0 -1
  230. /package/{lib → src}/BrowserDialogHelper.d.ts +0 -0
  231. /package/{lib → src}/ContainerType.d.ts +0 -0
  232. /package/{lib → src}/ContainerType.js +0 -0
  233. /package/{lib → src}/DockConfig.d.ts +0 -0
  234. /package/{lib → src}/EventHandler.d.ts +0 -0
  235. /package/{lib → src}/Point.d.ts +0 -0
  236. /package/{lib → src}/Utils.d.ts +0 -0
  237. /package/{lib → src}/enums/PanelType.d.ts +0 -0
  238. /package/{lib → src}/enums/PanelType.js +0 -0
  239. /package/{lib → src}/enums/TabHostDirection.d.ts +0 -0
  240. /package/{lib → src}/enums/TabHostDirection.js +0 -0
  241. /package/{lib → src}/enums/WheelTypes.d.ts +0 -0
  242. /package/{lib → src}/enums/WheelTypes.js +0 -0
  243. /package/{lib → src}/i18n/Defaults.d.ts +0 -0
  244. /package/{lib → src}/i18n/Defaults.js +0 -0
  245. /package/{lib → src}/index.d.ts +0 -0
  246. /package/{lib → src}/index.js +0 -0
  247. /package/{lib → src}/interfaces/IDockContainer.js +0 -0
  248. /package/{lib → src}/interfaces/IDockContainerWithSize.js +0 -0
  249. /package/{lib → src}/interfaces/ILayoutEventListener.js +0 -0
  250. /package/{lib → src}/interfaces/IMouseOrTouchEvent.d.ts +0 -0
  251. /package/{lib → src}/interfaces/IMouseOrTouchEvent.js +0 -0
  252. /package/{lib → src}/interfaces/INodeInfo.js +0 -0
  253. /package/{lib → src}/interfaces/IPanelInfo.js +0 -0
  254. /package/{lib → src}/interfaces/IRectangle.d.ts +0 -0
  255. /package/{lib → src}/interfaces/IRectangle.js +0 -0
  256. /package/{lib → src}/interfaces/ISize.d.ts +0 -0
  257. /package/{lib → src}/interfaces/ISize.js +0 -0
  258. /package/{lib → src}/interfaces/IState.js +0 -0
  259. /package/{lib → src}/interfaces/IThickness.d.ts +0 -0
  260. /package/{lib → src}/interfaces/IThickness.js +0 -0
  261. /package/{lib → src}/webcomponent/styles.d.ts +0 -0
@@ -0,0 +1,133 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { DockModel } from "./DockModel";
11
+ import { DockNode } from "./DockNode";
12
+ import { PanelContainer } from "./PanelContainer";
13
+ import { HorizontalDockContainer } from "./HorizontalDockContainer";
14
+ import { VerticalDockContainer } from "./VerticalDockContainer";
15
+ import { DocumentManagerContainer } from "./DocumentManagerContainer";
16
+ import { FillDockContainer } from "./FillDockContainer";
17
+ import { Dialog } from "./Dialog";
18
+ import { Utils } from "./Utils";
19
+ /**
20
+ * Deserializes the dock layout hierarchy from JSON and creates a dock hierarhcy graph
21
+ */
22
+ export class DockGraphDeserializer {
23
+ constructor(dockManager) {
24
+ this.dockManager = dockManager;
25
+ }
26
+ deserialize(_json) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ let info = JSON.parse(_json);
29
+ let model = new DockModel();
30
+ model.rootNode = yield this._buildGraph(info.graphInfo);
31
+ model.dialogs = yield this._buildDialogs(info.dialogsInfo);
32
+ model.documentManagerNode = this.documentManagerNode;
33
+ return model;
34
+ });
35
+ }
36
+ _buildGraph(nodeInfo) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ let childrenInfo = nodeInfo.children;
39
+ let children = [];
40
+ for (let childInfo of childrenInfo) {
41
+ let childNode = yield this._buildGraph(childInfo);
42
+ if (childNode !== null) {
43
+ children.push(childNode);
44
+ }
45
+ }
46
+ ;
47
+ // Build the container owned by this node
48
+ let container = yield this._createContainer(nodeInfo, children);
49
+ if (container === null) {
50
+ return null;
51
+ }
52
+ // Build the node for this container and attach it's children
53
+ let node = new DockNode(container);
54
+ if (container instanceof DocumentManagerContainer)
55
+ this.documentManagerNode = node;
56
+ node.children = children;
57
+ for (let childNode of node.children.reverse()) {
58
+ childNode.parent = node;
59
+ }
60
+ ;
61
+ node.children.reverse();
62
+ // node.container.setActiveChild(node.container);
63
+ return node;
64
+ });
65
+ }
66
+ _createContainer(nodeInfo, children) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ let containerType = nodeInfo.containerType;
69
+ let containerState = nodeInfo.state;
70
+ let container;
71
+ let childContainers = [];
72
+ for (let childNode of children) {
73
+ childContainers.push(childNode.container);
74
+ }
75
+ if (containerType === 'panel') {
76
+ container = yield PanelContainer.loadFromState(containerState, this.dockManager);
77
+ if (!(container === null || container === void 0 ? void 0 : container.prepareForDocking))
78
+ return null;
79
+ container.prepareForDocking();
80
+ Utils.removeNode(container.elementPanel);
81
+ }
82
+ else if (containerType === 'horizontal')
83
+ container = new HorizontalDockContainer(this.dockManager, childContainers);
84
+ else if (containerType === 'vertical')
85
+ container = new VerticalDockContainer(this.dockManager, childContainers);
86
+ else if (containerType === 'fill') {
87
+ // Check if this is a document manager
88
+ // TODO: Layout engine compares the string 'fill', so cannot create another subclass type
89
+ // called document_manager and have to resort to this hack. use RTTI in layout engine
90
+ let typeDocumentManager = containerState.documentManager;
91
+ if (typeDocumentManager)
92
+ container = new DocumentManagerContainer(this.dockManager);
93
+ else
94
+ container = new FillDockContainer(this.dockManager);
95
+ }
96
+ else
97
+ throw new Error('Cannot create dock container of unknown type: ' + containerType);
98
+ // Restore the state of the container
99
+ container.loadState(containerState);
100
+ // container.performLayout(childContainers);
101
+ return container;
102
+ });
103
+ }
104
+ _buildDialogs(dialogsInfo) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ let dialogs = [];
107
+ for (let dialogInfo of dialogsInfo) {
108
+ let containerType = dialogInfo.containerType;
109
+ let containerState = dialogInfo.state;
110
+ let container;
111
+ if (containerType === 'panel') {
112
+ container = yield PanelContainer.loadFromState(containerState, this.dockManager);
113
+ if (container.prepareForDocking) {
114
+ Utils.removeNode(container.elementPanel);
115
+ container.isDialog = true;
116
+ let dialog = new Dialog(container, this.dockManager);
117
+ if (dialogInfo.position.x > document.body.clientWidth ||
118
+ dialogInfo.position.y > document.body.clientHeight - 70) {
119
+ dialogInfo.position.x = 20;
120
+ dialogInfo.position.y = 70;
121
+ }
122
+ dialog.setPosition(dialogInfo.position.x, dialogInfo.position.y);
123
+ dialog.isHidden = dialogInfo.isHidden;
124
+ if (dialog.isHidden)
125
+ dialog.hide();
126
+ dialogs.push(dialog);
127
+ }
128
+ }
129
+ }
130
+ return dialogs;
131
+ });
132
+ }
133
+ }
@@ -1,129 +1,134 @@
1
- import {DockManager} from './DockManager.js';
2
- import {DockModel} from './DockModel.js';
3
- import {DockNode} from './DockNode.js';
4
- import {PanelContainer} from './PanelContainer.js';
5
- import {HorizontalDockContainer} from './HorizontalDockContainer.js';
6
- import {VerticalDockContainer} from './VerticalDockContainer.js';
7
- import {DocumentManagerContainer} from './DocumentManagerContainer.js';
8
- import {FillDockContainer} from './FillDockContainer.js';
9
- import {Dialog} from './Dialog.js';
10
- import {Utils} from './Utils.js';
11
- import {IPanelInfo} from './interfaces/IPanelInfo.js';
12
- import {INodeInfo} from './interfaces/INodeInfo.js';
13
- import {IDockContainer} from './interfaces/IDockContainer.js';
1
+ import { DockManager } from "./DockManager";
2
+ import { DockModel } from "./DockModel";
3
+ import { DockNode } from "./DockNode";
4
+ import { PanelContainer } from "./PanelContainer";
5
+ import { HorizontalDockContainer } from "./HorizontalDockContainer";
6
+ import { VerticalDockContainer } from "./VerticalDockContainer";
7
+ import { DocumentManagerContainer } from "./DocumentManagerContainer";
8
+ import { FillDockContainer } from "./FillDockContainer";
9
+ import { Dialog } from "./Dialog";
10
+ import { Utils } from "./Utils";
11
+ import { IPanelInfo } from "./interfaces/IPanelInfo";
12
+ import { INodeInfo } from "./interfaces/INodeInfo";
13
+ import { IDockContainer } from "./interfaces/IDockContainer";
14
14
 
15
15
  /**
16
16
  * Deserializes the dock layout hierarchy from JSON and creates a dock hierarhcy graph
17
17
  */
18
18
  export class DockGraphDeserializer {
19
- dockManager: DockManager;
20
- documentManagerNode: DockNode;
21
19
 
22
- constructor(dockManager: DockManager) {
23
- this.dockManager = dockManager;
24
- }
20
+ dockManager: DockManager;
21
+ documentManagerNode: DockNode;
25
22
 
26
- async deserialize(_json: string): Promise<DockModel> {
27
- const info = JSON.parse(_json);
28
- const model = new DockModel();
29
- model.rootNode = await this._buildGraph(info.graphInfo);
30
- model.dialogs = await this._buildDialogs(info.dialogsInfo);
31
- model.documentManagerNode = this.documentManagerNode;
32
- return model;
33
- }
34
-
35
- async _buildGraph(nodeInfo: INodeInfo) {
36
- const childrenInfo = nodeInfo.children;
37
- const children: DockNode[] = [];
38
- for (const childInfo of childrenInfo) {
39
- const childNode = await this._buildGraph(childInfo);
40
- if (childNode !== null)
41
- children.push(childNode);
42
- };
23
+ constructor(dockManager: DockManager) {
24
+ this.dockManager = dockManager;
25
+ }
43
26
 
44
- // Build the container owned by this node
45
- const container = await this._createContainer(nodeInfo, children);
46
- if (container === null)
47
- return null;
27
+ async deserialize(_json: string): Promise<DockModel> {
28
+ let info = JSON.parse(_json);
29
+ let model = new DockModel();
30
+ model.rootNode = await this._buildGraph(info.graphInfo);
31
+ model.dialogs = await this._buildDialogs(info.dialogsInfo);
32
+ model.documentManagerNode = this.documentManagerNode;
33
+ return model;
34
+ }
48
35
 
49
- // Build the node for this container and attach it's children
50
- const node = new DockNode(container);
51
- if (container instanceof DocumentManagerContainer)
52
- this.documentManagerNode = node;
53
- node.children = children;
54
- for (const childNode of node.children.reverse())
55
- childNode.parent = node;
56
- ;
57
- node.children.reverse();
58
- // node.container.setActiveChild(node.container);
59
- return node;
60
- }
36
+ async _buildGraph(nodeInfo: INodeInfo) {
37
+ let childrenInfo = nodeInfo.children;
38
+ let children: DockNode[] = [];
39
+ for (let childInfo of childrenInfo) {
40
+ let childNode = await this._buildGraph(childInfo);
41
+ if (childNode !== null) {
42
+ children.push(childNode);
43
+ }
44
+ };
61
45
 
62
- async _createContainer(nodeInfo: INodeInfo, children: DockNode[]) {
63
- const containerType = nodeInfo.containerType;
64
- const containerState = nodeInfo.state;
65
- let container;
46
+ // Build the container owned by this node
47
+ let container = await this._createContainer(nodeInfo, children);
48
+ if (container === null) {
49
+ return null;
50
+ }
51
+ // Build the node for this container and attach it's children
52
+ let node = new DockNode(container);
53
+ if (container instanceof DocumentManagerContainer)
54
+ this.documentManagerNode = node;
55
+ node.children = children;
56
+ for (let childNode of node.children.reverse()) {
57
+ childNode.parent = node;
58
+ };
59
+ node.children.reverse();
60
+ // node.container.setActiveChild(node.container);
61
+ return node;
62
+ }
66
63
 
67
- const childContainers: IDockContainer[] = [];
68
- for (const childNode of children)
69
- childContainers.push(childNode.container);
64
+ async _createContainer(nodeInfo: INodeInfo, children: DockNode[]) {
65
+ let containerType = nodeInfo.containerType;
66
+ let containerState = nodeInfo.state;
67
+ let container;
70
68
 
69
+ let childContainers: IDockContainer[] = [];
70
+ for (let childNode of children) {
71
+ childContainers.push(childNode.container);
72
+ }
71
73
 
72
- if (containerType === 'panel') {
73
- container = await PanelContainer.loadFromState(containerState, this.dockManager);
74
- if (!container?.prepareForDocking)
75
- return null;
76
- container.prepareForDocking();
77
- Utils.removeNode(container.elementPanel);
78
- } else if (containerType === 'horizontal')
79
- container = new HorizontalDockContainer(this.dockManager, childContainers);
80
- else if (containerType === 'vertical')
81
- container = new VerticalDockContainer(this.dockManager, childContainers);
82
- else if (containerType === 'fill') {
83
- // Check if this is a document manager
74
+ if (containerType === 'panel') {
75
+ container = await PanelContainer.loadFromState(containerState, this.dockManager);
76
+ if (!container?.prepareForDocking)
77
+ return null;
78
+ container.prepareForDocking();
79
+ Utils.removeNode(container.elementPanel);
80
+ }
81
+ else if (containerType === 'horizontal')
82
+ container = new HorizontalDockContainer(this.dockManager, childContainers);
83
+ else if (containerType === 'vertical')
84
+ container = new VerticalDockContainer(this.dockManager, childContainers);
85
+ else if (containerType === 'fill') {
86
+ // Check if this is a document manager
84
87
 
85
- // TODO: Layout engine compares the string 'fill', so cannot create another subclass type
86
- // called document_manager and have to resort to this hack. use RTTI in layout engine
87
- const typeDocumentManager = containerState.documentManager;
88
- if (typeDocumentManager)
89
- container = new DocumentManagerContainer(this.dockManager);
90
- else
91
- container = new FillDockContainer(this.dockManager);
92
- } else
93
- throw new Error('Cannot create dock container of unknown type: ' + containerType);
88
+ // TODO: Layout engine compares the string 'fill', so cannot create another subclass type
89
+ // called document_manager and have to resort to this hack. use RTTI in layout engine
90
+ let typeDocumentManager = containerState.documentManager;
91
+ if (typeDocumentManager)
92
+ container = new DocumentManagerContainer(this.dockManager);
93
+ else
94
+ container = new FillDockContainer(this.dockManager);
95
+ }
96
+ else
97
+ throw new Error('Cannot create dock container of unknown type: ' + containerType);
94
98
 
95
- // Restore the state of the container
96
- container.loadState(containerState);
99
+ // Restore the state of the container
100
+ container.loadState(containerState);
97
101
 
98
- // container.performLayout(childContainers);
99
- return container;
100
- }
102
+ // container.performLayout(childContainers);
103
+ return container;
104
+ }
101
105
 
102
- async _buildDialogs(dialogsInfo: IPanelInfo[]) {
103
- const dialogs: Dialog[] = [];
104
- for (const dialogInfo of dialogsInfo) {
105
- const containerType = dialogInfo.containerType;
106
- const containerState = dialogInfo.state;
107
- let container;
108
- if (containerType === 'panel') {
109
- container = await PanelContainer.loadFromState(containerState, this.dockManager);
110
- if (container.prepareForDocking) {
111
- Utils.removeNode(container.elementPanel);
112
- container.isDialog = true;
113
- const dialog = new Dialog(container, this.dockManager);
114
- if (dialogInfo.position.x > document.body.clientWidth ||
106
+ async _buildDialogs(dialogsInfo: IPanelInfo[]) {
107
+ let dialogs: Dialog[] = [];
108
+ for (let dialogInfo of dialogsInfo) {
109
+ let containerType = dialogInfo.containerType;
110
+ let containerState = dialogInfo.state;
111
+ let container;
112
+ if (containerType === 'panel') {
113
+ container = await PanelContainer.loadFromState(containerState, this.dockManager);
114
+ if (container.prepareForDocking) {
115
+ Utils.removeNode(container.elementPanel);
116
+ container.isDialog = true;
117
+ let dialog = new Dialog(container, this.dockManager);
118
+ if (dialogInfo.position.x > document.body.clientWidth ||
115
119
  dialogInfo.position.y > document.body.clientHeight - 70) {
116
- dialogInfo.position.x = 20;
117
- dialogInfo.position.y = 70;
118
- }
119
- dialog.setPosition(dialogInfo.position.x, dialogInfo.position.y);
120
- dialog.isHidden = dialogInfo.isHidden;
121
- if (dialog.isHidden)
122
- dialog.hide();
123
- dialogs.push(dialog);
120
+ dialogInfo.position.x = 20;
121
+ dialogInfo.position.y = 70;
122
+ }
123
+ dialog.setPosition(dialogInfo.position.x, dialogInfo.position.y);
124
+ dialog.isHidden = dialogInfo.isHidden;
125
+ if (dialog.isHidden)
126
+ dialog.hide();
127
+ dialogs.push(dialog);
128
+ }
129
+ }
130
+
124
131
  }
125
- }
132
+ return dialogs;
126
133
  }
127
- return dialogs;
128
- }
129
134
  }
@@ -0,0 +1,14 @@
1
+ import { DockModel } from "./DockModel";
2
+ import { DockNode } from "./DockNode";
3
+ import { Dialog } from "./Dialog";
4
+ import { IPanelInfo } from "./interfaces/IPanelInfo";
5
+ import { INodeInfo } from "./interfaces/INodeInfo";
6
+ /**
7
+ * The serializer saves / loads the state of the dock layout hierarchy
8
+ */
9
+ export declare class DockGraphSerializer {
10
+ serialize(model: DockModel): string;
11
+ _buildGraphInfo(node: DockNode): INodeInfo;
12
+ _buildDialogsInfo(dialogs: Dialog[]): IPanelInfo[];
13
+ }
14
+ //# sourceMappingURL=DockGraphSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockGraphSerializer.d.ts","sourceRoot":"","sources":["DockGraphSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,SAAS,CAAC,KAAK,EAAE,SAAS;IAM1B,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS;IAiB1C,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE;CAkBrD"}
@@ -3,35 +3,35 @@
3
3
  */
4
4
  export class DockGraphSerializer {
5
5
  serialize(model) {
6
- const graphInfo = this._buildGraphInfo(model.rootNode);
7
- const dialogs = this._buildDialogsInfo(model.dialogs.sort((x, y) => x.elementDialog.style.zIndex - y.elementDialog.style.zIndex));
6
+ let graphInfo = this._buildGraphInfo(model.rootNode);
7
+ let dialogs = this._buildDialogsInfo(model.dialogs.sort((x, y) => x.elementDialog.style.zIndex - y.elementDialog.style.zIndex));
8
8
  return JSON.stringify({ graphInfo: graphInfo, dialogsInfo: dialogs });
9
9
  }
10
10
  _buildGraphInfo(node) {
11
- const nodeState = {};
11
+ let nodeState = {};
12
12
  node.container.saveState(nodeState);
13
- const childrenInfo = [];
13
+ let childrenInfo = [];
14
14
  node.children.forEach((childNode) => {
15
15
  childrenInfo.push(this._buildGraphInfo(childNode));
16
16
  });
17
- const nodeInfo = {
17
+ let nodeInfo = {
18
18
  containerType: node.container.containerType,
19
19
  state: nodeState,
20
- children: childrenInfo,
20
+ children: childrenInfo
21
21
  };
22
22
  return nodeInfo;
23
23
  }
24
24
  _buildDialogsInfo(dialogs) {
25
- const dialogsInfo = [];
25
+ let dialogsInfo = [];
26
26
  dialogs.forEach((dialog) => {
27
- const panelState = {};
28
- const panelContainer = dialog.panel;
27
+ let panelState = {};
28
+ let panelContainer = dialog.panel;
29
29
  panelContainer.saveState(panelState);
30
- const panelInfo = {
30
+ let panelInfo = {
31
31
  containerType: panelContainer.containerType,
32
32
  state: panelState,
33
33
  position: dialog.getPosition(),
34
- isHidden: dialog.isHidden,
34
+ isHidden: dialog.isHidden
35
35
  };
36
36
  dialogsInfo.push(panelInfo);
37
37
  });
@@ -1,53 +1,54 @@
1
- import {DockModel} from './DockModel.js';
2
- import {DockNode} from './DockNode.js';
3
- import {Dialog} from './Dialog.js';
4
- import {IPanelInfo} from './interfaces/IPanelInfo.js';
5
- import {INodeInfo} from './interfaces/INodeInfo.js';
6
- import {IState} from './interfaces/IState.js';
1
+ import { DockModel } from "./DockModel";
2
+ import { DockNode } from "./DockNode";
3
+ import { Dialog } from "./Dialog";
4
+ import { IPanelInfo } from "./interfaces/IPanelInfo";
5
+ import { INodeInfo } from "./interfaces/INodeInfo";
6
+ import { IState } from "./interfaces/IState";
7
7
 
8
8
  /**
9
9
  * The serializer saves / loads the state of the dock layout hierarchy
10
10
  */
11
11
  export class DockGraphSerializer {
12
- serialize(model: DockModel) {
13
- const graphInfo = this._buildGraphInfo(model.rootNode);
14
- const dialogs = this._buildDialogsInfo(model.dialogs.sort((x, y)=><number><any>x.elementDialog.style.zIndex-<number><any>y.elementDialog.style.zIndex));
15
- return JSON.stringify({graphInfo: graphInfo, dialogsInfo: dialogs});
16
- }
17
-
18
- _buildGraphInfo(node: DockNode): INodeInfo {
19
- const nodeState: IState = {};
20
- node.container.saveState(nodeState);
21
-
22
- const childrenInfo: INodeInfo[] = [];
23
- node.children.forEach((childNode) => {
24
- childrenInfo.push(this._buildGraphInfo(childNode));
25
- });
26
-
27
- const nodeInfo: INodeInfo = {
28
- containerType: node.container.containerType,
29
- state: nodeState,
30
- children: childrenInfo,
31
- };
32
- return nodeInfo;
33
- }
34
-
35
- _buildDialogsInfo(dialogs: Dialog[]): IPanelInfo[] {
36
- const dialogsInfo: IPanelInfo[] = [];
37
- dialogs.forEach((dialog) => {
38
- const panelState: IState = {};
39
- const panelContainer = dialog.panel;
40
- panelContainer.saveState(panelState);
41
-
42
- const panelInfo: IPanelInfo = {
43
- containerType: panelContainer.containerType,
44
- state: panelState,
45
- position: dialog.getPosition(),
46
- isHidden: dialog.isHidden,
47
- };
48
- dialogsInfo.push(panelInfo);
49
- });
50
-
51
- return dialogsInfo;
52
- }
12
+
13
+ serialize(model: DockModel) {
14
+ let graphInfo = this._buildGraphInfo(model.rootNode);
15
+ let dialogs = this._buildDialogsInfo(model.dialogs.sort((x,y)=><number><any>x.elementDialog.style.zIndex-<number><any>y.elementDialog.style.zIndex));
16
+ return JSON.stringify({ graphInfo: graphInfo, dialogsInfo: dialogs });
17
+ }
18
+
19
+ _buildGraphInfo(node: DockNode): INodeInfo {
20
+ let nodeState: IState = {};
21
+ node.container.saveState(nodeState);
22
+
23
+ let childrenInfo: INodeInfo[] = [];
24
+ node.children.forEach((childNode) => {
25
+ childrenInfo.push(this._buildGraphInfo(childNode));
26
+ });
27
+
28
+ let nodeInfo: INodeInfo = {
29
+ containerType: node.container.containerType,
30
+ state: nodeState,
31
+ children: childrenInfo
32
+ };
33
+ return nodeInfo;
34
+ }
35
+
36
+ _buildDialogsInfo(dialogs: Dialog[]): IPanelInfo[] {
37
+ let dialogsInfo: IPanelInfo[] = [];
38
+ dialogs.forEach((dialog) => {
39
+ let panelState: IState = {};
40
+ let panelContainer = dialog.panel;
41
+ panelContainer.saveState(panelState);
42
+
43
+ let panelInfo: IPanelInfo = {
44
+ containerType: panelContainer.containerType,
45
+ state: panelState,
46
+ position: dialog.getPosition(),
47
+ isHidden: dialog.isHidden
48
+ }
49
+ dialogsInfo.push(panelInfo);
50
+ });
51
+
52
+ return dialogsInfo;
53
+ }
53
54
  }
@@ -1,11 +1,11 @@
1
- import { DockManager } from './DockManager.js';
2
- import { DockNode } from './DockNode.js';
3
- import { HorizontalDockContainer } from './HorizontalDockContainer.js';
4
- import { VerticalDockContainer } from './VerticalDockContainer.js';
5
- import { FillDockContainer } from './FillDockContainer.js';
6
- import { IRectangle } from './interfaces/IRectangle.js';
7
- import { IDockContainer } from './interfaces/IDockContainer.js';
8
- import { TabHandle } from './TabHandle.js';
1
+ import { DockManager } from "./DockManager";
2
+ import { DockNode } from "./DockNode";
3
+ import { HorizontalDockContainer } from "./HorizontalDockContainer";
4
+ import { VerticalDockContainer } from "./VerticalDockContainer";
5
+ import { FillDockContainer } from "./FillDockContainer";
6
+ import { IRectangle } from "./interfaces/IRectangle";
7
+ import { IDockContainer } from "./interfaces/IDockContainer";
8
+ import { TabHandle } from "./TabHandle";
9
9
  export declare class DockLayoutEngine {
10
10
  dockManager: DockManager;
11
11
  constructor(dockManager: DockManager);
@@ -26,10 +26,10 @@ export declare class DockLayoutEngine {
26
26
  _forceResizeCompositeContainer: (container: IDockContainer) => void;
27
27
  _createDockContainer(containerType: string, newNode: DockNode, referenceNode: DockNode): FillDockContainer | HorizontalDockContainer | VerticalDockContainer;
28
28
  /**
29
- * Gets the bounds of the new node if it were to dock with the specified configuration
30
- * The state is not modified in this function. It is used for showing a preview of where
31
- * the panel would be docked when hovered over a dock wheel button
32
- */
29
+ * Gets the bounds of the new node if it were to dock with the specified configuration
30
+ * The state is not modified in this function. It is used for showing a preview of where
31
+ * the panel would be docked when hovered over a dock wheel button
32
+ */
33
33
  getDockBounds(referenceNode: DockNode, containerToDock: IDockContainer, direction: string, insertBeforeReference: boolean): IRectangle;
34
34
  _getVaringDimension(container: IDockContainer, direction: string): number;
35
35
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockLayoutEngine.d.ts","sourceRoot":"","sources":["DockLayoutEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,gBAAgB;IAEzB,WAAW,EAAE,WAAW,CAAC;gBAEb,WAAW,EAAE,WAAW;IAIpC,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,0DAA0D;IAC1D,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAIpD,wDAAwD;IACxD,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAIjD,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAInD,MAAM,CAAC,IAAI,EAAE,QAAQ;IAqDrB,KAAK,CAAC,IAAI,EAAE,QAAQ;IA2DpB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAiB3E,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO;IAiG1G,8BAA8B,cAAe,cAAc,UAI1D;IAED,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ;IAWtF;;;;OAIG;IACH,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAG,UAAU;IA4EtI,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAO5E"}