@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
package/src/Dialog.ts CHANGED
@@ -1,253 +1,256 @@
1
- import {DockManager} from './DockManager.js';
2
- import {Point} from './Point.js';
3
- import {PanelContainer} from './PanelContainer.js';
4
- import {DraggableContainer} from './DraggableContainer.js';
5
- import {ResizableContainer} from './ResizableContainer.js';
6
- import {EventHandler} from './EventHandler.js';
7
- import {Utils} from './Utils.js';
8
- import {Localizer} from './i18n/Localizer.js';
9
- import {DockNode} from './DockNode.js';
1
+ import { DockManager } from "./DockManager";
2
+ import { Point } from "./Point";
3
+ import { PanelContainer } from "./PanelContainer";
4
+ import { DraggableContainer } from "./DraggableContainer";
5
+ import { ResizableContainer } from "./ResizableContainer";
6
+ import { EventHandler } from "./EventHandler";
7
+ import { Utils } from "./Utils";
8
+ import { Localizer } from "./i18n/Localizer";
9
+ import { DockNode } from "./DockNode";
10
10
 
11
11
  export class Dialog {
12
- elementDialog: HTMLDivElement & { floatingDialog: Dialog };
13
- draggable: DraggableContainer;
14
- panel: PanelContainer;
15
- dockManager: DockManager;
16
- eventListener: DockManager;
17
- position: Point;
18
- resizable: ResizableContainer;
19
- disableResize: boolean;
20
- mouseDownHandler: any;
21
- onKeyPressBound: any;
22
- noDocking: boolean;
23
- isHidden: boolean;
24
- keyPressHandler: EventHandler;
25
- focusHandler: EventHandler;
26
- grayoutParent: PanelContainer;
27
- contextmenuHandler: EventHandler;
28
- _ctxMenu: HTMLDivElement;
29
- _windowsContextMenuCloseBound: any;
30
-
31
- constructor(panel: PanelContainer, dockManager: DockManager, grayoutParent?: PanelContainer, disableResize?: boolean) {
32
- this.panel = panel;
33
- this.dockManager = dockManager;
34
- this.eventListener = dockManager;
35
- this.grayoutParent = grayoutParent;
36
- this.disableResize = disableResize;
37
- this._initialize();
38
- this.dockManager.context.model.dialogs.push(this);
39
- this.position = dockManager.defaultDialogPosition;
40
- this.dockManager.notifyOnCreateDialog(this);
41
- panel.isDialog = true;
42
- }
43
-
44
- saveState(x: number, y: number) {
45
- this.position = new Point(x, y);
46
- this.dockManager.notifyOnChangeDialogPosition(this, x, y);
47
- }
48
-
49
- static fromElement(id: string, dockManager: DockManager) {
50
- return new Dialog(new PanelContainer(<HTMLElement>document.getElementById(id), dockManager), dockManager, null);
51
- }
52
-
53
- _initialize() {
54
- this.panel.floatingDialog = this;
55
- this.elementDialog = Object.assign(document.createElement('div'), {floatingDialog: this});
56
- this.elementDialog.tabIndex = 0;
57
- this.elementDialog.appendChild(this.panel.elementPanel);
58
- this.draggable = new DraggableContainer(this, this.panel, this.elementDialog, this.panel.elementTitle);
59
- this.resizable = new ResizableContainer(this, this.draggable, this.draggable.topLevelElement, this.disableResize);
60
-
61
- this.dockManager.config.dialogRootElement.appendChild(this.elementDialog);
62
- this.elementDialog.classList.add('dialog-floating');
63
-
64
- this.focusHandler = new EventHandler(this.elementDialog, 'focus', this.onFocus.bind(this), true);
65
- this.mouseDownHandler = new EventHandler(this.elementDialog, 'pointerdown', this.onMouseDown.bind(this), true);
66
- this.keyPressHandler = new EventHandler(this.elementDialog, 'keypress', this.dockManager.onKeyPressBound, true);
67
- this.contextmenuHandler = new EventHandler(this.panel.elementTitle, 'contextmenu', this.oncontextMenuClicked.bind(this));
68
-
69
- this.resize(this.panel.elementPanel.clientWidth, this.panel.elementPanel.clientHeight);
70
- this.isHidden = false;
71
-
72
- if (this.grayoutParent != null)
73
- this.grayoutParent.grayOut(true);
74
-
75
- this.bringToFront();
76
- }
77
-
78
- setPosition(x: number, y: number) {
79
- const rect = this.dockManager.config.dialogRootElement.getBoundingClientRect();
80
- this.position = new Point(x - rect.left, y - rect.top);
81
- this.elementDialog.style.left = (x - rect.left) + 'px';
82
- this.elementDialog.style.top = (y - rect.top) + 'px';
83
- this.panel.setDialogPosition(x, y);
84
- this.dockManager.notifyOnChangeDialogPosition(this, x, y);
85
- }
86
-
87
- getPosition(): Point {
88
- return new Point(this.position ? this.position.x : 0, this.position ? this.position.y : 0);
89
- }
90
-
91
- onFocus() {
92
- if (this.dockManager.activePanel != this.panel)
93
- this.dockManager.activePanel = this.panel;
94
- }
95
-
96
- onMouseDown(e: PointerEvent) {
97
- if (e.button != 2)
98
- this.bringToFront();
99
- }
100
-
101
- destroy() {
102
- this.panel.lastDialogSize = {width: this.resizable.width, height: this.resizable.height};
103
-
104
- if (this.focusHandler) {
105
- this.focusHandler.cancel();
106
- delete this.focusHandler;
107
- }
108
- if (this.mouseDownHandler) {
109
- this.mouseDownHandler.cancel();
110
- delete this.mouseDownHandler;
111
- }
112
- if (this.keyPressHandler) {
113
- this.keyPressHandler.cancel();
114
- delete this.keyPressHandler;
115
- }
116
- if (this.contextmenuHandler) {
117
- this.contextmenuHandler.cancel();
118
- delete this.contextmenuHandler;
119
- }
120
- Utils.removeNode(this.elementDialog);
121
- this.draggable.removeDecorator();
122
- Utils.removeNode(this.panel.elementPanel);
123
- Utils.arrayRemove(this.dockManager.context.model.dialogs, this);
124
- delete this.panel.floatingDialog;
125
-
126
- if (this.grayoutParent)
127
- this.grayoutParent.grayOut(false);
128
- }
129
-
130
- resize(width: number, height: number) {
131
- this.resizable.resize(width, height);
132
- }
133
-
134
- setTitle(title: string) {
135
- this.panel.setTitle(title);
136
- }
137
-
138
- setTitleIcon(iconName: string) {
139
- this.panel.setTitleIcon(iconName);
140
- }
141
-
142
- bringToFront() {
143
- this.panel.elementContentContainer.style.zIndex = <any> this.dockManager.zIndexDialogCounter++;
144
- this.elementDialog.style.zIndex = <any> this.dockManager.zIndexDialogCounter++;
145
- this.dockManager.activePanel = this.panel;
146
- }
147
-
148
- hide() {
149
- this.elementDialog.style.zIndex = '0';
150
- this.panel.elementContentContainer.style.zIndex = '';
151
- this.elementDialog.style.display = 'none';
152
- if (!this.isHidden) {
153
- this.isHidden = true;
154
- this.dockManager.notifyOnHideDialog(this);
155
- }
156
- if (this.grayoutParent)
157
- this.grayoutParent.grayOut(false);
158
- }
159
-
160
- close() {
161
- this.hide();
162
- this.remove();
163
- this.dockManager.notifyOnClosePanel(this.panel);
164
- this.destroy();
165
- }
166
-
167
- remove() {
168
- this.elementDialog.parentNode.removeChild(this.elementDialog);
169
- }
170
-
171
- show() {
172
- this.panel.elementContentContainer.style.zIndex = <any> this.dockManager.zIndexDialogCounter++;
173
- this.elementDialog.style.zIndex = <any> this.dockManager.zIndexDialogCounter++;
174
- this.elementDialog.style.display = 'block';
175
- if (this.isHidden) {
176
- this.isHidden = false;
177
- this.dockManager.notifyOnShowDialog(this);
178
- }
179
- }
180
-
181
- static createContextMenuContentCallback = (dialog: Dialog, documentMangerNodes: DockNode[]): Node[] => {
182
- if (!dialog.panel._hideCloseButton)
183
- return [];
184
-
185
-
186
- const result = [];
187
-
188
- const btnCloseDialog = document.createElement('div');
189
- btnCloseDialog.innerText = Localizer.getString('CloseDialog');
190
- result.push(btnCloseDialog);
191
-
192
- btnCloseDialog.onclick = () => {
193
- dialog.panel.close();
194
- dialog.closeContextMenu();
195
- };
196
-
197
- if (dialog.dockManager.config.enableBrowserWindows) {
198
- const btnNewBrowserWindow = document.createElement('div');
199
- btnNewBrowserWindow.innerText = Localizer.getString('NewBrowserWindow');
200
- result.push(btnNewBrowserWindow);
201
-
202
- btnNewBrowserWindow.onclick = () => {
203
- dialog.panel.undockToBrowserDialog();
204
- dialog.closeContextMenu();
205
- };
206
- }
207
-
208
- return result;
209
- };
210
-
211
- oncontextMenuClicked(e: MouseEvent) {
212
- e.preventDefault();
213
-
214
- if (!this._ctxMenu && Dialog.createContextMenuContentCallback) {
215
- const menuItems = Dialog.createContextMenuContentCallback(
216
- this,
217
- this.dockManager.context.model.documentManagerNode.children,
218
- );
219
-
220
- if (menuItems.length == 0)
221
- return;
222
-
223
-
224
- this._ctxMenu = document.createElement('div');
225
- this._ctxMenu.className = 'dockspab-tab-handle-context-menu';
226
- this._ctxMenu.append(...menuItems);
227
- this._ctxMenu.style.left = e.pageX + 'px';
228
- this._ctxMenu.style.top = e.pageY + 'px';
229
- document.body.appendChild(this._ctxMenu);
230
- this._windowsContextMenuCloseBound = this.windowsContextMenuClose.bind(this);
231
- window.addEventListener('pointerup', this._windowsContextMenuCloseBound);
232
- } else
233
- this.closeContextMenu();
234
- }
235
-
236
- closeContextMenu() {
237
- if (this._ctxMenu) {
238
- document.body.removeChild(this._ctxMenu);
239
- delete this._ctxMenu;
240
- window.removeEventListener('pointerup', this._windowsContextMenuCloseBound);
241
- }
242
- }
243
-
244
- windowsContextMenuClose(e: Event) {
245
- const cp = e.composedPath();
246
- for (const i in cp) {
247
- const el = cp[i];
248
- if (el == this._ctxMenu)
249
- return;
250
- }
251
- this.closeContextMenu();
252
- }
12
+ elementDialog: HTMLDivElement & { floatingDialog: Dialog };
13
+ draggable: DraggableContainer;
14
+ panel: PanelContainer;
15
+ dockManager: DockManager;
16
+ eventListener: DockManager;
17
+ position: Point;
18
+ resizable: ResizableContainer;
19
+ disableResize: boolean;
20
+ mouseDownHandler: any;
21
+ onKeyPressBound: any;
22
+ noDocking: boolean;
23
+ isHidden: boolean;
24
+ keyPressHandler: EventHandler;
25
+ focusHandler: EventHandler;
26
+ grayoutParent: PanelContainer;
27
+ contextmenuHandler: EventHandler;
28
+ _ctxMenu: HTMLDivElement;
29
+ _windowsContextMenuCloseBound: any;
30
+
31
+ constructor(panel: PanelContainer, dockManager: DockManager, grayoutParent?: PanelContainer, disableResize?: boolean) {
32
+ this.panel = panel;
33
+ this.dockManager = dockManager;
34
+ this.eventListener = dockManager;
35
+ this.grayoutParent = grayoutParent;
36
+ this.disableResize = disableResize;
37
+ this._initialize();
38
+ this.dockManager.context.model.dialogs.push(this);
39
+ this.position = dockManager.defaultDialogPosition;
40
+ this.dockManager.notifyOnCreateDialog(this);
41
+ panel.isDialog = true;
42
+ }
43
+
44
+ saveState(x: number, y: number) {
45
+ this.position = new Point(x, y);
46
+ this.dockManager.notifyOnChangeDialogPosition(this, x, y);
47
+ }
48
+
49
+ static fromElement(id: string, dockManager: DockManager) {
50
+ return new Dialog(new PanelContainer(<HTMLElement>document.getElementById(id), dockManager), dockManager, null);
51
+ }
52
+
53
+ _initialize() {
54
+ this.panel.floatingDialog = this;
55
+ this.elementDialog = Object.assign(document.createElement('div'), { floatingDialog: this });
56
+ this.elementDialog.tabIndex = 0;
57
+ this.elementDialog.appendChild(this.panel.elementPanel);
58
+ this.draggable = new DraggableContainer(this, this.panel, this.elementDialog, this.panel.elementTitle);
59
+ this.resizable = new ResizableContainer(this, this.draggable, this.draggable.topLevelElement, this.disableResize);
60
+
61
+ this.dockManager.config.dialogRootElement.appendChild(this.elementDialog);
62
+ this.elementDialog.classList.add('dialog-floating');
63
+
64
+ this.focusHandler = new EventHandler(this.elementDialog, 'focus', this.onFocus.bind(this), true);
65
+ this.mouseDownHandler = new EventHandler(this.elementDialog, 'pointerdown', this.onMouseDown.bind(this), true);
66
+ this.keyPressHandler = new EventHandler(this.elementDialog, 'keypress', this.dockManager.onKeyPressBound, true);
67
+ this.contextmenuHandler = new EventHandler(this.panel.elementTitle, 'contextmenu', this.oncontextMenuClicked.bind(this));
68
+
69
+ this.resize(this.panel.elementPanel.clientWidth, this.panel.elementPanel.clientHeight);
70
+ this.isHidden = false;
71
+
72
+ if (this.grayoutParent != null) {
73
+ this.grayoutParent.grayOut(true);
74
+ }
75
+ this.bringToFront();
76
+ }
77
+
78
+ setPosition(x: number, y: number) {
79
+ let rect = this.dockManager.config.dialogRootElement.getBoundingClientRect();
80
+ this.position = new Point(x - rect.left, y - rect.top);
81
+ this.elementDialog.style.left = (x - rect.left) + 'px';
82
+ this.elementDialog.style.top = (y - rect.top) + 'px';
83
+ this.panel.setDialogPosition(x, y);
84
+ this.dockManager.notifyOnChangeDialogPosition(this, x, y);
85
+ }
86
+
87
+ getPosition(): Point {
88
+ return new Point(this.position ? this.position.x : 0, this.position ? this.position.y : 0);
89
+ }
90
+
91
+ onFocus() {
92
+ if (this.dockManager.activePanel != this.panel)
93
+ this.dockManager.activePanel = this.panel;
94
+ }
95
+
96
+ onMouseDown(e: PointerEvent) {
97
+ if (e.button != 2)
98
+ this.bringToFront();
99
+ }
100
+
101
+ destroy() {
102
+ this.panel.lastDialogSize = { width: this.resizable.width, height: this.resizable.height };
103
+
104
+ if (this.focusHandler) {
105
+ this.focusHandler.cancel();
106
+ delete this.focusHandler;
107
+ }
108
+ if (this.mouseDownHandler) {
109
+ this.mouseDownHandler.cancel();
110
+ delete this.mouseDownHandler;
111
+ }
112
+ if (this.keyPressHandler) {
113
+ this.keyPressHandler.cancel();
114
+ delete this.keyPressHandler;
115
+ }
116
+ if (this.contextmenuHandler) {
117
+ this.contextmenuHandler.cancel();
118
+ delete this.contextmenuHandler;
119
+ }
120
+ Utils.removeNode(this.elementDialog);
121
+ this.draggable.removeDecorator();
122
+ Utils.removeNode(this.panel.elementPanel);
123
+ Utils.arrayRemove(this.dockManager.context.model.dialogs, this);
124
+ delete this.panel.floatingDialog;
125
+
126
+ if (this.grayoutParent) {
127
+ this.grayoutParent.grayOut(false);
128
+ }
129
+ }
130
+
131
+ resize(width: number, height: number) {
132
+ this.resizable.resize(width, height);
133
+ }
134
+
135
+ setTitle(title: string) {
136
+ this.panel.setTitle(title);
137
+ }
138
+
139
+ setTitleIcon(iconName: string) {
140
+ this.panel.setTitleIcon(iconName);
141
+ }
142
+
143
+ bringToFront() {
144
+ this.panel.elementContentContainer.style.zIndex = <any>this.dockManager.zIndexDialogCounter++;
145
+ this.elementDialog.style.zIndex = <any>this.dockManager.zIndexDialogCounter++;
146
+ this.dockManager.activePanel = this.panel;
147
+ }
148
+
149
+ hide() {
150
+ this.elementDialog.style.zIndex = '0';
151
+ this.panel.elementContentContainer.style.zIndex = '';
152
+ this.elementDialog.style.display = 'none';
153
+ if (!this.isHidden) {
154
+ this.isHidden = true;
155
+ this.dockManager.notifyOnHideDialog(this);
156
+ }
157
+ if (this.grayoutParent) {
158
+ this.grayoutParent.grayOut(false);
159
+ }
160
+ }
161
+
162
+ close() {
163
+ this.hide();
164
+ this.remove();
165
+ this.dockManager.notifyOnClosePanel(this.panel);
166
+ this.destroy();
167
+ }
168
+
169
+ remove() {
170
+ this.elementDialog.parentNode.removeChild(this.elementDialog);
171
+ }
172
+
173
+ show() {
174
+ this.panel.elementContentContainer.style.zIndex = <any>this.dockManager.zIndexDialogCounter++;
175
+ this.elementDialog.style.zIndex = <any>this.dockManager.zIndexDialogCounter++;
176
+ this.elementDialog.style.display = 'block';
177
+ if (this.isHidden) {
178
+ this.isHidden = false;
179
+ this.dockManager.notifyOnShowDialog(this);
180
+ }
181
+ }
182
+
183
+ static createContextMenuContentCallback = (dialog: Dialog, documentMangerNodes: DockNode[]): Node[] => {
184
+ if (!dialog.panel._hideCloseButton) {
185
+ return [];
186
+ }
187
+
188
+ const result = [];
189
+
190
+ let btnCloseDialog = document.createElement('div');
191
+ btnCloseDialog.innerText = Localizer.getString('CloseDialog');
192
+ result.push(btnCloseDialog);
193
+
194
+ btnCloseDialog.onclick = () => {
195
+ dialog.panel.close();
196
+ dialog.closeContextMenu();
197
+ };
198
+
199
+ if (dialog.dockManager.config.enableBrowserWindows) {
200
+ let btnNewBrowserWindow = document.createElement('div');
201
+ btnNewBrowserWindow.innerText = Localizer.getString('NewBrowserWindow');
202
+ result.push(btnNewBrowserWindow);
203
+
204
+ btnNewBrowserWindow.onclick = () => {
205
+ dialog.panel.undockToBrowserDialog();
206
+ dialog.closeContextMenu();
207
+ };
208
+ }
209
+
210
+ return result;
211
+ }
212
+
213
+ oncontextMenuClicked(e: MouseEvent) {
214
+ e.preventDefault();
215
+
216
+ if (!this._ctxMenu && Dialog.createContextMenuContentCallback) {
217
+ const menuItems = Dialog.createContextMenuContentCallback(
218
+ this,
219
+ this.dockManager.context.model.documentManagerNode.children
220
+ );
221
+
222
+ if (menuItems.length == 0) {
223
+ return;
224
+ }
225
+
226
+ this._ctxMenu = document.createElement('div');
227
+ this._ctxMenu.className = 'dockspab-tab-handle-context-menu';
228
+ this._ctxMenu.append(...menuItems);
229
+ this._ctxMenu.style.left = e.pageX + "px";
230
+ this._ctxMenu.style.top = e.pageY + "px";
231
+ document.body.appendChild(this._ctxMenu);
232
+ this._windowsContextMenuCloseBound = this.windowsContextMenuClose.bind(this)
233
+ window.addEventListener('pointerup', this._windowsContextMenuCloseBound);
234
+ } else {
235
+ this.closeContextMenu();
236
+ }
237
+ }
238
+
239
+ closeContextMenu() {
240
+ if (this._ctxMenu) {
241
+ document.body.removeChild(this._ctxMenu);
242
+ delete this._ctxMenu;
243
+ window.removeEventListener('pointerup', this._windowsContextMenuCloseBound);
244
+ }
245
+ }
246
+
247
+ windowsContextMenuClose(e: Event) {
248
+ let cp = e.composedPath();
249
+ for (let i in cp) {
250
+ let el = cp[i];
251
+ if (el == this._ctxMenu)
252
+ return;
253
+ }
254
+ this.closeContextMenu();
255
+ }
253
256
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockConfig.d.ts","sourceRoot":"","sources":["DockConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;;IASnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC"}
@@ -6,9 +6,4 @@ export class DockConfig {
6
6
  this.moveOnlyWithinDockConatiner = false;
7
7
  this.enableBrowserWindows = true;
8
8
  }
9
- escClosesWindow;
10
- escClosesDialog;
11
- dialogRootElement;
12
- moveOnlyWithinDockConatiner;
13
- enableBrowserWindows;
14
9
  }
