@datagrok-libraries/dock-spawn-dg 0.0.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.
Files changed (222) hide show
  1. package/.eslintrc.json +47 -0
  2. package/CHANGELOG.md +355 -0
  3. package/LICENSE +21 -0
  4. package/README.md +11 -0
  5. package/css/dock-manager-context-menu.css +19 -0
  6. package/css/dock-manager-style.css +190 -0
  7. package/css/dock-manager.css +411 -0
  8. package/images/close.svg +6 -0
  9. package/images/dock_bottom.png +0 -0
  10. package/images/dock_bottom_sel.png +0 -0
  11. package/images/dock_fill.png +0 -0
  12. package/images/dock_fill_sel.png +0 -0
  13. package/images/dock_left.png +0 -0
  14. package/images/dock_left_sel.png +0 -0
  15. package/images/dock_right.png +0 -0
  16. package/images/dock_right_sel.png +0 -0
  17. package/images/dock_top.png +0 -0
  18. package/images/dock_top_sel.png +0 -0
  19. package/index.ts +32 -0
  20. package/lib/BrowserDialogHelper.d.ts +8 -0
  21. package/lib/BrowserDialogHelper.d.ts.map +1 -0
  22. package/lib/BrowserDialogHelper.js +60 -0
  23. package/lib/ContainerType.d.ts +7 -0
  24. package/lib/ContainerType.d.ts.map +1 -0
  25. package/lib/ContainerType.js +7 -0
  26. package/lib/Dialog.d.ts +51 -0
  27. package/lib/Dialog.d.ts.map +1 -0
  28. package/lib/Dialog.js +209 -0
  29. package/lib/DockConfig.d.ts +9 -0
  30. package/lib/DockConfig.d.ts.map +1 -0
  31. package/lib/DockConfig.js +14 -0
  32. package/lib/DockGraphDeserializer.d.ts +19 -0
  33. package/lib/DockGraphDeserializer.d.ts.map +1 -0
  34. package/lib/DockGraphDeserializer.js +114 -0
  35. package/lib/DockGraphSerializer.d.ts +14 -0
  36. package/lib/DockGraphSerializer.d.ts.map +1 -0
  37. package/lib/DockGraphSerializer.js +40 -0
  38. package/lib/DockLayoutEngine.d.ts +36 -0
  39. package/lib/DockLayoutEngine.d.ts.map +1 -0
  40. package/lib/DockLayoutEngine.js +323 -0
  41. package/lib/DockManager.d.ts +155 -0
  42. package/lib/DockManager.d.ts.map +1 -0
  43. package/lib/DockManager.js +752 -0
  44. package/lib/DockManagerContext.d.ts +10 -0
  45. package/lib/DockManagerContext.d.ts.map +1 -0
  46. package/lib/DockManagerContext.js +12 -0
  47. package/lib/DockModel.d.ts +9 -0
  48. package/lib/DockModel.d.ts.map +1 -0
  49. package/lib/DockModel.js +8 -0
  50. package/lib/DockNode.d.ts +16 -0
  51. package/lib/DockNode.d.ts.map +1 -0
  52. package/lib/DockNode.js +64 -0
  53. package/lib/DockWheel.d.ts +41 -0
  54. package/lib/DockWheel.d.ts.map +1 -0
  55. package/lib/DockWheel.js +208 -0
  56. package/lib/DockWheelItem.d.ts +16 -0
  57. package/lib/DockWheelItem.d.ts.map +1 -0
  58. package/lib/DockWheelItem.js +34 -0
  59. package/lib/DocumentManagerContainer.d.ts +16 -0
  60. package/lib/DocumentManagerContainer.d.ts.map +1 -0
  61. package/lib/DocumentManagerContainer.js +28 -0
  62. package/lib/DocumentTabPage.d.ts +11 -0
  63. package/lib/DocumentTabPage.d.ts.map +1 -0
  64. package/lib/DocumentTabPage.js +26 -0
  65. package/lib/DraggableContainer.d.ts +51 -0
  66. package/lib/DraggableContainer.d.ts.map +1 -0
  67. package/lib/DraggableContainer.js +145 -0
  68. package/lib/EventHandler.d.ts +8 -0
  69. package/lib/EventHandler.d.ts.map +1 -0
  70. package/lib/EventHandler.js +14 -0
  71. package/lib/FillDockContainer.d.ts +34 -0
  72. package/lib/FillDockContainer.d.ts.map +1 -0
  73. package/lib/FillDockContainer.js +80 -0
  74. package/lib/HorizontalDockContainer.d.ts +7 -0
  75. package/lib/HorizontalDockContainer.d.ts.map +1 -0
  76. package/lib/HorizontalDockContainer.js +9 -0
  77. package/lib/PanelContainer.d.ts +114 -0
  78. package/lib/PanelContainer.d.ts.map +1 -0
  79. package/lib/PanelContainer.js +517 -0
  80. package/lib/Point.d.ts +6 -0
  81. package/lib/Point.d.ts.map +1 -0
  82. package/lib/Point.js +8 -0
  83. package/lib/ResizableContainer.d.ts +56 -0
  84. package/lib/ResizableContainer.d.ts.map +1 -0
  85. package/lib/ResizableContainer.js +254 -0
  86. package/lib/ResizeHandle.d.ts +16 -0
  87. package/lib/ResizeHandle.d.ts.map +1 -0
  88. package/lib/ResizeHandle.js +58 -0
  89. package/lib/SplitterBar.d.ts +33 -0
  90. package/lib/SplitterBar.d.ts.map +1 -0
  91. package/lib/SplitterBar.js +137 -0
  92. package/lib/SplitterDockContainer.d.ts +36 -0
  93. package/lib/SplitterDockContainer.d.ts.map +1 -0
  94. package/lib/SplitterDockContainer.js +75 -0
  95. package/lib/SplitterPanel.d.ts +27 -0
  96. package/lib/SplitterPanel.d.ts.map +1 -0
  97. package/lib/SplitterPanel.js +195 -0
  98. package/lib/TabHandle.d.ts +56 -0
  99. package/lib/TabHandle.d.ts.map +1 -0
  100. package/lib/TabHandle.js +292 -0
  101. package/lib/TabHost.d.ts +47 -0
  102. package/lib/TabHost.d.ts.map +1 -0
  103. package/lib/TabHost.js +238 -0
  104. package/lib/TabPage.d.ts +20 -0
  105. package/lib/TabPage.d.ts.map +1 -0
  106. package/lib/TabPage.js +81 -0
  107. package/lib/UndockInitiator.d.ts +32 -0
  108. package/lib/UndockInitiator.d.ts.map +1 -0
  109. package/lib/UndockInitiator.js +152 -0
  110. package/lib/Utils.d.ts +15 -0
  111. package/lib/Utils.d.ts.map +1 -0
  112. package/lib/Utils.js +69 -0
  113. package/lib/VerticalDockContainer.d.ts +7 -0
  114. package/lib/VerticalDockContainer.d.ts.map +1 -0
  115. package/lib/VerticalDockContainer.js +9 -0
  116. package/lib/enums/PanelType.d.ts +5 -0
  117. package/lib/enums/PanelType.d.ts.map +1 -0
  118. package/lib/enums/PanelType.js +5 -0
  119. package/lib/enums/TabHostDirection.d.ts +7 -0
  120. package/lib/enums/TabHostDirection.d.ts.map +1 -0
  121. package/lib/enums/TabHostDirection.js +7 -0
  122. package/lib/enums/WheelTypes.d.ts +12 -0
  123. package/lib/enums/WheelTypes.d.ts.map +1 -0
  124. package/lib/enums/WheelTypes.js +14 -0
  125. package/lib/i18n/Defaults.d.ts +12 -0
  126. package/lib/i18n/Defaults.d.ts.map +1 -0
  127. package/lib/i18n/Defaults.js +9 -0
  128. package/lib/i18n/Localizer.d.ts +7 -0
  129. package/lib/i18n/Localizer.d.ts.map +1 -0
  130. package/lib/i18n/Localizer.js +16 -0
  131. package/lib/index.d.ts +33 -0
  132. package/lib/index.d.ts.map +1 -0
  133. package/lib/index.js +32 -0
  134. package/lib/interfaces/IDockContainer.d.ts +26 -0
  135. package/lib/interfaces/IDockContainer.d.ts.map +1 -0
  136. package/lib/interfaces/IDockContainer.js +1 -0
  137. package/lib/interfaces/IDockContainerWithSize.d.ts +6 -0
  138. package/lib/interfaces/IDockContainerWithSize.d.ts.map +1 -0
  139. package/lib/interfaces/IDockContainerWithSize.js +1 -0
  140. package/lib/interfaces/ILayoutEventListener.d.ts +27 -0
  141. package/lib/interfaces/ILayoutEventListener.d.ts.map +1 -0
  142. package/lib/interfaces/ILayoutEventListener.js +1 -0
  143. package/lib/interfaces/IMouseOrTouchEvent.d.ts +7 -0
  144. package/lib/interfaces/IMouseOrTouchEvent.d.ts.map +1 -0
  145. package/lib/interfaces/IMouseOrTouchEvent.js +1 -0
  146. package/lib/interfaces/INodeInfo.d.ts +8 -0
  147. package/lib/interfaces/INodeInfo.d.ts.map +1 -0
  148. package/lib/interfaces/INodeInfo.js +1 -0
  149. package/lib/interfaces/IPanelInfo.d.ts +10 -0
  150. package/lib/interfaces/IPanelInfo.d.ts.map +1 -0
  151. package/lib/interfaces/IPanelInfo.js +1 -0
  152. package/lib/interfaces/IRectangle.d.ts +7 -0
  153. package/lib/interfaces/IRectangle.d.ts.map +1 -0
  154. package/lib/interfaces/IRectangle.js +1 -0
  155. package/lib/interfaces/ISize.d.ts +5 -0
  156. package/lib/interfaces/ISize.d.ts.map +1 -0
  157. package/lib/interfaces/ISize.js +1 -0
  158. package/lib/interfaces/IState.d.ts +12 -0
  159. package/lib/interfaces/IState.d.ts.map +1 -0
  160. package/lib/interfaces/IState.js +1 -0
  161. package/lib/interfaces/IThickness.d.ts +7 -0
  162. package/lib/interfaces/IThickness.d.ts.map +1 -0
  163. package/lib/interfaces/IThickness.js +1 -0
  164. package/lib/webcomponent/DockSpawnTsWebcomponent.d.ts +35 -0
  165. package/lib/webcomponent/DockSpawnTsWebcomponent.d.ts.map +1 -0
  166. package/lib/webcomponent/DockSpawnTsWebcomponent.js +209 -0
  167. package/lib/webcomponent/styles.d.ts +5 -0
  168. package/lib/webcomponent/styles.d.ts.map +1 -0
  169. package/lib/webcomponent/styles.js +537 -0
  170. package/package.json +36 -0
  171. package/src/BrowserDialogHelper.ts +76 -0
  172. package/src/ContainerType.ts +6 -0
  173. package/src/Dialog.ts +253 -0
  174. package/src/DockConfig.ts +15 -0
  175. package/src/DockGraphDeserializer.ts +129 -0
  176. package/src/DockGraphSerializer.ts +53 -0
  177. package/src/DockLayoutEngine.ts +370 -0
  178. package/src/DockManager.ts +880 -0
  179. package/src/DockManagerContext.ts +16 -0
  180. package/src/DockModel.ts +12 -0
  181. package/src/DockNode.ts +81 -0
  182. package/src/DockWheel.ts +215 -0
  183. package/src/DockWheelItem.ts +41 -0
  184. package/src/DocumentManagerContainer.ts +39 -0
  185. package/src/DocumentTabPage.ts +35 -0
  186. package/src/DraggableContainer.ts +177 -0
  187. package/src/EventHandler.ts +17 -0
  188. package/src/FillDockContainer.ts +98 -0
  189. package/src/HorizontalDockContainer.ts +13 -0
  190. package/src/PanelContainer.ts +596 -0
  191. package/src/Point.ts +10 -0
  192. package/src/ResizableContainer.ts +293 -0
  193. package/src/ResizeHandle.ts +59 -0
  194. package/src/SplitterBar.ts +157 -0
  195. package/src/SplitterDockContainer.ts +95 -0
  196. package/src/SplitterPanel.ts +228 -0
  197. package/src/TabHandle.ts +347 -0
  198. package/src/TabHost.ts +267 -0
  199. package/src/TabPage.ts +98 -0
  200. package/src/UndockInitiator.ts +181 -0
  201. package/src/Utils.ts +85 -0
  202. package/src/VerticalDockContainer.ts +13 -0
  203. package/src/enums/PanelType.ts +4 -0
  204. package/src/enums/TabHostDirection.ts +6 -0
  205. package/src/enums/WheelTypes.ts +14 -0
  206. package/src/i18n/Defaults.ts +20 -0
  207. package/src/i18n/Localizer.ts +23 -0
  208. package/src/index.ts +32 -0
  209. package/src/interfaces/IDockContainer.ts +27 -0
  210. package/src/interfaces/IDockContainerWithSize.ts +6 -0
  211. package/src/interfaces/ILayoutEventListener.ts +28 -0
  212. package/src/interfaces/IMouseOrTouchEvent.ts +6 -0
  213. package/src/interfaces/INodeInfo.ts +8 -0
  214. package/src/interfaces/IPanelInfo.ts +10 -0
  215. package/src/interfaces/IRectangle.ts +6 -0
  216. package/src/interfaces/ISize.ts +4 -0
  217. package/src/interfaces/IState.ts +12 -0
  218. package/src/interfaces/IThickness.ts +6 -0
  219. package/src/webcomponent/DockSpawnTsWebcomponent.ts +248 -0
  220. package/src/webcomponent/styles.ts +544 -0
  221. package/tsconfig.json +74 -0
  222. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,10 @@
