@finsemble/finsemble-ui 8.0.2 → 8.1.0-beta.2

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 (254) hide show
  1. package/FEA.d.ts +48 -3
  2. package/FEA.d.ts.map +1 -1
  3. package/FEA.js.map +1 -1
  4. package/clients/Interop/FinsembleDesktopAgent.js +1 -1
  5. package/clients/Startup/FSBLDesktop.d.ts +2 -14
  6. package/clients/Startup/FSBLDesktop.d.ts.map +1 -1
  7. package/clients/Startup/FSBLDesktop.js +4 -21
  8. package/clients/Startup/FSBLDesktop.js.map +1 -1
  9. package/clients/Startup/types.d.ts +17 -0
  10. package/clients/Startup/types.d.ts.map +1 -1
  11. package/clients/Startup/windowStartup.d.ts.map +1 -1
  12. package/clients/Startup/windowStartup.js +16 -14
  13. package/clients/Startup/windowStartup.js.map +1 -1
  14. package/clients/routerClient.d.ts +2 -169
  15. package/clients/routerClient.d.ts.map +1 -1
  16. package/clients/routerClient.js +4 -7
  17. package/clients/routerClient.js.map +1 -1
  18. package/common/Desktop.d.ts +8 -0
  19. package/common/Desktop.d.ts.map +1 -1
  20. package/common/Desktop.js +23 -0
  21. package/common/Desktop.js.map +1 -1
  22. package/common/FinsembleWindow.d.ts +1 -2
  23. package/common/FinsembleWindow.d.ts.map +1 -1
  24. package/common/FinsembleWindow.js +1 -1
  25. package/common/FinsembleWindow.js.map +1 -1
  26. package/common/Monitors.d.ts +6 -0
  27. package/common/Monitors.d.ts.map +1 -1
  28. package/common/Monitors.js +22 -0
  29. package/common/Monitors.js.map +1 -1
  30. package/common/system.d.ts +1 -1
  31. package/common/system.d.ts.map +1 -1
  32. package/main.d.ts +29 -29
  33. package/package.json +44 -44
  34. package/platform/services/Interop/types.d.ts +1 -0
  35. package/platform/services/Interop/types.d.ts.map +1 -1
  36. package/platform/services/Interop/types.js.map +1 -1
  37. package/platform/services/router/routerTransport.d.ts.map +1 -1
  38. package/platform/services/router/routerTransport.js +5 -7
  39. package/platform/services/router/routerTransport.js.map +1 -1
  40. package/platform/services/router/types.d.ts +214 -0
  41. package/platform/services/router/types.d.ts.map +1 -0
  42. package/platform/services/router/types.js +2 -0
  43. package/platform/services/router/types.js.map +1 -0
  44. package/platform/services/types.d.ts +1 -0
  45. package/platform/services/types.d.ts.map +1 -1
  46. package/platform/services/types.js +1 -0
  47. package/platform/services/types.js.map +1 -1
  48. package/platform/services/window/Common/Pools/ObjectPool.d.ts +11 -0
  49. package/platform/services/window/Common/Pools/ObjectPool.d.ts.map +1 -0
  50. package/platform/services/window/Common/Pools/ObjectPool.js +43 -0
  51. package/platform/services/window/Common/Pools/ObjectPool.js.map +1 -0
  52. package/platform/services/window/Common/Pools/PoolSingletons.d.ts +10 -0
  53. package/platform/services/window/Common/Pools/PoolSingletons.d.ts.map +1 -0
  54. package/platform/services/window/Common/Pools/PoolSingletons.js +10 -0
  55. package/platform/services/window/Common/Pools/PoolSingletons.js.map +1 -0
  56. package/platform/services/window/Common/Pools/WindowPool.d.ts +7 -0
  57. package/platform/services/window/Common/Pools/WindowPool.d.ts.map +1 -0
  58. package/platform/services/window/Common/Pools/WindowPool.js +16 -0
  59. package/platform/services/window/Common/Pools/WindowPool.js.map +1 -0
  60. package/platform/services/window/Docking/boxMath.d.ts +144 -0
  61. package/platform/services/window/Docking/boxMath.d.ts.map +1 -0
  62. package/platform/services/window/Docking/boxMath.js +511 -0
  63. package/platform/services/window/Docking/boxMath.js.map +1 -0
  64. package/platform/services/window/Docking/constants.d.ts +29 -0
  65. package/platform/services/window/Docking/constants.d.ts.map +1 -0
  66. package/platform/services/window/Docking/constants.js +29 -0
  67. package/platform/services/window/Docking/constants.js.map +1 -0
  68. package/platform/services/window/Docking/dockableBox.d.ts +117 -0
  69. package/platform/services/window/Docking/dockableBox.d.ts.map +1 -0
  70. package/platform/services/window/Docking/dockableBox.js +525 -0
  71. package/platform/services/window/Docking/dockableBox.js.map +1 -0
  72. package/platform/services/window/Docking/dockableGroup.d.ts +252 -0
  73. package/platform/services/window/Docking/dockableGroup.d.ts.map +1 -0
  74. package/platform/services/window/Docking/dockableGroup.js +1054 -0
  75. package/platform/services/window/Docking/dockableGroup.js.map +1 -0
  76. package/platform/services/window/Docking/dockableMonitor.d.ts +99 -0
  77. package/platform/services/window/Docking/dockableMonitor.d.ts.map +1 -0
  78. package/platform/services/window/Docking/dockableMonitor.js +427 -0
  79. package/platform/services/window/Docking/dockableMonitor.js.map +1 -0
  80. package/platform/services/window/Docking/dockableWindow.d.ts +272 -0
  81. package/platform/services/window/Docking/dockableWindow.d.ts.map +1 -0
  82. package/platform/services/window/Docking/dockableWindow.js +1239 -0
  83. package/platform/services/window/Docking/dockableWindow.js.map +1 -0
  84. package/platform/services/window/Docking/dockingCalculator.d.ts +749 -0
  85. package/platform/services/window/Docking/dockingCalculator.d.ts.map +1 -0
  86. package/platform/services/window/Docking/dockingCalculator.js +3473 -0
  87. package/platform/services/window/Docking/dockingCalculator.js.map +1 -0
  88. package/platform/services/window/Docking/dockingMain.d.ts +349 -0
  89. package/platform/services/window/Docking/dockingMain.d.ts.map +1 -0
  90. package/platform/services/window/Docking/dockingMain.js +2584 -0
  91. package/platform/services/window/Docking/dockingMain.js.map +1 -0
  92. package/platform/services/window/Docking/maskBoundsCalculator.d.ts +28 -0
  93. package/platform/services/window/Docking/maskBoundsCalculator.d.ts.map +1 -0
  94. package/platform/services/window/Docking/maskBoundsCalculator.js +67 -0
  95. package/platform/services/window/Docking/maskBoundsCalculator.js.map +1 -0
  96. package/platform/services/window/Docking/monitorUpdateHandler.d.ts +32 -0
  97. package/platform/services/window/Docking/monitorUpdateHandler.d.ts.map +1 -0
  98. package/platform/services/window/Docking/monitorUpdateHandler.js +117 -0
  99. package/platform/services/window/Docking/monitorUpdateHandler.js.map +1 -0
  100. package/platform/services/window/Docking/types.d.ts +334 -0
  101. package/platform/services/window/Docking/types.d.ts.map +1 -0
  102. package/platform/services/window/Docking/types.js +12 -0
  103. package/platform/services/window/Docking/types.js.map +1 -0
  104. package/platform/services/window/MultiWindowFeatures/autoArrange.d.ts +90 -0
  105. package/platform/services/window/MultiWindowFeatures/autoArrange.d.ts.map +1 -0
  106. package/platform/services/window/MultiWindowFeatures/autoArrange.js +510 -0
  107. package/platform/services/window/MultiWindowFeatures/autoArrange.js.map +1 -0
  108. package/platform/services/window/StackedWindowManager/stackedWindowManager.d.ts +411 -0
  109. package/platform/services/window/StackedWindowManager/stackedWindowManager.d.ts.map +1 -0
  110. package/platform/services/window/StackedWindowManager/stackedWindowManager.js +1641 -0
  111. package/platform/services/window/StackedWindowManager/stackedWindowManager.js.map +1 -0
  112. package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.d.ts +9 -0
  113. package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.d.ts.map +1 -0
  114. package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.js +23 -0
  115. package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.js.map +1 -0
  116. package/platform/services/window/WindowAbstractions/WebWindowWrapper.d.ts +227 -0
  117. package/platform/services/window/WindowAbstractions/WebWindowWrapper.d.ts.map +1 -0
  118. package/platform/services/window/WindowAbstractions/WebWindowWrapper.js +1168 -0
  119. package/platform/services/window/WindowAbstractions/WebWindowWrapper.js.map +1 -0
  120. package/platform/services/window/WindowAbstractions/externalWindowWrapper.d.ts +121 -0
  121. package/platform/services/window/WindowAbstractions/externalWindowWrapper.d.ts.map +1 -0
  122. package/platform/services/window/WindowAbstractions/externalWindowWrapper.js +591 -0
  123. package/platform/services/window/WindowAbstractions/externalWindowWrapper.js.map +1 -0
  124. package/platform/services/window/WindowAbstractions/stackedWindowWrapper.d.ts +194 -0
  125. package/platform/services/window/WindowAbstractions/stackedWindowWrapper.d.ts.map +1 -0
  126. package/platform/services/window/WindowAbstractions/stackedWindowWrapper.js +680 -0
  127. package/platform/services/window/WindowAbstractions/stackedWindowWrapper.js.map +1 -0
  128. package/platform/services/window/types.d.ts +13 -13
  129. package/platform/services/window/windowGroup.d.ts +86 -0
  130. package/platform/services/window/windowGroup.d.ts.map +1 -0
  131. package/platform/services/window/windowGroup.js +323 -0
  132. package/platform/services/window/windowGroup.js.map +1 -0
  133. package/platform/services/workspace/windowStorageManager.d.ts +178 -0
  134. package/platform/services/workspace/windowStorageManager.d.ts.map +1 -0
  135. package/platform/services/workspace/windowStorageManager.js +195 -0
  136. package/platform/services/workspace/windowStorageManager.js.map +1 -0
  137. package/platform/services/workspace/workspaceAdminAPI.d.ts +1 -1
  138. package/platform/services/workspace/workspaceAdminAPI.d.ts.map +1 -1
  139. package/react/actions/smartDesktopDesignerActions.d.ts +2 -0
  140. package/react/actions/smartDesktopDesignerActions.d.ts.map +1 -1
  141. package/react/actions/smartDesktopDesignerActions.js +1 -0
  142. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  143. package/react/assets/css/download.css +119 -0
  144. package/react/assets/css/userPreferences.css +50 -0
  145. package/react/assets/css/windowTitleBar.css +2 -1
  146. package/react/assets/icons/cancel.svg +15 -0
  147. package/react/assets/icons/gear.svg +9 -0
  148. package/react/assets/icons/pause.svg +15 -0
  149. package/react/assets/icons/resume.svg +17 -0
  150. package/react/assets/img/Finsemble-installation.gif +0 -0
  151. package/react/components/common/Button.d.ts +1 -0
  152. package/react/components/common/Button.d.ts.map +1 -1
  153. package/react/components/common/Button.js.map +1 -1
  154. package/react/components/common/ButtonIcon.d.ts.map +1 -1
  155. package/react/components/common/ButtonIcon.js +3 -2
  156. package/react/components/common/ButtonIcon.js.map +1 -1
  157. package/react/components/common/FinsembleIcon.d.ts +1 -1
  158. package/react/components/common/FinsembleIcon.d.ts.map +1 -1
  159. package/react/components/common/FinsembleIcon.js +8 -0
  160. package/react/components/common/FinsembleIcon.js.map +1 -1
  161. package/react/components/common/css/button.css +8 -2
  162. package/react/components/downloadManager/DownloadItem.d.ts +16 -0
  163. package/react/components/downloadManager/DownloadItem.d.ts.map +1 -0
  164. package/react/components/downloadManager/DownloadItem.js +74 -0
  165. package/react/components/downloadManager/DownloadItem.js.map +1 -0
  166. package/react/components/downloadManager/DownloadManager.d.ts +10 -0
  167. package/react/components/downloadManager/DownloadManager.d.ts.map +1 -0
  168. package/react/components/downloadManager/DownloadManager.js +42 -0
  169. package/react/components/downloadManager/DownloadManager.js.map +1 -0
  170. package/react/components/downloadManager/index.d.ts +2 -0
  171. package/react/components/downloadManager/index.d.ts.map +1 -0
  172. package/react/components/downloadManager/index.js +2 -0
  173. package/react/components/downloadManager/index.js.map +1 -0
  174. package/react/components/fdc3Resolver/ResolverDialog.css +1 -1
  175. package/react/components/index.d.ts +1 -0
  176. package/react/components/index.d.ts.map +1 -1
  177. package/react/components/index.js +1 -0
  178. package/react/components/index.js.map +1 -1
  179. package/react/components/processMonitor/ProcessMonitor.d.ts.map +1 -1
  180. package/react/components/processMonitor/ProcessMonitor.js +56 -75
  181. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  182. package/react/components/processMonitor/components/ChildWindow.d.ts +5 -7
  183. package/react/components/processMonitor/components/ChildWindow.d.ts.map +1 -1
  184. package/react/components/processMonitor/components/ChildWindow.js +30 -33
  185. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  186. package/react/components/processMonitor/components/ListHeader.d.ts +4 -16
  187. package/react/components/processMonitor/components/ListHeader.d.ts.map +1 -1
  188. package/react/components/processMonitor/components/ListHeader.js +30 -39
  189. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  190. package/react/components/processMonitor/components/ProcessStatistics.d.ts +3 -6
  191. package/react/components/processMonitor/components/ProcessStatistics.d.ts.map +1 -1
  192. package/react/components/processMonitor/components/ProcessStatistics.js +18 -23
  193. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  194. package/react/components/sdd/Dashboard.css +21 -0
  195. package/react/components/sdd/css/export.css +33 -3
  196. package/react/components/sdd/css/nav.css +1 -1
  197. package/react/components/shared/DefaultDropdownButton.js +1 -1
  198. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  199. package/react/components/toolbar/DownloadButton.d.ts +8 -0
  200. package/react/components/toolbar/DownloadButton.d.ts.map +1 -0
  201. package/react/components/toolbar/DownloadButton.js +30 -0
  202. package/react/components/toolbar/DownloadButton.js.map +1 -0
  203. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts.map +1 -1
  204. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +6 -0
  205. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  206. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +1 -1
  207. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  208. package/react/components/toolbar/dashbar/Dashbar.d.ts.map +1 -1
  209. package/react/components/toolbar/dashbar/Dashbar.js +72 -47
  210. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  211. package/react/components/toolbar/dashbar/DashbarItem.d.ts +1 -1
  212. package/react/components/toolbar/dashbar/DashbarItem.d.ts.map +1 -1
  213. package/react/components/toolbar/dashbar/DashbarItem.js +25 -4
  214. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  215. package/react/components/toolbar/index.d.ts +1 -0
  216. package/react/components/toolbar/index.d.ts.map +1 -1
  217. package/react/components/toolbar/index.js +1 -0
  218. package/react/components/toolbar/index.js.map +1 -1
  219. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +3 -4
  220. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts.map +1 -1
  221. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +3 -10
  222. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  223. package/react/components/userPreferences/components/content/General.d.ts.map +1 -1
  224. package/react/components/userPreferences/components/content/General.js +3 -0
  225. package/react/components/userPreferences/components/content/General.js.map +1 -1
  226. package/react/components/userPreferences/components/general/DownloadPreferences.d.ts +10 -0
  227. package/react/components/userPreferences/components/general/DownloadPreferences.d.ts.map +1 -0
  228. package/react/components/userPreferences/components/general/DownloadPreferences.js +111 -0
  229. package/react/components/userPreferences/components/general/DownloadPreferences.js.map +1 -0
  230. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +6 -0
  231. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts.map +1 -1
  232. package/react/components/userPreferences/stores/UserPreferencesStore.js +11 -0
  233. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  234. package/react/components/windowTitleBar/components/right/CloseButton.d.ts +2 -26
  235. package/react/components/windowTitleBar/components/right/CloseButton.d.ts.map +1 -1
  236. package/react/components/windowTitleBar/components/right/CloseButton.js +8 -25
  237. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  238. package/react/hooks/useDownloadItems.d.ts +24 -0
  239. package/react/hooks/useDownloadItems.d.ts.map +1 -0
  240. package/react/hooks/useDownloadItems.js +68 -0
  241. package/react/hooks/useDownloadItems.js.map +1 -0
  242. package/react/hooks/useNotifications.d.ts +1 -1
  243. package/react/reducers/rootReducer.d.ts +4 -0
  244. package/react/reducers/rootReducer.d.ts.map +1 -1
  245. package/react/reducers/smartDesktopDesignerReducer.d.ts.map +1 -1
  246. package/react/reducers/smartDesktopDesignerReducer.js +4 -0
  247. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  248. package/react/store.d.ts +8 -0
  249. package/react/store.d.ts.map +1 -1
  250. package/react/types/dashbarTypes.d.ts +3 -1
  251. package/react/types/dashbarTypes.d.ts.map +1 -1
  252. package/react/types/smartDesktopDesignerTypes.d.ts +2 -0
  253. package/react/types/smartDesktopDesignerTypes.d.ts.map +1 -1
  254. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