package/src/DockConfig.ts CHANGED
@@ -12,4 +12,4 @@ export class DockConfig {
12
12
  dialogRootElement: HTMLElement;
13
13
  moveOnlyWithinDockConatiner?: boolean;
14
14
  enableBrowserWindows?: boolean;
15
- }
15
+ }
@@ -1,9 +1,9 @@
1
- import { DockManager } from './DockManager.js';
2
- import { DockModel } from './DockModel.js';
3
- import { DockNode } from './DockNode.js';
4
- import { Dialog } from './Dialog.js';
5
- import { IPanelInfo } from './interfaces/IPanelInfo.js';
6
- import { INodeInfo } from './interfaces/INodeInfo.js';
1
+ import { DockManager } from "./DockManager";
2
+ import { DockModel } from "./DockModel";
3
+ import { DockNode } from "./DockNode";
4
+ import { Dialog } from "./Dialog";
5
+ import { IPanelInfo } from "./interfaces/IPanelInfo";
6
+ import { INodeInfo } from "./interfaces/INodeInfo";
7
7
  /**
8
8
  * Deserializes the dock layout hierarchy from JSON and creates a dock hierarhcy graph
9
9
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockGraphDeserializer.d.ts","sourceRoot":"","sources":["DockGraphDeserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAMtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD;;GAEG;AACH,qBAAa,qBAAqB;IAE9B,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,QAAQ,CAAC;gBAElB,WAAW,EAAE,WAAW;IAI9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAS9C,WAAW,CAAC,QAAQ,EAAE,SAAS;IA4B/B,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;IA0C1D,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE;CA4BhD"}