@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,254 @@
1
+ import { ResizeHandle } from "./ResizeHandle.js";
2
+ import { EventHandler } from "./EventHandler.js";
3
+ import { Point } from "./Point.js";
4
+ import { Utils } from "./Utils.js";
5
+ /**
6
+ * Decorates a dock container with resizer handles around its base element
7
+ * This enables the container to be resized from all directions
8
+ */
9
+ export class ResizableContainer {
10
+ topLevelElement;
11
+ dialog;
12
+ delegate;
13
+ dockManager;
14
+ containerElement;
15
+ containerType;
16
+ minimumAllowedChildNodes;
17
+ readyToProcessNextResize;
18
+ dockSpawnResizedEvent;
19
+ resizeHandles;
20
+ previousMousePosition;
21
+ iframeEventHandlers;
22
+ disableResize;
23
+ constructor(dialog, delegate, topLevelElement, disableResize = false) {
24
+ this.dialog = dialog;
25
+ this.disableResize = disableResize;
26
+ this.delegate = delegate;
27
+ this.containerElement = delegate.containerElement;
28
+ this.dockManager = delegate.dockManager;
29
+ this.topLevelElement = topLevelElement;
30
+ this.containerType = delegate.containerType;
31
+ this.topLevelElement.style.left = this.topLevelElement.offsetLeft + 'px';
32
+ this.topLevelElement.style.top = this.topLevelElement.offsetTop + 'px';
33
+ this.minimumAllowedChildNodes = delegate.minimumAllowedChildNodes;
34
+ this._buildResizeHandles();
35
+ this.readyToProcessNextResize = true;
36
+ this.dockSpawnResizedEvent = new CustomEvent("DockSpawnResizedEvent", { composed: true, bubbles: true });
37
+ this.iframeEventHandlers = [];
38
+ }
39
+ setActiveChild( /*child*/) {
40
+ }
41
+ _buildResizeHandles() {
42
+ this.resizeHandles = [];
43
+ // this._buildResizeHandle(true, false, true, false); // Dont need the corner resizer near the close button
44
+ if (!this.disableResize) {
45
+ this._buildResizeHandle(false, true, true, false);
46
+ this._buildResizeHandle(true, false, false, true);
47
+ this._buildResizeHandle(false, true, false, true);
48
+ this._buildResizeHandle(true, false, false, false);
49
+ this._buildResizeHandle(false, true, false, false);
50
+ this._buildResizeHandle(false, false, true, false);
51
+ this._buildResizeHandle(false, false, false, true);
52
+ }
53
+ }
54
+ _buildResizeHandle(east, west, north, south) {
55
+ let handle = new ResizeHandle();
56
+ handle.east = east;
57
+ handle.west = west;
58
+ handle.north = north;
59
+ handle.south = south;
60
+ // Create an invisible div for the handle
61
+ handle.element = document.createElement('div');
62
+ this.topLevelElement.appendChild(handle.element);
63
+ // Build the class name for the handle
64
+ let verticalClass = '';
65
+ let horizontalClass = '';
66
+ if (north)
67
+ verticalClass = 'n';
68
+ if (south)
69
+ verticalClass = 's';
70
+ if (east)
71
+ horizontalClass = 'e';
72
+ if (west)
73
+ horizontalClass = 'w';
74
+ let cssClass = 'resize-handle-' + verticalClass + horizontalClass;
75
+ if (verticalClass.length > 0 && horizontalClass.length > 0)
76
+ handle.corner = true;
77
+ handle.element.classList.add(handle.corner ? 'resize-handle-corner' : 'resize-handle');
78
+ handle.element.classList.add(cssClass);
79
+ this.resizeHandles.push(handle);
80
+ handle.mouseDownHandler = new EventHandler(handle.element, 'mousedown', (e) => { this.onMouseDown(handle, e); });
81
+ handle.touchDownHandler = new EventHandler(handle.element, 'touchstart', (e) => { this.onMouseDown(handle, e); });
82
+ }
83
+ saveState(state) {
84
+ this.delegate.saveState(state);
85
+ }
86
+ loadState(state) {
87
+ this.delegate.loadState(state);
88
+ }
89
+ get width() {
90
+ return this.delegate.width;
91
+ }
92
+ get height() {
93
+ return this.delegate.height;
94
+ }
95
+ get name() {
96
+ return this.delegate.name;
97
+ }
98
+ set name(value) {
99
+ if (value)
100
+ this.delegate.name = value;
101
+ }
102
+ resize(width, height) {
103
+ this.delegate.resize(width, height);
104
+ this._adjustResizeHandles(width, height);
105
+ document.dispatchEvent(this.dockSpawnResizedEvent);
106
+ }
107
+ _adjustResizeHandles(width, height) {
108
+ this.resizeHandles.forEach((handle) => {
109
+ handle.adjustSize(width, height);
110
+ });
111
+ }
112
+ performLayout(children) {
113
+ this.delegate.performLayout(children, false);
114
+ }
115
+ destroy() {
116
+ this.removeDecorator();
117
+ this.delegate.destroy();
118
+ }
119
+ removeDecorator() {
120
+ }
121
+ onMouseMovedIframe(handle, e, iframe) {
122
+ let posIf = iframe.getBoundingClientRect();
123
+ this.onMouseMoved(handle, e, { x: posIf.x, y: posIf.y });
124
+ }
125
+ onMouseMoved(handle, event, iframeOffset) {
126
+ let touchOrMouseData = null;
127
+ if (event.changedTouches) {
128
+ if (event.changedTouches.length > 1)
129
+ return;
130
+ touchOrMouseData = event.changedTouches[0];
131
+ }
132
+ else {
133
+ touchOrMouseData = event;
134
+ }
135
+ if (!this.readyToProcessNextResize)
136
+ return;
137
+ this.readyToProcessNextResize = false;
138
+ if (this.dialog.panel)
139
+ this.dockManager.suspendLayout(this.dialog.panel);
140
+ let currentMousePosition = new Point(touchOrMouseData.clientX, touchOrMouseData.clientY);
141
+ if (iframeOffset)
142
+ currentMousePosition = new Point(touchOrMouseData.clientX + iframeOffset.x, touchOrMouseData.clientY + iframeOffset.y);
143
+ let dx = this.dockManager.checkXBounds(this.topLevelElement, currentMousePosition, this.previousMousePosition, handle.west, handle.east);
144
+ let dy = this.dockManager.checkYBounds(this.topLevelElement, currentMousePosition, this.previousMousePosition, handle.north, handle.south);
145
+ this._performDrag(handle, dx, dy);
146
+ this.previousMousePosition = currentMousePosition;
147
+ this.readyToProcessNextResize = true;
148
+ if (this.dialog.panel)
149
+ this.dockManager.resumeLayout(this.dialog.panel);
150
+ this.dockManager.notifyOnContainerResized(this);
151
+ }
152
+ onMouseDown(handle, event) {
153
+ let touchOrMouseData = null;
154
+ if (event.touches) {
155
+ if (event.touches.length > 1)
156
+ return;
157
+ touchOrMouseData = event.touches[0];
158
+ }
159
+ else {
160
+ touchOrMouseData = event;
161
+ }
162
+ this.previousMousePosition = new Point(touchOrMouseData.clientX, touchOrMouseData.clientY);
163
+ if (handle.mouseMoveHandler) {
164
+ handle.mouseMoveHandler.cancel();
165
+ delete handle.mouseMoveHandler;
166
+ }
167
+ if (handle.touchMoveHandler) {
168
+ handle.touchMoveHandler.cancel();
169
+ delete handle.touchMoveHandler;
170
+ }
171
+ if (handle.mouseUpHandler) {
172
+ handle.mouseUpHandler.cancel();
173
+ delete handle.mouseUpHandler;
174
+ }
175
+ if (handle.touchUpHandler) {
176
+ handle.touchUpHandler.cancel();
177
+ delete handle.touchUpHandler;
178
+ }
179
+ for (let e of this.iframeEventHandlers) {
180
+ e.cancel();
181
+ }
182
+ this.iframeEventHandlers = [];
183
+ // Create the mouse event handlers
184
+ handle.mouseMoveHandler = new EventHandler(window, 'mousemove', (e) => { this.onMouseMoved(handle, e); });
185
+ handle.touchMoveHandler = new EventHandler(window, 'touchmove', (e) => { this.onMouseMoved(handle, e); });
186
+ handle.mouseUpHandler = new EventHandler(window, 'mouseup', (e) => { this.onMouseUp(handle); });
187
+ handle.touchUpHandler = new EventHandler(window, 'touchend', (e) => { this.onMouseUp(handle); });
188
+ if (this.dockManager.iframes) {
189
+ for (let f of this.dockManager.iframes) {
190
+ let mmi = this.onMouseMovedIframe.bind(this);
191
+ this.iframeEventHandlers.push(new EventHandler(f.contentWindow, 'mousemove', (e) => mmi(handle, e, f)));
192
+ this.iframeEventHandlers.push(new EventHandler(f.contentWindow, 'mouseup', (e) => this.onMouseUp(handle)));
193
+ this.iframeEventHandlers.push(new EventHandler(f.contentWindow, 'touchmove', (e) => mmi(handle, e, f)));
194
+ this.iframeEventHandlers.push(new EventHandler(f.contentWindow, 'touchend', (e) => this.onMouseUp(handle)));
195
+ }
196
+ }
197
+ Utils.disableGlobalTextSelection(this.dockManager.config.dialogRootElement);
198
+ }
199
+ onMouseUp(handle) {
200
+ handle.mouseMoveHandler.cancel();
201
+ handle.touchMoveHandler.cancel();
202
+ handle.mouseUpHandler.cancel();
203
+ handle.touchUpHandler.cancel();
204
+ delete handle.mouseMoveHandler;
205
+ delete handle.touchMoveHandler;
206
+ delete handle.mouseUpHandler;
207
+ delete handle.touchUpHandler;
208
+ for (let e of this.iframeEventHandlers) {
209
+ e.cancel();
210
+ }
211
+ this.iframeEventHandlers = [];
212
+ Utils.enableGlobalTextSelection(this.dockManager.config.dialogRootElement);
213
+ }
214
+ _performDrag(handle, dx, dy) {
215
+ let bounds = {};
216
+ bounds.left = Utils.getPixels(this.topLevelElement.style.left);
217
+ bounds.top = Utils.getPixels(this.topLevelElement.style.top);
218
+ bounds.width = this.topLevelElement.clientWidth;
219
+ bounds.height = this.topLevelElement.clientHeight;
220
+ if (handle.east)
221
+ this._resizeEast(dx, bounds);
222
+ if (handle.west)
223
+ this._resizeWest(dx, bounds);
224
+ if (handle.north)
225
+ this._resizeNorth(dy, bounds);
226
+ if (handle.south)
227
+ this._resizeSouth(dy, bounds);
228
+ }
229
+ _resizeWest(dx, bounds) {
230
+ this._resizeContainer(dx, 0, -dx, 0, bounds);
231
+ }
232
+ _resizeEast(dx, bounds) {
233
+ this._resizeContainer(0, 0, dx, 0, bounds);
234
+ }
235
+ _resizeNorth(dy, bounds) {
236
+ this._resizeContainer(0, dy, 0, -dy, bounds);
237
+ }
238
+ _resizeSouth(dy, bounds) {
239
+ this._resizeContainer(0, 0, 0, dy, bounds);
240
+ }
241
+ _resizeContainer(leftDelta, topDelta, widthDelta, heightDelta, bounds) {
242
+ bounds.left += leftDelta;
243
+ bounds.top += topDelta;
244
+ bounds.width += widthDelta;
245
+ bounds.height += heightDelta;
246
+ let minWidth = 50; // TODO: Move to external configuration
247
+ let minHeight = 50; // TODO: Move to external configuration
248
+ bounds.width = Math.max(bounds.width, minWidth);
249
+ bounds.height = Math.max(bounds.height, minHeight);
250
+ this.topLevelElement.style.left = bounds.left + 'px';
251
+ this.topLevelElement.style.top = bounds.top + 'px';
252
+ this.resize(bounds.width, bounds.height);
253
+ }
254
+ }
@@ -0,0 +1,16 @@
1
+ import { EventHandler } from "./EventHandler.js";
2
+ export declare class ResizeHandle {
3
+ element: HTMLElement;
4
+ handleSize: number;
5
+ cornerSize: number;
6
+ east: boolean;
7
+ west: boolean;
8
+ north: boolean;
9
+ south: boolean;
10
+ corner: boolean;
11
+ mouseDownHandler: EventHandler;
12
+ touchDownHandler: EventHandler;
13
+ constructor();
14
+ adjustSize(clientWidth: number, clientHeight: number): void;
15
+ }
16
+ //# sourceMappingURL=ResizeHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResizeHandle.d.ts","sourceRoot":"","sources":["../src/ResizeHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,qBAAa,YAAY;IAErB,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,gBAAgB,EAAE,YAAY,CAAC;;IAa/B,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAgCvD"}
@@ -0,0 +1,58 @@
1
+ export class ResizeHandle {
2
+ element;
3
+ handleSize;
4
+ cornerSize;
5
+ east;
6
+ west;
7
+ north;
8
+ south;
9
+ corner;
10
+ mouseDownHandler;
11
+ touchDownHandler;
12
+ constructor() {
13
+ this.element = undefined;
14
+ this.handleSize = 6; // TODO: Get this from DOM
15
+ this.cornerSize = 12; // TODO: Get this from DOM
16
+ this.east = false;
17
+ this.west = false;
18
+ this.north = false;
19
+ this.south = false;
20
+ this.corner = false;
21
+ }
22
+ adjustSize(clientWidth, clientHeight) {
23
+ if (this.corner) {
24
+ if (this.west)
25
+ this.element.style.left = '0px';
26
+ if (this.east)
27
+ this.element.style.left = (clientWidth - this.cornerSize) + 'px';
28
+ if (this.north)
29
+ this.element.style.top = '0px';
30
+ if (this.south)
31
+ this.element.style.top = (clientHeight - this.cornerSize) + 'px';
32
+ }
33
+ else {
34
+ if (this.west) {
35
+ this.element.style.left = '0px';
36
+ this.element.style.top = this.cornerSize + 'px';
37
+ }
38
+ if (this.east) {
39
+ this.element.style.left = (clientWidth - this.handleSize) + 'px';
40
+ this.element.style.top = this.cornerSize + 'px';
41
+ }
42
+ if (this.north) {
43
+ this.element.style.left = this.cornerSize + 'px';
44
+ this.element.style.top = '0px';
45
+ }
46
+ if (this.south) {
47
+ this.element.style.left = this.cornerSize + 'px';
48
+ this.element.style.top = (clientHeight - this.handleSize) + 'px';
49
+ }
50
+ if (this.west || this.east) {
51
+ this.element.style.height = (clientHeight - this.cornerSize * 2) + 'px';
52
+ }
53
+ else {
54
+ this.element.style.width = (clientWidth - this.cornerSize * 2) + 'px';
55
+ }
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,33 @@
1
+ import { IDockContainer } from "./interfaces/IDockContainer.js";
2
+ import { EventHandler } from "./EventHandler.js";
3
+ import { IMouseOrTouchEvent } from "./interfaces/IMouseOrTouchEvent.js";
4
+ export declare class SplitterBar {
5
+ previousContainer: IDockContainer;
6
+ nextContainer: IDockContainer;
7
+ stackedVertical: boolean;
8
+ barElement: HTMLDivElement;
9
+ pointerDownHandler: EventHandler;
10
+ minPanelSize: number;
11
+ readyToProcessNextDrag: boolean;
12
+ dockSpawnResizedEvent: CustomEvent<{}>;
13
+ previousMouseEvent: {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ pointerMovedHandler: EventHandler;
18
+ pointerUpHandler: EventHandler;
19
+ private iframeEventHandlers;
20
+ constructor(previousContainer: IDockContainer, nextContainer: IDockContainer, stackedVertical: boolean);
21
+ onPointerDown(e: PointerEvent): void;
22
+ onPointerUp(e: PointerEvent): void;
23
+ onPointerMovedIframe(e: IMouseOrTouchEvent, iframe: HTMLIFrameElement): void;
24
+ onPointerMoved(e: IMouseOrTouchEvent): void;
25
+ handleMoveEvent(pos: {
26
+ x: number;
27
+ y: number;
28
+ }): void;
29
+ _performDrag(dx: number, dy: number): void;
30
+ _startDragging(e: IMouseOrTouchEvent): void;
31
+ _stopDragging(): void;
32
+ }
33
+ //# sourceMappingURL=SplitterBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitterBar.d.ts","sourceRoot":"","sources":["../src/SplitterBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,qBAAa,WAAW;IACpB,iBAAiB,EAAE,cAAc,CAAC;IAClC,aAAa,EAAE,cAAc,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC;IAC3B,kBAAkB,EAAE,YAAY,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,qBAAqB,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACvC,kBAAkB,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,mBAAmB,EAAE,YAAY,CAAC;IAClC,gBAAgB,EAAE,YAAY,CAAC;IAE/B,OAAO,CAAC,mBAAmB,CAAiB;gBAEhC,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO;IAetG,aAAa,CAAC,CAAC,EAAE,YAAY;IAK7B,WAAW,CAAC,CAAC,EAAE,YAAY;IAK3B,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB;IAQrE,cAAc,CAAC,CAAC,EAAE,kBAAkB;IAOpC,eAAe,CAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAiB7C,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAwCnC,cAAc,CAAC,CAAC,EAAE,kBAAkB;IAwBpC,aAAa;CAehB"}
@@ -0,0 +1,137 @@
1
+ import { EventHandler } from "./EventHandler.js";
2
+ import { Utils } from "./Utils.js";
3
+ export class SplitterBar {
4
+ previousContainer;
5
+ nextContainer;
6
+ stackedVertical;
7
+ barElement;
8
+ pointerDownHandler;
9
+ minPanelSize;
10
+ readyToProcessNextDrag;
11
+ dockSpawnResizedEvent;
12
+ previousMouseEvent;
13
+ pointerMovedHandler;
14
+ pointerUpHandler;
15
+ iframeEventHandlers;
16
+ constructor(previousContainer, nextContainer, stackedVertical) {
17
+ // The panel to the left/top side of the bar, depending on the bar orientation
18
+ this.previousContainer = previousContainer;
19
+ // The panel to the right/bottom side of the bar, depending on the bar orientation
20
+ this.nextContainer = nextContainer;
21
+ this.stackedVertical = stackedVertical;
22
+ this.barElement = document.createElement('div');
23
+ this.barElement.classList.add(stackedVertical ? 'splitbar-horizontal' : 'splitbar-vertical');
24
+ this.pointerDownHandler = new EventHandler(this.barElement, 'pointerdown', this.onPointerDown.bind(this));
25
+ this.minPanelSize = 50; // TODO: Get from container configuration
26
+ this.readyToProcessNextDrag = true;
27
+ this.dockSpawnResizedEvent = new CustomEvent("DockSpawnResizedEvent", { composed: true, bubbles: true });
28
+ this.iframeEventHandlers = [];
29
+ }
30
+ onPointerDown(e) {
31
+ this.barElement.setPointerCapture(e.pointerId);
32
+ this._startDragging(e);
33
+ }
34
+ onPointerUp(e) {
35
+ this.barElement.releasePointerCapture(e.pointerId);
36
+ this._stopDragging();
37
+ }
38
+ onPointerMovedIframe(e, iframe) {
39
+ if (e.changedTouches != null) {
40
+ e = e.changedTouches[0];
41
+ }
42
+ let posIf = iframe.getBoundingClientRect();
43
+ this.handleMoveEvent({ x: parseInt("" + e.clientX + posIf.x), y: parseInt("" + e.clientY + posIf.y) });
44
+ }
45
+ onPointerMoved(e) {
46
+ if (e.changedTouches != null) {
47
+ e = e.changedTouches[0];
48
+ }
49
+ this.handleMoveEvent({ x: parseInt("" + e.clientX), y: parseInt("" + e.clientY) });
50
+ }
51
+ handleMoveEvent(pos) {
52
+ if (!this.readyToProcessNextDrag)
53
+ return;
54
+ this.readyToProcessNextDrag = false;
55
+ let dockManager = this.previousContainer.dockManager;
56
+ dockManager.suspendLayout(this.previousContainer);
57
+ dockManager.suspendLayout(this.nextContainer);
58
+ let dx = pos.x - this.previousMouseEvent.x;
59
+ let dy = pos.y - this.previousMouseEvent.y;
60
+ this._performDrag(dx, dy);
61
+ this.previousMouseEvent = pos;
62
+ this.readyToProcessNextDrag = true;
63
+ dockManager.resumeLayout(this.previousContainer);
64
+ dockManager.resumeLayout(this.nextContainer);
65
+ }
66
+ _performDrag(dx, dy) {
67
+ let previousWidth = this.previousContainer.containerElement.clientWidth;
68
+ let previousHeight = this.previousContainer.containerElement.clientHeight;
69
+ let nextWidth = this.nextContainer.containerElement.clientWidth;
70
+ let nextHeight = this.nextContainer.containerElement.clientHeight;
71
+ let previousPanelSize = this.stackedVertical ? previousHeight : previousWidth;
72
+ let nextPanelSize = this.stackedVertical ? nextHeight : nextWidth;
73
+ let deltaMovement = this.stackedVertical ? dy : dx;
74
+ let newPreviousPanelSize = previousPanelSize + deltaMovement;
75
+ let newNextPanelSize = nextPanelSize - deltaMovement;
76
+ if (newPreviousPanelSize < this.minPanelSize || newNextPanelSize < this.minPanelSize) {
77
+ // One of the panels is smaller than it should be.
78
+ // In that case, check if the small panel's size is being increased
79
+ let continueProcessing = (newPreviousPanelSize < this.minPanelSize && newPreviousPanelSize > previousPanelSize) ||
80
+ (newNextPanelSize < this.minPanelSize && newNextPanelSize > nextPanelSize);
81
+ if (!continueProcessing)
82
+ return;
83
+ }
84
+ if (this.stackedVertical) {
85
+ this.previousContainer.resize(previousWidth, newPreviousPanelSize);
86
+ this.nextContainer.resize(nextWidth, newNextPanelSize);
87
+ }
88
+ else {
89
+ if (deltaMovement < 0) {
90
+ this.previousContainer.resize(newPreviousPanelSize, previousHeight);
91
+ this.nextContainer.resize(newNextPanelSize, nextHeight);
92
+ }
93
+ else {
94
+ this.nextContainer.resize(newNextPanelSize, nextHeight);
95
+ this.previousContainer.resize(newPreviousPanelSize, previousHeight);
96
+ this.nextContainer.resize(newNextPanelSize, nextHeight);
97
+ }
98
+ }
99
+ document.dispatchEvent(this.dockSpawnResizedEvent);
100
+ }
101
+ _startDragging(e) {
102
+ Utils.disableGlobalTextSelection(this.previousContainer.dockManager.config.dialogRootElement);
103
+ if (this.pointerMovedHandler) {
104
+ this.pointerMovedHandler.cancel();
105
+ delete this.pointerMovedHandler;
106
+ }
107
+ if (this.pointerUpHandler) {
108
+ this.pointerUpHandler.cancel();
109
+ delete this.pointerUpHandler;
110
+ }
111
+ this.pointerMovedHandler = new EventHandler(window, 'pointermove', this.onPointerMoved.bind(this));
112
+ this.pointerUpHandler = new EventHandler(window, 'pointerup', this.onPointerUp.bind(this));
113
+ if (this.previousContainer.dockManager.iframes) {
114
+ for (let f of this.previousContainer.dockManager.iframes) {
115
+ let mmi = this.onPointerMovedIframe.bind(this);
116
+ this.iframeEventHandlers.push(new EventHandler(f.contentWindow, 'pointermove', (e) => mmi(e, f)));
117
+ this.iframeEventHandlers.push(new EventHandler(f.contentWindow, 'pointerup', this.onPointerUp.bind(this)));
118
+ }
119
+ }
120
+ this.previousMouseEvent = { x: e.clientX, y: e.clientY };
121
+ }
122
+ _stopDragging() {
123
+ Utils.enableGlobalTextSelection(this.previousContainer.dockManager.config.dialogRootElement);
124
+ if (this.pointerMovedHandler) {
125
+ this.pointerMovedHandler.cancel();
126
+ delete this.pointerMovedHandler;
127
+ }
128
+ if (this.pointerUpHandler) {
129
+ this.pointerUpHandler.cancel();
130
+ delete this.pointerUpHandler;
131
+ }
132
+ for (let e of this.iframeEventHandlers) {
133
+ e.cancel();
134
+ }
135
+ this.iframeEventHandlers = [];
136
+ }
137
+ }
@@ -0,0 +1,36 @@
1
+ import { DockManager } from "./DockManager.js";
2
+ import { SplitterPanel } from "./SplitterPanel.js";
3
+ import { IDockContainer } from "./interfaces/IDockContainer.js";
4
+ import { ContainerType } from "./ContainerType.js";
5
+ import { ISize } from "./interfaces/ISize.js";
6
+ import { IDockContainerWithSize } from "./interfaces/IDockContainerWithSize.js";
7
+ import { IState } from "./interfaces/IState.js";
8
+ export declare abstract class SplitterDockContainer implements IDockContainerWithSize {
9
+ name: string;
10
+ dockManager: DockManager;
11
+ minimumAllowedChildNodes: number;
12
+ splitterPanel: SplitterPanel;
13
+ stackedVertical: boolean;
14
+ containerElement: HTMLDivElement;
15
+ _cachedWidth: number;
16
+ _cachedHeight: number;
17
+ state: ISize;
18
+ containerType: ContainerType;
19
+ constructor(name: string, dockManager: DockManager, childContainers: IDockContainer[], stackedVertical: boolean);
20
+ resize(width: number, height: number): void;
21
+ performLayout(childContainers: IDockContainer[], relayoutEvenIfEqual?: boolean): void;
22
+ setActiveChild(): void;
23
+ destroy(): void;
24
+ /**
25
+ * Sets the percentage of space the specified [container] takes in the split panel
26
+ * The percentage is specified in [ratio] and is between 0..1
27
+ */
28
+ setContainerRatio(container: IDockContainer, ratio: number): void;
29
+ getRatios(): number[];
30
+ setRatios(ratios: number[]): void;
31
+ saveState(state: IState): void;
32
+ loadState(state: IState): void;
33
+ get width(): number;
34
+ get height(): number;
35
+ }
36
+ //# sourceMappingURL=SplitterDockContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitterDockContainer.d.ts","sourceRoot":"","sources":["../src/SplitterDockContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,8BAAsB,qBAAsB,YAAW,sBAAsB;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,cAAc,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,aAAa,CAAC;gBAEjB,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,OAAO;IAc/G,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAUpC,aAAa,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,mBAAmB,GAAE,OAAe;IAIrF,cAAc;IAGd,OAAO;IAIP;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAK1D,SAAS,IAAI,MAAM,EAAE;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;IAK1B,SAAS,CAAC,KAAK,EAAE,MAAM;IAKvB,SAAS,CAAC,KAAK,EAAE,MAAM;IAKvB,IAAI,KAAK,IAAI,MAAM,CAIlB;IAED,IAAI,MAAM,IAAI,MAAM,CAInB;CACJ"}
@@ -0,0 +1,75 @@
1
+ import { SplitterPanel } from "./SplitterPanel.js";
2
+ export class SplitterDockContainer {
3
+ name;
4
+ dockManager;
5
+ minimumAllowedChildNodes;
6
+ splitterPanel;
7
+ stackedVertical;
8
+ containerElement;
9
+ _cachedWidth;
10
+ _cachedHeight;
11
+ state;
12
+ containerType;
13
+ constructor(name, dockManager, childContainers, stackedVertical) {
14
+ // for prototype inheritance purposes only
15
+ if (arguments.length === 0) {
16
+ return;
17
+ }
18
+ this.name = name;
19
+ this.dockManager = dockManager;
20
+ this.stackedVertical = stackedVertical;
21
+ this.splitterPanel = new SplitterPanel(childContainers, this.stackedVertical);
22
+ this.containerElement = this.splitterPanel.panelElement;
23
+ this.minimumAllowedChildNodes = 2;
24
+ }
25
+ resize(width, height) {
26
+ // if (_cachedWidth === _cachedWidth && _cachedHeight === _height) {
27
+ // // No need to resize
28
+ // return;
29
+ // }
30
+ this.splitterPanel.resize(width, height);
31
+ this._cachedWidth = width;
32
+ this._cachedHeight = height;
33
+ }
34
+ performLayout(childContainers, relayoutEvenIfEqual = false) {
35
+ this.splitterPanel.performLayout(childContainers, relayoutEvenIfEqual);
36
+ }
37
+ setActiveChild( /*child*/) {
38
+ }
39
+ destroy() {
40
+ this.splitterPanel.destroy();
41
+ }
42
+ /**
43
+ * Sets the percentage of space the specified [container] takes in the split panel
44
+ * The percentage is specified in [ratio] and is between 0..1
45
+ */
46
+ setContainerRatio(container, ratio) {
47
+ this.splitterPanel.setContainerRatio(container, ratio);
48
+ this.resize(this.width, this.height);
49
+ }
50
+ getRatios() {
51
+ return this.splitterPanel.getRatios();
52
+ }
53
+ setRatios(ratios) {
54
+ this.splitterPanel.setRatios(ratios);
55
+ this.resize(this.width, this.height);
56
+ }
57
+ saveState(state) {
58
+ state.width = this.width;
59
+ state.height = this.height;
60
+ }
61
+ loadState(state) {
62
+ this.state = { width: state.width, height: state.height };
63
+ // this.resize(state.width, state.height);
64
+ }
65
+ get width() {
66
+ if (this._cachedWidth === undefined)
67
+ this._cachedWidth = this.splitterPanel.panelElement.clientWidth;
68
+ return this._cachedWidth;
69
+ }
70
+ get height() {
71
+ if (this._cachedHeight === undefined)
72
+ this._cachedHeight = this.splitterPanel.panelElement.clientHeight;
73
+ return this._cachedHeight;
74
+ }
75
+ }
@@ -0,0 +1,27 @@
1
+ import { SplitterBar } from "./SplitterBar.js";
2
+ import { IDockContainer } from "./interfaces/IDockContainer.js";
3
+ /**
4
+ * A splitter panel manages the child containers inside it with splitter bars.
5
+ * It can be stacked horizontally or vertically
6
+ */
7
+ export declare class SplitterPanel {
8
+ panelElement: HTMLDivElement;
9
+ spiltterBars: SplitterBar[];
10
+ stackedVertical: boolean;
11
+ childContainers: IDockContainer[];
12
+ constructor(childContainers: IDockContainer[], stackedVertical: boolean);
13
+ _buildSplitterDOMAndAddElements(): void;
14
+ performLayout(children: IDockContainer[], relayoutEvenIfEqual: boolean): void;
15
+ removeFromDOM(): void;
16
+ destroy(): void;
17
+ _insertContainerIntoPanel(container: IDockContainer, afterElement: HTMLElement): void;
18
+ /**
19
+ * Sets the percentage of space the specified [container] takes in the split panel
20
+ * The percentage is specified in [ratio] and is between 0..1
21
+ */
22
+ setContainerRatio(container: IDockContainer, ratio: number): void;
23
+ getRatios(): number[];
24
+ setRatios(ratios: number[]): void;
25
+ resize(width: number, height: number): void;
26
+ }
27
+ //# sourceMappingURL=SplitterPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitterPanel.d.ts","sourceRoot":"","sources":["../src/SplitterPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;;GAGG;AACH,qBAAa,aAAa;IACtB,YAAY,EAAE,cAAc,CAAC;IAC7B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,cAAc,EAAE,CAAC;gBAEtB,eAAe,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,OAAO;IAQvE,+BAA+B;IAuB/B,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,mBAAmB,EAAE,OAAO;IAqBtE,aAAa;IAWb,OAAO;IAKP,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW;IAsB9E;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM;IAwB1D,SAAS,IAAI,MAAM,EAAE;IAYrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;IAa1B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAsEvC"}