1
+ import { DockModel } from "./DockModel.js";
2
+ import { DockManager } from "./DockManager.js";
3
+ import { DocumentManagerContainer } from "./DocumentManagerContainer.js";
4
+ export declare class DockManagerContext {
5
+ dockManager: DockManager;
6
+ model: DockModel;
7
+ documentManagerView: DocumentManagerContainer;
8
+ constructor(dockManager: DockManager);
9
+ }
10
+ //# sourceMappingURL=DockManagerContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockManagerContext.d.ts","sourceRoot":"","sources":["../src/DockManagerContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,qBAAa,kBAAkB;IAE3B,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,mBAAmB,EAAE,wBAAwB,CAAC;gBAElC,WAAW,EAAG,WAAW;CAKxC"}
@@ -0,0 +1,12 @@
1
+ import { DockModel } from "./DockModel.js";
2
+ import { DocumentManagerContainer } from "./DocumentManagerContainer.js";
3
+ export class DockManagerContext {
4
+ dockManager;
5
+ model;
6
+ documentManagerView;
7
+ constructor(dockManager) {
8
+ this.dockManager = dockManager;
9
+ this.model = new DockModel();
10
+ this.documentManagerView = new DocumentManagerContainer(this.dockManager);
11
+ }
12
+ }
@@ -0,0 +1,9 @@
1
+ import { DockNode } from "./DockNode.js";
2
+ import { Dialog } from "./Dialog.js";
3
+ export declare class DockModel {
4
+ rootNode: DockNode;
5
+ documentManagerNode: DockNode;
6
+ dialogs: Dialog[];
7
+ constructor();
8
+ }
9
+ //# sourceMappingURL=DockModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockModel.d.ts","sourceRoot":"","sources":["../src/DockModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAa,SAAS;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;;CAKpB"}
@@ -0,0 +1,8 @@
1
+ export class DockModel {
2
+ rootNode;
3
+ documentManagerNode;
4
+ dialogs;
5
+ constructor() {
6
+ this.rootNode = this.documentManagerNode = undefined;
7
+ }
8
+ }
@@ -0,0 +1,16 @@
1
+ import { IDockContainer } from "./interfaces/IDockContainer.js";
2
+ export declare class DockNode {
3
+ parent: DockNode;
4
+ container: IDockContainer;
5
+ children: DockNode[];
6
+ constructor(container: IDockContainer);
7
+ detachFromParent(): void;
8
+ removeChild(childNode: DockNode): void;
9
+ addChild(childNode: DockNode): void;
10
+ addChildBefore(referenceNode: DockNode, childNode: DockNode): void;
11
+ addChildAfter(referenceNode: DockNode, childNode: DockNode): void;
12
+ _addChildWithDirection(referenceNode: DockNode, childNode: DockNode, before: boolean): void;
13
+ performLayout(relayoutEvenIfEqual: boolean): void;
14
+ debugDumpTree(indent: number): void;
15
+ }
16
+ //# sourceMappingURL=DockNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockNode.d.ts","sourceRoot":"","sources":["../src/DockNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,qBAAa,QAAQ;IAEjB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAET,SAAS,EAAE,cAAc;IAMrC,gBAAgB;IAOhB,WAAW,CAAC,SAAS,EAAE,QAAQ;IAM/B,QAAQ,CAAC,SAAS,EAAE,QAAQ;IAM5B,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IAI3D,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IAI1D,sBAAsB,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;IAqBpF,aAAa,CAAC,mBAAmB,EAAE,OAAO;IAK1C,aAAa,CAAC,MAAM,EAAE,MAAM;CAa/B"}
@@ -0,0 +1,64 @@
1
+ export class DockNode {
2
+ parent;
3
+ container;
4
+ children;
5
+ constructor(container) {
6
+ /** The dock container represented by this node */
7
+ this.container = container;
8
+ this.children = [];
9
+ }
10
+ detachFromParent() {
11
+ if (this.parent) {
12
+ this.parent.removeChild(this);
13
+ delete this.parent;
14
+ }
15
+ }
16
+ removeChild(childNode) {
17
+ let index = this.children.indexOf(childNode);
18
+ if (index >= 0)
19
+ this.children.splice(index, 1);
20
+ }
21
+ addChild(childNode) {
22
+ childNode.detachFromParent();
23
+ childNode.parent = this;
24
+ this.children.push(childNode);
25
+ }
26
+ addChildBefore(referenceNode, childNode) {
27
+ this._addChildWithDirection(referenceNode, childNode, true);
28
+ }
29
+ addChildAfter(referenceNode, childNode) {
30
+ this._addChildWithDirection(referenceNode, childNode, false);
31
+ }
32
+ _addChildWithDirection(referenceNode, childNode, before) {
33
+ // Detach this node from it's parent first
34
+ childNode.detachFromParent();
35
+ childNode.parent = this;
36
+ let referenceIndex = this.children.indexOf(referenceNode);
37
+ let preList = this.children.slice(0, referenceIndex);
38
+ let postList = this.children.slice(referenceIndex + 1, this.children.length);
39
+ this.children = preList.slice(0);
40
+ if (before) {
41
+ this.children.push(childNode);
42
+ this.children.push(referenceNode);
43
+ }
44
+ else {
45
+ this.children.push(referenceNode);
46
+ this.children.push(childNode);
47
+ }
48
+ Array.prototype.push.apply(this.children, postList);
49
+ }
50
+ performLayout(relayoutEvenIfEqual) {
51
+ let childContainers = this.children.map((childNode) => { return childNode.container; });
52
+ this.container.performLayout(childContainers, relayoutEvenIfEqual);
53
+ }
54
+ debugDumpTree(indent) {
55
+ if (indent === undefined)
56
+ indent = 0;
57
+ let message = this.container.name;
58
+ for (let i = 0; i < indent; i++)
59
+ message = '\t' + message;
60
+ let parentType = this.parent === undefined ? 'null' : this.parent.container.containerType;
61
+ console.log('>>' + message + ' [' + parentType + ']');
62
+ this.children.forEach((childNode) => { childNode.debugDumpTree(indent + 1); });
63
+ }
64
+ }
@@ -0,0 +1,41 @@
1
+ import { DockManager } from "./DockManager.js";
2
+ import { DockWheelItem } from "./DockWheelItem.js";
3
+ import { WheelTypes } from "./enums/WheelTypes.js";
4
+ import { Dialog } from "./Dialog.js";
5
+ import { DockNode } from "./DockNode.js";
6
+ /**
7
+ * Manages the dock overlay buttons that are displayed over the dock manager
8
+ */
9
+ export declare class DockWheel {
10
+ dockManager: DockManager;
11
+ elementMainWheel: HTMLDivElement;
12
+ elementSideWheel: HTMLDivElement;
13
+ wheelItems: {
14
+ [index in WheelTypes]?: DockWheelItem;
15
+ };
16
+ elementPanelPreview: HTMLDivElement;
17
+ activeDialog: Dialog;
18
+ _activeNode?: DockNode;
19
+ _visible: boolean;
20
+ constructor(dockManager: DockManager);
21
+ /** The node over which the dock wheel is being displayed on */
22
+ get activeNode(): DockNode;
23
+ set activeNode(value: DockNode);
24
+ showWheel(): void;
25
+ _setWheelButtonPosition(wheelId: WheelTypes, left: number, top: number): void;
26
+ hideWheel(): void;
27
+ onMouseOver(wheelItem: DockWheelItem): void;
28
+ onMouseOut(): void;
29
+ /**
30
+ * Called if the dialog is dropped in a dock panel.
31
+ * The dialog might not necessarily be dropped in one of the dock wheel buttons,
32
+ * in which case the request will be ignored
33
+ */
34
+ onDialogDropped(dialog: Dialog): void;
35
+ /**
36
+ * Returns the wheel item which has the mouse cursor on top of it
37
+ */
38
+ _getActiveWheelItem(): DockWheelItem;
39
+ _handleDockRequest(wheelItem: DockWheelItem, dialog: Dialog): void;
40
+ }
41
+ //# sourceMappingURL=DockWheel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockWheel.d.ts","sourceRoot":"","sources":["../src/DockWheel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,qBAAa,SAAS;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,cAAc,CAAC;IACjC,gBAAgB,EAAE,cAAc,CAAC;IACjC,UAAU,EAAE;SAAG,KAAK,IAAI,UAAU,CAAC,CAAC,EAAE,aAAa;KAAG,CAAC;IACvD,mBAAmB,EAAE,cAAc,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;gBAEN,WAAW,EAAE,WAAW;IA4BpC,+DAA+D;IAC/D,IAAI,UAAU,IAAI,QAAQ,CAEzB;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,EAU7B;IAED,SAAS;IAmCT,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAatE,SAAS;IAYT,WAAW,CAAC,SAAS,EAAE,aAAa;IAoCpC,UAAU;IAIV;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM;IAO9B;;OAEG;IACH,mBAAmB,IAAI,aAAa;IASpC,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;CA0B9D"}
@@ -0,0 +1,208 @@
1
+ import { Utils } from "./Utils.js";
2
+ import { DockWheelItem } from "./DockWheelItem.js";
3
+ import { WheelTypes } from "./enums/WheelTypes.js";
4
+ /**
5
+ * Manages the dock overlay buttons that are displayed over the dock manager
6
+ */
7
+ export class DockWheel {
8
+ dockManager;
9
+ elementMainWheel;
10
+ elementSideWheel;
11
+ wheelItems;
12
+ elementPanelPreview;
13
+ activeDialog;
14
+ _activeNode;
15
+ _visible;
16
+ constructor(dockManager) {
17
+ this.dockManager = dockManager;
18
+ this.elementMainWheel = document.createElement('div'); // Contains the main wheel's 5 dock buttons
19
+ this.elementSideWheel = document.createElement('div'); // Contains the 4 buttons on the side
20
+ this.wheelItems = {};
21
+ for (let wheelType in WheelTypes) {
22
+ this.wheelItems[wheelType] = new DockWheelItem(this, wheelType);
23
+ if (wheelType.substr(-2, 2) === '-s')
24
+ // Side button
25
+ this.elementSideWheel.appendChild(this.wheelItems[wheelType].element);
26
+ else
27
+ // Main dock wheel button
28
+ this.elementMainWheel.appendChild(this.wheelItems[wheelType].element);
29
+ }
30
+ ;
31
+ let zIndex = 9000000;
32
+ this.elementMainWheel.classList.add('dock-wheel-base');
33
+ this.elementSideWheel.classList.add('dock-wheel-base');
34
+ this.elementMainWheel.style.zIndex = String(zIndex + 1);
35
+ this.elementSideWheel.style.zIndex = String(zIndex);
36
+ this.elementPanelPreview = document.createElement('div');
37
+ this.elementPanelPreview.classList.add('dock-wheel-panel-preview');
38
+ this.elementPanelPreview.style.zIndex = String(zIndex - 1);
39
+ this.activeDialog = undefined; // The dialog being dragged, when the wheel is visible
40
+ this._activeNode = undefined;
41
+ this._visible = false;
42
+ }
43
+ /** The node over which the dock wheel is being displayed on */
44
+ get activeNode() {
45
+ return this._activeNode;
46
+ }
47
+ set activeNode(value) {
48
+ let previousValue = this._activeNode;
49
+ this._activeNode = value;
50
+ if (previousValue !== this._activeNode) {
51
+ // The active node has been changed.
52
+ // Reattach the wheel to the new node's element and show it again
53
+ if (this._visible)
54
+ this.showWheel();
55
+ }
56
+ }
57
+ showWheel() {
58
+ this._visible = true;
59
+ if (!this.activeNode) {
60
+ // No active node selected. make sure the wheel is invisible
61
+ Utils.removeNode(this.elementMainWheel);
62
+ Utils.removeNode(this.elementSideWheel);
63
+ return;
64
+ }
65
+ let element = this.activeNode.container.containerElement;
66
+ let containerWidth = element.clientWidth;
67
+ let containerHeight = element.clientHeight;
68
+ let baseX = Math.floor(containerWidth / 2); // + element.offsetLeft;
69
+ let baseY = Math.floor(containerHeight / 2); // + element.offsetTop;
70
+ let bcElement = element.getBoundingClientRect();
71
+ let bcdockManagerElement = this.dockManager.element.getBoundingClientRect();
72
+ this.elementMainWheel.style.left = (bcElement.left - bcdockManagerElement.left + baseX) + 'px';
73
+ this.elementMainWheel.style.top = (bcElement.top - bcdockManagerElement.top + baseY) + 'px';
74
+ // The positioning of the main dock wheel buttons is done automatically through CSS
75
+ // Dynamically calculate the positions of the buttons on the extreme sides of the dock manager
76
+ let sideMargin = 20;
77
+ let dockManagerWidth = this.dockManager.element.clientWidth;
78
+ let dockManagerHeight = this.dockManager.element.clientHeight;
79
+ Utils.removeNode(this.elementMainWheel);
80
+ Utils.removeNode(this.elementSideWheel);
81
+ this.dockManager.element.appendChild(this.elementMainWheel);
82
+ this.dockManager.element.appendChild(this.elementSideWheel);
83
+ this._setWheelButtonPosition(WheelTypes["left-s"], sideMargin, -dockManagerHeight / 2);
84
+ this._setWheelButtonPosition(WheelTypes["right-s"], dockManagerWidth - sideMargin * 2, -dockManagerHeight / 2);
85
+ this._setWheelButtonPosition(WheelTypes["top-s"], dockManagerWidth / 2, -dockManagerHeight + sideMargin);
86
+ this._setWheelButtonPosition(WheelTypes["down-s"], dockManagerWidth / 2, -sideMargin);
87
+ }
88
+ _setWheelButtonPosition(wheelId, left, top) {
89
+ let item = this.wheelItems[wheelId];
90
+ let itemHalfWidth = item.element.clientWidth / 2;
91
+ let itemHalfHeight = item.element.clientHeight / 2;
92
+ let x = Math.floor(left - itemHalfWidth);
93
+ let y = Math.floor(top - itemHalfHeight);
94
+ // item.element.style.left = '${x}px';
95
+ // item.element.style.top = '${y}px';
96
+ item.element.style.marginLeft = x + 'px';
97
+ item.element.style.marginTop = y + 'px';
98
+ }
99
+ hideWheel() {
100
+ this._visible = false;
101
+ this.activeNode = undefined;
102
+ Utils.removeNode(this.elementMainWheel);
103
+ Utils.removeNode(this.elementSideWheel);
104
+ Utils.removeNode(this.elementPanelPreview);
105
+ // deactivate all wheels
106
+ for (let wheelType in this.wheelItems)
107
+ this.wheelItems[wheelType].active = false;
108
+ }
109
+ onMouseOver(wheelItem) {
110
+ if (!this.activeDialog)
111
+ return;
112
+ // Display the preview panel to show where the panel would be docked
113
+ let rootNode = this.dockManager.context.model.rootNode;
114
+ let bounds;
115
+ if (wheelItem.id === WheelTypes.top) {
116
+ bounds = this.dockManager.layoutEngine.getDockBounds(this.activeNode, this.activeDialog.panel, 'vertical', true);
117
+ }
118
+ else if (wheelItem.id === WheelTypes.down) {
119
+ bounds = this.dockManager.layoutEngine.getDockBounds(this.activeNode, this.activeDialog.panel, 'vertical', false);
120
+ }
121
+ else if (wheelItem.id === WheelTypes.left) {
122
+ bounds = this.dockManager.layoutEngine.getDockBounds(this.activeNode, this.activeDialog.panel, 'horizontal', true);
123
+ }
124
+ else if (wheelItem.id === WheelTypes.right) {
125
+ bounds = this.dockManager.layoutEngine.getDockBounds(this.activeNode, this.activeDialog.panel, 'horizontal', false);
126
+ }
127
+ else if (wheelItem.id === WheelTypes.fill) {
128
+ bounds = this.dockManager.layoutEngine.getDockBounds(this.activeNode, this.activeDialog.panel, 'fill', false);
129
+ }
130
+ else if (wheelItem.id === WheelTypes["top-s"]) {
131
+ bounds = this.dockManager.layoutEngine.getDockBounds(rootNode, this.activeDialog.panel, 'vertical', true);
132
+ }
133
+ else if (wheelItem.id === WheelTypes["down-s"]) {
134
+ bounds = this.dockManager.layoutEngine.getDockBounds(rootNode, this.activeDialog.panel, 'vertical', false);
135
+ }
136
+ else if (wheelItem.id === WheelTypes["left-s"]) {
137
+ bounds = this.dockManager.layoutEngine.getDockBounds(rootNode, this.activeDialog.panel, 'horizontal', true);
138
+ }
139
+ else if (wheelItem.id === WheelTypes["right-s"]) {
140
+ bounds = this.dockManager.layoutEngine.getDockBounds(rootNode, this.activeDialog.panel, 'horizontal', false);
141
+ }
142
+ if (bounds) {
143
+ this.dockManager.element.appendChild(this.elementPanelPreview);
144
+ this.elementPanelPreview.style.left = Math.round(bounds.x) + 'px';
145
+ this.elementPanelPreview.style.top = Math.round(bounds.y) + 'px';
146
+ this.elementPanelPreview.style.width = Math.round(bounds.width) + 'px';
147
+ this.elementPanelPreview.style.height = Math.round(bounds.height) + 'px';
148
+ }
149
+ }
150
+ onMouseOut() {
151
+ Utils.removeNode(this.elementPanelPreview);
152
+ }
153
+ /**
154
+ * Called if the dialog is dropped in a dock panel.
155
+ * The dialog might not necessarily be dropped in one of the dock wheel buttons,
156
+ * in which case the request will be ignored
157
+ */
158
+ onDialogDropped(dialog) {
159
+ // Check if the dialog was dropped in one of the wheel items
160
+ let wheelItem = this._getActiveWheelItem();
161
+ if (wheelItem)
162
+ this._handleDockRequest(wheelItem, dialog);
163
+ }
164
+ /**
165
+ * Returns the wheel item which has the mouse cursor on top of it
166
+ */
167
+ _getActiveWheelItem() {
168
+ for (let wheelType in this.wheelItems) {
169
+ let wheelItem = this.wheelItems[wheelType];
170
+ if (wheelItem.active)
171
+ return wheelItem;
172
+ }
173
+ return this.wheelItems[WheelTypes.fill];
174
+ }
175
+ _handleDockRequest(wheelItem, dialog) {
176
+ wheelItem.active = false;
177
+ wheelItem.element.classList.remove(wheelItem.hoverIconClass);
178
+ if (!this.activeNode)
179
+ return;
180
+ if (wheelItem.id === WheelTypes.left) {
181
+ this.dockManager.dockDialogLeft(this.activeNode, dialog);
182
+ }
183
+ else if (wheelItem.id === WheelTypes.right) {
184
+ this.dockManager.dockDialogRight(this.activeNode, dialog);
185
+ }
186
+ else if (wheelItem.id === WheelTypes.top) {
187
+ this.dockManager.dockDialogUp(this.activeNode, dialog);
188
+ }
189
+ else if (wheelItem.id === WheelTypes.down) {
190
+ this.dockManager.dockDialogDown(this.activeNode, dialog);
191
+ }
192
+ else if (wheelItem.id === WheelTypes.fill) {
193
+ this.dockManager.dockDialogFill(this.activeNode, dialog);
194
+ }
195
+ else if (wheelItem.id === WheelTypes["left-s"]) {
196
+ this.dockManager.dockDialogLeft(this.dockManager.context.model.rootNode, dialog);
197
+ }
198
+ else if (wheelItem.id === WheelTypes["right-s"]) {
199
+ this.dockManager.dockDialogRight(this.dockManager.context.model.rootNode, dialog);
200
+ }
201
+ else if (wheelItem.id === WheelTypes["top-s"]) {
202
+ this.dockManager.dockDialogUp(this.dockManager.context.model.rootNode, dialog);
203
+ }
204
+ else if (wheelItem.id === WheelTypes["down-s"]) {
205
+ this.dockManager.dockDialogDown(this.dockManager.context.model.rootNode, dialog);
206
+ }
207
+ }
208
+ }
@@ -0,0 +1,16 @@
1
+ import { EventHandler } from "./EventHandler.js";
2
+ import { DockWheel } from "./DockWheel.js";
3
+ import { WheelTypes } from "./enums/WheelTypes.js";
4
+ export declare class DockWheelItem {
5
+ wheel: DockWheel;
6
+ id: WheelTypes;
7
+ element: HTMLDivElement;
8
+ hoverIconClass: string;
9
+ mouseOverHandler: EventHandler;
10
+ mouseOutHandler: EventHandler;
11
+ active: boolean;
12
+ constructor(wheel: DockWheel, id: WheelTypes);
13
+ onMouseMoved(): void;
14
+ onMouseOut(): void;
15
+ }
16
+ //# sourceMappingURL=DockWheelItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockWheelItem.d.ts","sourceRoot":"","sources":["../src/DockWheelItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,qBAAa,aAAa;IAEtB,KAAK,EAAE,SAAS,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,eAAe,EAAE,YAAY,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;gBAEJ,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU;IAe5C,YAAY;IAMZ,UAAU;CAKb"}
@@ -0,0 +1,34 @@
1
+ import { EventHandler } from "./EventHandler.js";
2
+ export class DockWheelItem {
3
+ wheel;
4
+ id;
5
+ element;
6
+ hoverIconClass;
7
+ mouseOverHandler;
8
+ mouseOutHandler;
9
+ active;
10
+ constructor(wheel, id) {
11
+ this.wheel = wheel;
12
+ this.id = id;
13
+ let wheelType = id.replace('-s', '');
14
+ this.element = document.createElement('div');
15
+ this.element.classList.add('dock-wheel-item');
16
+ this.element.classList.add('disable-selection');
17
+ this.element.classList.add('dock-wheel-' + wheelType);
18
+ this.element.classList.add('dock-wheel-' + wheelType + '-icon');
19
+ this.hoverIconClass = 'dock-wheel-' + wheelType + '-icon-hover';
20
+ this.mouseOverHandler = new EventHandler(this.element, 'pointerover', this.onMouseMoved.bind(this));
21
+ this.mouseOutHandler = new EventHandler(this.element, 'pointerout', this.onMouseOut.bind(this));
22
+ this.active = false; // Becomes active when the mouse is hovered over it
23
+ }
24
+ onMouseMoved() {
25
+ this.active = true;
26
+ this.element.classList.add(this.hoverIconClass);
27
+ this.wheel.onMouseOver(this);
28
+ }
29
+ onMouseOut() {
30
+ this.active = false;
31
+ this.element.classList.remove(this.hoverIconClass);
32
+ this.wheel.onMouseOut();
33
+ }
34
+ }
@@ -0,0 +1,16 @@
1
+ import { FillDockContainer } from "./FillDockContainer.js";
2
+ import { DockManager } from "./DockManager.js";
3
+ import { IState } from "./interfaces/IState.js";
4
+ /**
5
+ * The document manager is then central area of the dock layout hierarchy.
6
+ * This is where more important panels are placed (e.g. the text editor in an IDE,
7
+ * 3D view in a modelling package etc
8
+ */
9
+ export declare class DocumentManagerContainer extends FillDockContainer {
10
+ constructor(dockManager: DockManager);
11
+ private _createDocumentTabPage;
12
+ saveState(state: IState): void;
13
+ /** Returns the selected document tab */
14
+ selectedTab(): import("./TabPage.js").TabPage;
15
+ }
16
+ //# sourceMappingURL=DocumentManagerContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentManagerContainer.d.ts","sourceRoot":"","sources":["../src/DocumentManagerContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD;;;;GAIG;AAEH,qBAAa,wBAAyB,SAAQ,iBAAiB;gBAE/C,WAAW,EAAE,WAAW;IASpC,OAAO,CAAC,sBAAsB;IAI9B,SAAS,CAAC,KAAK,EAAE,MAAM;IAKvB,wCAAwC;IACxC,WAAW;CAGd"}
@@ -0,0 +1,28 @@
1
+ import { FillDockContainer } from "./FillDockContainer.js";
2
+ import { DocumentTabPage } from "./DocumentTabPage.js";
3
+ import { TabHostDirection } from "./enums/TabHostDirection.js";
4
+ /**
5
+ * The document manager is then central area of the dock layout hierarchy.
6
+ * This is where more important panels are placed (e.g. the text editor in an IDE,
7
+ * 3D view in a modelling package etc
8
+ */
9
+ export class DocumentManagerContainer extends FillDockContainer {
10
+ constructor(dockManager) {
11
+ super(dockManager, TabHostDirection.TOP);
12
+ this.minimumAllowedChildNodes = 0;
13
+ this.element.classList.add('document-manager');
14
+ this.tabHost.createTabPage = this._createDocumentTabPage;
15
+ this.tabHost.displayCloseButton = true;
16
+ }
17
+ _createDocumentTabPage(tabHost, container) {
18
+ return new DocumentTabPage(tabHost, container);
19
+ }
20
+ saveState(state) {
21
+ super.saveState(state);
22
+ state.documentManager = true;
23
+ }
24
+ /** Returns the selected document tab */
25
+ selectedTab() {
26
+ return this.tabHost.activeTab;
27
+ }
28
+ }
@@ -0,0 +1,11 @@
1
+ import { TabHost } from "./TabHost.js";
2
+ import { TabPage } from "./TabPage.js";
3
+ import { IDockContainer } from "./interfaces/IDockContainer.js";
4
+ /**
5
+ * Specialized tab page that doesn't display the panel's frame when docked in a tab page
6
+ */
7
+ export declare class DocumentTabPage extends TabPage {
8
+ constructor(host: TabHost, container: IDockContainer);
9
+ destroy(): void;
10
+ }
11
+ //# sourceMappingURL=DocumentTabPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentTabPage.d.ts","sourceRoot":"","sources":["../src/DocumentTabPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE;;GAEG;AACH,qBAAa,eAAgB,SAAQ,OAAO;gBAE5B,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc;IAgBpD,OAAO;CAOV"}
@@ -0,0 +1,26 @@
1
+ import { TabPage } from "./TabPage.js";
2
+ import { Utils } from "./Utils.js";
3
+ /**
4
+ * Specialized tab page that doesn't display the panel's frame when docked in a tab page
5
+ */
6
+ export class DocumentTabPage extends TabPage {
7
+ constructor(host, container) {
8
+ super(host, container);
9
+ // If the container is a panel, extract the content element and set it as the tab's content
10
+ if (this.container.containerType === 'panel') {
11
+ this.panel = container;
12
+ this.containerElement = this.panel.elementContentWrapper;
13
+ // detach the container element from the panel's frame.
14
+ // It will be reattached when this tab page is destroyed
15
+ // This enables the panel's frame (title bar etc) to be hidden
16
+ // inside the tab page
17
+ Utils.removeNode(this.containerElement);
18
+ }
19
+ }
20
+ destroy() {
21
+ super.destroy();
22
+ // Restore the panel content element back into the panel frame
23
+ //Utils.removeNode(this.containerElement);
24
+ this.panel.elementContentHost.appendChild(this.containerElement);
25
+ }
26
+ }
@@ -0,0 +1,51 @@
1
+ import { Dialog } from "./Dialog.js";
2
+ import { DockManager } from "./DockManager.js";
3
+ import { EventHandler } from "./EventHandler.js";
4
+ import { IDockContainer } from "./interfaces/IDockContainer.js";
5
+ import { ContainerType } from "./ContainerType.js";
6
+ import { IState } from "./interfaces/IState.js";
7
+ import { PanelContainer } from "./PanelContainer.js";
8
+ export declare class DraggableContainer implements IDockContainer {
9
+ dialog: Dialog;
10
+ delegate: PanelContainer;
11
+ containerElement: HTMLElement;
12
+ dockManager: DockManager;
13
+ topLevelElement: HTMLElement;
14
+ containerType: ContainerType;
15
+ mouseDownHandler: EventHandler;
16
+ touchDownHandler: EventHandler;
17
+ minimumAllowedChildNodes: number;
18
+ previousMousePosition: {
19
+ x: any;
20
+ y: any;
21
+ };
22
+ mouseMoveHandler: EventHandler;
23
+ mouseUpHandler: EventHandler;
24
+ private iframeEventHandlers;
25
+ constructor(dialog: Dialog, delegate: PanelContainer, topLevelElement: HTMLElement, dragHandle: HTMLElement);
26
+ destroy(): void;
27
+ saveState(state: IState): void;
28
+ loadState(state: IState): void;
29
+ setActiveChild(): void;
30
+ get width(): number;
31
+ get height(): number;
32
+ get name(): string;
33
+ set name(value: string);
34
+ resize(width: number, height: number): void;
35
+ performLayout(children: IDockContainer[]): void;
36
+ removeDecorator(): void;
37
+ onMouseDown(event: PointerEvent): void;
38
+ onMouseUp(event: any): void;
39
+ _startDragging(event: {
40
+ clientX: number;
41
+ clientY: number;
42
+ }): void;
43
+ _stopDragging(event: any): void;
44
+ onMouseMovedIframe(e: PointerEvent, iframe: HTMLIFrameElement): void;
45
+ onMouseMove(event: PointerEvent, iframeOffset?: {
46
+ x: number;
47
+ y: number;
48
+ }): void;
49
+ _performDrag(dx: number, dy: number): void;
50
+ }
51
+ //# sourceMappingURL=DraggableContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraggableContainer.d.ts","sourceRoot":"","sources":["../src/DraggableContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qBAAa,kBAAmB,YAAW,cAAc;IAErD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,gBAAgB,EAAE,WAAW,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,WAAW,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE;QAAE,CAAC,EAAE,GAAG,CAAC;QAAC,CAAC,EAAE,GAAG,CAAC;KAAE,CAAC;IAC3C,gBAAgB,EAAE,YAAY,CAAC;IAC/B,cAAc,EAAE,YAAY,CAAC;IAC7B,OAAO,CAAC,mBAAmB,CAAiB;gBAEhC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW;IAe3G,OAAO;IAKP,SAAS,CAAC,KAAK,EAAE,MAAM;IAIvB,SAAS,CAAC,KAAK,EAAE,MAAM;IAIvB,cAAc;IAGd,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,IAAI,WAEP;IACD,IAAI,IAAI,CAAC,KAAK,QAAA,EAGb;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIpC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE;IAIxC,eAAe;IAWf,WAAW,CAAC,KAAK,EAAE,YAAY;IA6B/B,SAAS,CAAC,KAAK,KAAA;IAYf,cAAc,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQ1D,aAAa,CAAC,KAAK,KAAA;IAQnB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB;IAK7D,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAcxE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAQtC"}