@@ -0,0 +1,525 @@
1
+ import BoxMath from "./boxMath";
2
+ class DockableBox {
3
+ constructor(bounds) {
4
+ this.resizeHandle = null;
5
+ if (bounds) {
6
+ this.left = bounds.left;
7
+ this.top = bounds.top;
8
+ this.right = bounds.right;
9
+ this.bottom = bounds.bottom;
10
+ this.width = bounds.right - bounds.left;
11
+ this.height = bounds.bottom - bounds.top;
12
+ this.windowBoundingBox = BoxMath.getWindowBoundingBox(this.getBounds());
13
+ }
14
+ this.setSnappingRegions();
15
+ this.getVertices = BoxMath.getVertices;
16
+ return this;
17
+ }
18
+ /**
19
+ * @function {function name}
20
+ * @param {type} format {description}
21
+ * @param {type} includeCorners {description}
22
+ * @return {type} {description}
23
+ */
24
+ getEdges(format, includeCorners) {
25
+ if (includeCorners === undefined || includeCorners === true) {
26
+ includeCorners = 0;
27
+ }
28
+ else {
29
+ includeCorners = 1;
30
+ }
31
+ const top = {
32
+ min: {
33
+ x: this.left + includeCorners,
34
+ y: this.top,
35
+ },
36
+ max: {
37
+ x: this.right - includeCorners,
38
+ y: this.top,
39
+ },
40
+ };
41
+ const left = {
42
+ min: {
43
+ x: this.left,
44
+ y: this.top + includeCorners,
45
+ },
46
+ max: {
47
+ x: this.left,
48
+ y: this.bottom - includeCorners,
49
+ },
50
+ };
51
+ const right = {
52
+ min: {
53
+ x: this.right,
54
+ y: this.top + includeCorners,
55
+ },
56
+ max: {
57
+ x: this.right,
58
+ y: this.bottom - includeCorners,
59
+ },
60
+ };
61
+ const bottom = {
62
+ min: {
63
+ x: this.left + includeCorners,
64
+ y: this.bottom,
65
+ },
66
+ max: {
67
+ x: this.right - includeCorners,
68
+ y: this.bottom,
69
+ },
70
+ };
71
+ if (format === "obj") {
72
+ return {
73
+ top,
74
+ right,
75
+ bottom,
76
+ left,
77
+ };
78
+ }
79
+ return [top, right, bottom, left];
80
+ }
81
+ getCorners() {
82
+ return this.getCornerObject(this.getBounds());
83
+ }
84
+ /**
85
+ * @function {function name}
86
+ * @param {type} point {description}
87
+ * @param {type} includeCorners {description}
88
+ * @return {type} {description}
89
+ */
90
+ pointIsOnBoundingBox(point, includeCorners = true) {
91
+ // If it's on the top or bottom edge.
92
+ const edges = this.getEdges("arr", includeCorners);
93
+ for (let i = 0; i < edges.length; i++) {
94
+ const segment = edges[i];
95
+ if (BoxMath.isPointOnSegment(point, segment)) {
96
+ return true;
97
+ }
98
+ }
99
+ return false;
100
+ }
101
+ /**
102
+ * @function {function name}
103
+ * @param {type} corner {description}
104
+ * @return {type} {description}
105
+ */
106
+ getPointByVertex(corner) {
107
+ corner = corner.toLowerCase();
108
+ const point = {
109
+ x: this.left,
110
+ y: this.top,
111
+ };
112
+ if (corner.includes("bottom")) {
113
+ point.y = this.bottom;
114
+ }
115
+ if (corner.includes("right")) {
116
+ point.x = this.right;
117
+ }
118
+ return point;
119
+ }
120
+ /**
121
+ * @function {function name}
122
+ * @param {type} point {description}
123
+ * @return {type} {description}
124
+ */
125
+ getEdgeByPoint(point) {
126
+ const edges = this.getEdges("obj");
127
+ for (const edge in edges) {
128
+ if (BoxMath.isPointOnSegment(point, edges[edge])) {
129
+ return edge;
130
+ }
131
+ }
132
+ // Should never get here
133
+ return edges[0];
134
+ }
135
+ /**
136
+ * @function {function name}
137
+ * @param {type} point {description}
138
+ * @param {type} tolerance {description}
139
+ * @return {type} {description}
140
+ */
141
+ getVertexByPoint(point, tolerance) {
142
+ if (tolerance === undefined) {
143
+ tolerance = 0;
144
+ }
145
+ let corner = null;
146
+ let justAnEdge = true;
147
+ if (point.y <= this.windowBoundingBox.max.y + tolerance && point.y >= this.windowBoundingBox.max.y - tolerance) {
148
+ corner = "bottom";
149
+ }
150
+ if (point.y <= this.windowBoundingBox.min.y + tolerance && point.y >= this.windowBoundingBox.min.y - tolerance) {
151
+ corner = "top";
152
+ }
153
+ if (!corner) {
154
+ return corner;
155
+ }
156
+ if (point.x <= this.windowBoundingBox.min.x + tolerance && point.x >= this.windowBoundingBox.min.x - tolerance) {
157
+ justAnEdge = false;
158
+ corner = `${corner}Left`;
159
+ }
160
+ if (point.x <= this.windowBoundingBox.max.x + tolerance && point.x >= this.windowBoundingBox.max.x - tolerance) {
161
+ justAnEdge = false;
162
+ corner = `${corner}Right`;
163
+ }
164
+ if (justAnEdge) {
165
+ return null;
166
+ }
167
+ return corner;
168
+ }
169
+ /**
170
+ * @function getSharedEdges Determines if another window has edges to which our window may snap/dock
171
+ * @param {type} win2 {description} * @param {Window} win2 Window proxy (movement object) of other window to which our window may snap/dock
172
+ * @return {type} {description} * @param {number} tolerance Buffer region around edges to determine region for snap / dock
173
+ * @return {object} Object describing shared edges, with boolean top, bottom, left, and right properties
174
+ */
175
+ getSharedEdges(win2, tolerance = 0) {
176
+ // from perspective of stationary window;
177
+ const sharedEdges = {
178
+ top: false,
179
+ left: false,
180
+ right: false,
181
+ bottom: false,
182
+ };
183
+ // +--------------------------------+
184
+ // | Monitor2 |
185
+ // | |
186
+ // | +---------+ |
187
+ // | | | |
188
+ // | | Win2 | |
189
+ // | | | |
190
+ // +--------------------------------+
191
+ // | | | |
192
+ // | | MyWindow| |
193
+ // | | | |
194
+ // | +---------+ |
195
+ // | Monitor1 |
196
+ // | |
197
+ // +--------------------------------+
198
+ // Return all false if we aren't intersecting at all or snapping exactly across the monitor boundary,
199
+ // e.g. (see above) if top of my window is snapped to bottom of the other window and the top of my other window is the top
200
+ // of the monitor, return shared edges.
201
+ const intersection = BoxMath.intersectBoundingBoxes(this.buffer, win2.windowBoundingBox);
202
+ if (!intersection ||
203
+ (this.monitor &&
204
+ ((this.top === win2.bottom && this.top === this.monitor.top) ||
205
+ (this.left === win2.right && this.left === this.monitor.left) ||
206
+ (this.bottom === win2.top && this.bottom === this.monitor.bottom) ||
207
+ (this.right === win2.left && this.right === this.monitor.right)))) {
208
+ return sharedEdges;
209
+ }
210
+ const inRightTolerance = BoxMath.between({
211
+ num: win2.right,
212
+ min: this.left - tolerance,
213
+ max: this.left + tolerance,
214
+ inclusive: true,
215
+ });
216
+ const inLeftTolerance = BoxMath.between({
217
+ num: win2.left,
218
+ min: this.right - tolerance,
219
+ max: this.right + tolerance,
220
+ inclusive: true,
221
+ });
222
+ const inTopTolerance = BoxMath.between({
223
+ num: win2.top,
224
+ min: this.bottom - tolerance,
225
+ max: this.bottom + tolerance,
226
+ inclusive: true,
227
+ });
228
+ const inBottomTolerance = BoxMath.between({
229
+ num: win2.bottom,
230
+ min: this.top - tolerance,
231
+ max: this.top + tolerance,
232
+ inclusive: true,
233
+ });
234
+ if (inRightTolerance && win2.bottom > this.top - tolerance && win2.top < this.bottom + tolerance) {
235
+ sharedEdges.left = true;
236
+ }
237
+ // if(600 > 0 && 300 < 300)
238
+ if (inLeftTolerance && win2.bottom > this.top - tolerance && win2.top < this.bottom + tolerance) {
239
+ sharedEdges.right = true;
240
+ }
241
+ if (inBottomTolerance && win2.left < this.right + tolerance && win2.right > this.left - tolerance) {
242
+ sharedEdges.top = true;
243
+ }
244
+ if (inTopTolerance && win2.left < this.right + tolerance && win2.right > this.left - tolerance) {
245
+ sharedEdges.bottom = true;
246
+ }
247
+ return sharedEdges;
248
+ }
249
+ /**
250
+ * @function getSharedCorners Determines if another window has corners to which our window may snap/dock
251
+ * @param {type} win2 {description} * @param {Window} win2 Window proxy (movement object) of other window to which our window may snap/dock
252
+ * @return {type} {description} * @return {object} Object describing shared corners, including original vertices (topLeft, topRight, bottomRight, bottomLeft),
253
+ * and amended vertices (rightTop, rightBottom, leftTop, leftBottom) to indicate shared tops or bottoms on
254
+ * on the left or right.
255
+ */
256
+ getSharedCorners(win2) {
257
+ var _a, _b, _c, _d;
258
+ const sharedCorners = {
259
+ // Matched corners
260
+ topLeft: false,
261
+ topRight: false,
262
+ bottomLeft: false,
263
+ bottomRight: false,
264
+ // Adjoined corners
265
+ rightTop: false,
266
+ rightBottom: false,
267
+ leftTop: false,
268
+ leftBottom: false,
269
+ };
270
+ // Are we intersecting at all?
271
+ const intersection = win2.windowBoundingBox &&
272
+ !BoxMath.intersectBoundingBoxes(this.innerBuffer, win2.windowBoundingBox) &&
273
+ BoxMath.intersectBoundingBoxes(this.buffer, win2.windowBoundingBox);
274
+ // If not, then return all corners false
275
+ if (!intersection)
276
+ return sharedCorners;
277
+ // Are we snapping exactly on a monitor boundary?
278
+ // +--------------------------------+
279
+ // | Monitor2 |
280
+ // | |
281
+ // | +---------+ |
282
+ // | | | |
283
+ // | | Win2 | |
284
+ // | | | |
285
+ // +--------------------------------+
286
+ // | | | |
287
+ // | | MyWindow| |
288
+ // | | | |
289
+ // | +---------+ |
290
+ // | Monitor1 |
291
+ // | |
292
+ // +--------------------------------+
293
+ // e.g. (see above) if top of my window is snapped to bottom of the other window and the top of my other window is the top
294
+ // of the monitor
295
+ const onTopMonitorBoundary = this.top === win2.bottom && this.top === ((_a = this.monitor) === null || _a === void 0 ? void 0 : _a.top);
296
+ const onLeftMonitorBoudnary = this.left === win2.right && this.left === ((_b = this.monitor) === null || _b === void 0 ? void 0 : _b.left);
297
+ const onBottomMonitorBoundary = this.bottom === win2.top && this.bottom === ((_c = this.monitor) === null || _c === void 0 ? void 0 : _c.bottom);
298
+ const onRightMonitorBoundary = this.right === win2.left && this.right === ((_d = this.monitor) === null || _d === void 0 ? void 0 : _d.right);
299
+ const onAnyMonitorBoundary = onTopMonitorBoundary || onLeftMonitorBoudnary || onBottomMonitorBoundary || onRightMonitorBoundary;
300
+ // If so, return all corners false because the window will be snapped to the monitor boundary.
301
+ if (onAnyMonitorBoundary)
302
+ return sharedCorners;
303
+ const isSameCorner = (c1, c2) => c1.x === c2.x && c1.y === c2.y;
304
+ // Set any matched corners between the two windows to true
305
+ const myCorners = BoxMath.getVertices(this.getBounds());
306
+ const theirCorners = BoxMath.getVertices(win2);
307
+ myCorners.forEach((ourCorner) => {
308
+ theirCorners.forEach((theirCorner) => {
309
+ sharedCorners[ourCorner.label] = isSameCorner(ourCorner, theirCorner);
310
+ });
311
+ });
312
+ // Win1's X1,Y0 is adjoined to Win2's X0,Y0
313
+ // +---------------------------+
314
+ // | |
315
+ // | +--------+---------+ |
316
+ // | | | | |
317
+ // | | Win1 | Win2 | |
318
+ // | | | | |
319
+ // +---------------------------+
320
+ const right = this.right === win2.left || this.right === win2.right; // second half of this conditional doesn't seem correct
321
+ const left = this.left === win2.right || this.left === win2.left; // second half of this conditional doesn't seem correct
322
+ const sharedTop = this.top === win2.top;
323
+ const sharedBottom = this.bottom === win2.bottom;
324
+ return Object.assign(Object.assign({}, sharedCorners), { rightTop: right && sharedTop, rightBottom: right && sharedBottom, leftBottom: left && sharedBottom, leftTop: left && sharedTop });
325
+ }
326
+ /**
327
+ * @function {function name}
328
+ * @return {type} {description}
329
+ */
330
+ getBounds() {
331
+ return {
332
+ left: this.left,
333
+ right: this.right,
334
+ top: this.top,
335
+ bottom: this.bottom,
336
+ width: this.width,
337
+ height: this.height,
338
+ };
339
+ }
340
+ /**
341
+ * @function {function name}
342
+ * @param {type} req {description}
343
+ * @return {type} {description}
344
+ */
345
+ getCornerObject(req) {
346
+ const corners = {};
347
+ const vertices = BoxMath.getVertices(req);
348
+ for (let i = 0; i < vertices.length; i++) {
349
+ const corner = vertices[i];
350
+ corners[corner.label] = corner;
351
+ }
352
+ return corners;
353
+ }
354
+ /**
355
+ * @function {function name}
356
+ * @param {type} mouse {description}
357
+ * @return {type} {description}
358
+ */
359
+ getGrabbedEdge(mouse) {
360
+ const tolerance = 15;
361
+ const mouseBox = {
362
+ min: {
363
+ x: mouse.x - tolerance,
364
+ y: mouse.y - tolerance,
365
+ },
366
+ max: {
367
+ x: mouse.x + tolerance,
368
+ y: mouse.y + tolerance,
369
+ },
370
+ };
371
+ const edges = ["top", "bottom", "left", "right"];
372
+ for (let i = 0; i < edges.length; i++) {
373
+ const edge = edges[i];
374
+ if (BoxMath.intersectBoundingBoxes(mouseBox, this.snappingRegions[edge])) {
375
+ return edge;
376
+ }
377
+ }
378
+ return false;
379
+ }
380
+ computeResizeHandleFromMove(request) {
381
+ if (request.top !== this.top) {
382
+ if (request.right !== this.right) {
383
+ return "topRight";
384
+ }
385
+ else if (request.left !== this.left) {
386
+ return "topLeft";
387
+ }
388
+ return "top";
389
+ }
390
+ else if (request.right !== this.right) {
391
+ if (request.bottom !== this.bottom) {
392
+ return "bottomRight";
393
+ }
394
+ else if (request.top !== this.top) {
395
+ return "topRight";
396
+ }
397
+ return "right";
398
+ }
399
+ else if (request.bottom !== this.bottom) {
400
+ if (request.left !== this.left) {
401
+ return "bottomLeft";
402
+ }
403
+ else if (request.right !== this.right) {
404
+ return "bottomRight";
405
+ }
406
+ return "bottom";
407
+ }
408
+ else if (request.left !== this.left) {
409
+ if (request.top !== this.top) {
410
+ return "topLeft";
411
+ }
412
+ else if (request.bottom !== this.bottom) {
413
+ return "bottomLeft";
414
+ }
415
+ return "left";
416
+ }
417
+ return null;
418
+ }
419
+ /**
420
+ * @function {function name}
421
+ * @param {type} request {description}
422
+ * @return {type} {description}
423
+ */
424
+ getResizeHandle(request) {
425
+ var _a;
426
+ if (this.resizeHandle)
427
+ return this.resizeHandle;
428
+ let resizeHandle;
429
+ if (request.mousePosition) {
430
+ resizeHandle = (_a = this.getVertexByPoint(request.mousePosition, 15)) !== null && _a !== void 0 ? _a : this.getGrabbedEdge(request.mousePosition);
431
+ }
432
+ resizeHandle = resizeHandle !== null && resizeHandle !== void 0 ? resizeHandle : this.computeResizeHandleFromMove(request);
433
+ if (resizeHandle && request.changeType !== 0) {
434
+ // if we didn't find a resizeHandle, then no edges moved. Send last handle.
435
+ this.resizeHandle = resizeHandle;
436
+ }
437
+ else if (!resizeHandle && request.changeType === 0) {
438
+ resizeHandle = "top";
439
+ }
440
+ return resizeHandle;
441
+ }
442
+ /**
443
+ * @function {function name}
444
+ * @param {type} bufferSize {description}
445
+ * @return {type} {description}
446
+ */
447
+ setBuffer(bufferSize) {
448
+ if (bufferSize === undefined && this.bufferSize === null) {
449
+ return;
450
+ }
451
+ if (bufferSize !== undefined) {
452
+ this.bufferSize = bufferSize;
453
+ }
454
+ else {
455
+ ({ bufferSize } = this);
456
+ }
457
+ this.buffer = {
458
+ min: {
459
+ x: this.left - bufferSize,
460
+ y: this.top - bufferSize,
461
+ },
462
+ max: {
463
+ x: this.right + bufferSize,
464
+ y: this.bottom + bufferSize,
465
+ },
466
+ };
467
+ }
468
+ /**
469
+ * @function {function name}
470
+ * @return {type} {description}
471
+ */
472
+ setSnappingRegions() {
473
+ this.snappingRegions = BoxMath.getSnappingRegions(this, this.bufferSize);
474
+ }
475
+ sharesACornerWith(win) {
476
+ const sharedCorners = this.getSharedCorners(win);
477
+ const corners = [
478
+ "topLeft",
479
+ "topRight",
480
+ "rightTop",
481
+ "leftTop",
482
+ "bottomRight",
483
+ "bottomLeft",
484
+ "rightBottom",
485
+ "leftBottom",
486
+ ];
487
+ for (let i = 0; i < corners.length; i++) {
488
+ const corner = corners[i];
489
+ if (sharedCorners[corner]) {
490
+ return true;
491
+ }
492
+ }
493
+ return false;
494
+ }
495
+ /**
496
+ * @function {function name}
497
+ * @param {type} win {description}
498
+ * @return {type} {description}
499
+ */
500
+ sharesAnEdgeWith(win) {
501
+ const sharedEdges = this.getSharedEdges(win);
502
+ const edges = ["top", "right", "left", "bottom"];
503
+ for (let i = 0; i < edges.length; i++) {
504
+ const edge = edges[i];
505
+ if (sharedEdges[edge]) {
506
+ return true;
507
+ }
508
+ }
509
+ return false;
510
+ }
511
+ /**
512
+ * @function {function name}
513
+ * @param {type} request {description}
514
+ * @return {type} {description}
515
+ */
516
+ canSnapToWindow(request) {
517
+ if (this.sharesAnEdgeWith(request)) {
518
+ return true;
519
+ }
520
+ return (BoxMath.intersectBoundingBoxes(this.buffer, request.windowBoundingBox) &&
521
+ !BoxMath.intersectBoundingBoxes(this.innerBuffer, request.windowBoundingBox));
522
+ }
523
+ }
524
+ export default DockableBox;
525
+ //# sourceMappingURL=dockableBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dockableBox.js","sourceRoot":"","sources":["../../../../../../src/platform/services/window/Docking/dockableBox.ts"],"names":[],"mappings":"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"}