@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,178 @@
1
+ import { FinsembleWindowData } from "../window/types";
2
+ import { StandardErrorCallback } from "../../../types";
3
+ import { CompleteWindowState, StateType } from "./types";
4
+ export declare const GET_WINDOW_STATE_ERROR: (win: string, ws?: string) => string;
5
+ /**
6
+ * Static, ORM-like layer into the storage of all `windowData`
7
+ * and `componentState` data, mediating interface with storage
8
+ * while enforcing consistency and business rules.
9
+ */
10
+ export declare class WindowStorageManager {
11
+ /**
12
+ * This static member is necessary for testing purposes
13
+ * only. Ideally, we would just use the StorageClient
14
+ * instance directly; however, this causes inconsistencies
15
+ * with our mocks that failed our testing efforts.
16
+ */
17
+ static _SC: {
18
+ initialize: () => void;
19
+ onReady: (cb?: any) => void;
20
+ clearCache: (cb?: StandardErrorCallback<void> | undefined) => import("../../../types").StandardPromise<void>;
21
+ remove: (params: {
22
+ key: string;
23
+ topic: string;
24
+ }, cb?: StandardErrorCallback<void> | undefined) => import("../../../types").StandardPromise<void>;
25
+ getMultiple: (params: any, cb?: StandardErrorCallback<any> | undefined) => import("../../../types").StandardPromise<any>;
26
+ keys: (params: {
27
+ topic: string;
28
+ keyPrefix?: string | undefined;
29
+ }, cb?: StandardErrorCallback<string[]> | undefined) => import("../../../types").StandardPromise<string[]>;
30
+ getStandardized: <T = any>(params: {
31
+ key: string;
32
+ topic: string;
33
+ }, cb?: StandardErrorCallback<T> | undefined) => import("../../../types").StandardPromise<T>;
34
+ get: <T_1 = any>(params: {
35
+ key: string;
36
+ topic: string;
37
+ }, cb?: StandardErrorCallback<T_1> | undefined) => Promise<T_1>;
38
+ save: (params: import("../window/types").ComponentMutateParams, cb?: StandardErrorCallback<void> | undefined) => import("../../../types").StandardPromise<void>;
39
+ setStore: (params: {
40
+ topic: string;
41
+ dataStore?: string | undefined;
42
+ }, cb?: StandardErrorCallback<void> | undefined) => import("../../../types").StandardPromise<void>;
43
+ setUser: (params: {
44
+ user: string;
45
+ }, cb?: StandardErrorCallback<void> | undefined) => import("../../../types").StandardPromise<void>;
46
+ delete: (...args: any[]) => void;
47
+ remove1: (params: {
48
+ key: string;
49
+ topic: string;
50
+ }) => void;
51
+ get1: <T_2 = any>(params: {
52
+ key: string;
53
+ topic: string;
54
+ }, cb?: StandardErrorCallback<T_2> | undefined) => Promise<T_2>;
55
+ save1: (params: {
56
+ key: string;
57
+ topic: string;
58
+ value: any;
59
+ }) => void;
60
+ keys1: (params: {
61
+ topic: string;
62
+ keyPrefix?: string | undefined;
63
+ }) => Promise<string[]>;
64
+ };
65
+ static getWindowID: (win: FinsembleWindowData) => string;
66
+ /**
67
+ * Asynchronously updates provided key in storage by first retrieving the key
68
+ * then running a provided function on the result and re-saving its value.
69
+ * There’s no guarantees of consistency or atomicity
70
+ *
71
+ * @param params {any} Update storage params
72
+ * @param params.topic {string} The storage topic
73
+ * @param params.key {string} The storage key
74
+ * @param params.updateFn {Function} Function to run to determine the value to store
75
+ * @private
76
+ */
77
+ static updateStorage(params: {
78
+ topic: string;
79
+ key: string;
80
+ updateFn: (x: any) => any;
81
+ }): Promise<{
82
+ err?: import("../../../types").StandardError;
83
+ data?: void | undefined;
84
+ }>;
85
+ /**
86
+ * Rate limited updateStorage.
87
+ * @private
88
+ */
89
+ static updateStorage1(params: {
90
+ topic: string;
91
+ key: string;
92
+ updateFn: (x: any) => any;
93
+ }): Promise<{
94
+ err?: import("../../../types").StandardError;
95
+ data?: void | undefined;
96
+ }>;
97
+ /**
98
+ * Given a type, window, and workspace name, returns the correct storage topic and key
99
+ * for the `windowData` or `componentState`.
100
+ * Omit the workspace name to target the active workspace.
101
+ */
102
+ static getTopicAndKey(type: StateType, windowName: string, workspaceName?: string): {
103
+ topic: string;
104
+ key: string;
105
+ };
106
+ /**
107
+ * Retrieves a window or component state belonging to the given workspace from storage.
108
+ * Omit the workspace name to target the active workspace.
109
+ *
110
+ * @param type Either `componentState` or `windowData`.
111
+ */
112
+ static getState(type: StateType, windowName: string, workspaceName?: string): Promise<FinsembleWindowData>;
113
+ /**
114
+ * Same as `getState` but retrieves both `componentState` and `windowData`.
115
+ * NOTE: either or both of windowData may be null or emtpy objects (i.e, when
116
+ * the requested data doesn't exist).
117
+ */
118
+ static getCompleteState(windowName: string, workspaceName?: string): Promise<CompleteWindowState>;
119
+ /**
120
+ * Retrieves multiple states (`componentState` or `windowData`) belonging to the given workspace from storage.
121
+ * Omit the workspace name to target the active workspace.
122
+ *
123
+ * It's possible to request a window state before it's been saved to storage particularly.
124
+ * if the window was added to a workspace by name (not by data). Therefore, unlike `getState`,
125
+ * this method doesn't throw errors if unable to fulfill the request; rather, it logs a warning instead.
126
+ *
127
+ * @param type Either `componentState` or `windowData`.
128
+ */
129
+ static getManyStates(type: StateType, windowNames: string[], workspaceName?: string): Promise<FinsembleWindowData[]>;
130
+ /**
131
+ * Same as `getManyStates` but retrieves both `componentState` and `windowData`.
132
+ */
133
+ static getManyCompleteStates(windowNames: string[], workspaceName?: string): Promise<CompleteWindowState[]>;
134
+ /**
135
+ * Persists a state to storage under the given workspace name.
136
+ * Omit the workspace name to target the active workspace.
137
+ *
138
+ * @param type Either `componentState` or `windowData`.
139
+ */
140
+ static setState(type: StateType, windowName: string, data: FinsembleWindowData | Record<string, any>, workspaceName?: string): Promise<void>;
141
+ /**
142
+ * Same as `setState`, but sets both `componentState` and `windowData`.
143
+ */
144
+ static setCompleteState(state: CompleteWindowState, workspaceName?: string): Promise<void>;
145
+ /**
146
+ * Given an array of states, persists their states to storage.
147
+ * Omit the workspace name to target the active workspace.
148
+ *
149
+ * @param type Either `componentState` or `windowData`.
150
+ */
151
+ static setManyStates(type: StateType, windows: FinsembleWindowData[], workspaceName?: string): Promise<void[]>;
152
+ /**
153
+ * Same as `setManyStates`, but sets both `componentState` and `windowData`.
154
+ */
155
+ static setManyCompleteStates(windows: CompleteWindowState[], workspaceName?: string): Promise<void[]>;
156
+ /**
157
+ * Given a window name and an update function, retrieves the state
158
+ * under that name from storage, applies the update function to it, then sets
159
+ * the storage with the result.
160
+ * Omit the workspace name to target the active workspace.
161
+ *
162
+ * @param type Either `componentState` or `windowData`.
163
+ */
164
+ static updateState(type: StateType, updateFn: (window: FinsembleWindowData) => FinsembleWindowData, windowName: string, workspaceName?: any): Promise<void>;
165
+ /**
166
+ * Removes a window's state (both `componentState` and `windowData`) from storage under the
167
+ * given workspace name. Omit the workspace name to target the active workspace.
168
+ *
169
+ * Logs a warning if unable to fulfill the request (doesn't throw).
170
+ */
171
+ static removeCompleteState(windowName: string, workspaceName?: string): Promise<void>;
172
+ /**
173
+ * Removes multiple states (both `componentState` and `windowData`) belonging to the given workspace from storage.
174
+ * Omit the workspace name to target the active workspace.
175
+ */
176
+ static removeManyCompleteStates(windowNames: string[], workspaceName?: string): Promise<void[]>;
177
+ }
178
+ //# sourceMappingURL=windowStorageManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowStorageManager.d.ts","sourceRoot":"","sources":["../../../../../src/platform/services/workspace/windowStorageManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import StorageClient from "../../../clients/storageClient";
2
+ import { camelCase, identity } from "../../../common/util";
3
+ import { WORKSPACE } from "../../../common/constants";
4
+ import { LoggerClient as Logger } from "../../../clients/logger";
5
+ import pLimit from "p-limit";
6
+ const limit = pLimit(1);
7
+ const { ACTIVE_WORKSPACE, CACHE_STORAGE_TOPIC, STORAGE_TOPIC } = WORKSPACE;
8
+ export const GET_WINDOW_STATE_ERROR = (win, ws = ACTIVE_WORKSPACE) => `No Window State found for window "${win}" in workspace "${ws}"`;
9
+ /**
10
+ * Rate limited functions
11
+ */
12
+ const remove1 = (params) => limit(() => StorageClient.remove(params));
13
+ const get1 = (params, cb) => limit(() => StorageClient.get(params, cb));
14
+ const save1 = (params) => limit(() => StorageClient.save(params));
15
+ /**
16
+ * Static, ORM-like layer into the storage of all `windowData`
17
+ * and `componentState` data, mediating interface with storage
18
+ * while enforcing consistency and business rules.
19
+ */
20
+ export class WindowStorageManager {
21
+ /**
22
+ * Asynchronously updates provided key in storage by first retrieving the key
23
+ * then running a provided function on the result and re-saving its value.
24
+ * There’s no guarantees of consistency or atomicity
25
+ *
26
+ * @param params {any} Update storage params
27
+ * @param params.topic {string} The storage topic
28
+ * @param params.key {string} The storage key
29
+ * @param params.updateFn {Function} Function to run to determine the value to store
30
+ * @private
31
+ */
32
+ static async updateStorage(params) {
33
+ const { topic, key, updateFn } = params;
34
+ const result = await WindowStorageManager._SC.get({ topic, key });
35
+ return await WindowStorageManager._SC.save({ topic, key, value: updateFn(result) });
36
+ }
37
+ /**
38
+ * Rate limited updateStorage.
39
+ * @private
40
+ */
41
+ static updateStorage1(params) {
42
+ return limit(() => WindowStorageManager.updateStorage(params));
43
+ }
44
+ /**
45
+ * Given a type, window, and workspace name, returns the correct storage topic and key
46
+ * for the `windowData` or `componentState`.
47
+ * Omit the workspace name to target the active workspace.
48
+ */
49
+ static getTopicAndKey(type, windowName, workspaceName = ACTIVE_WORKSPACE) {
50
+ /** The `windowData` is stored under the key with the format "workspacenameWindowname",
51
+ * while the `componentState` is stored under "workspacenameWindownameWindowname" */
52
+ const keyArgs = type === "windowData" ? [workspaceName, windowName] : [workspaceName, windowName, windowName];
53
+ return {
54
+ topic: workspaceName === ACTIVE_WORKSPACE ? CACHE_STORAGE_TOPIC : STORAGE_TOPIC,
55
+ key: camelCase.apply(null, keyArgs),
56
+ };
57
+ }
58
+ /**
59
+ * Retrieves a window or component state belonging to the given workspace from storage.
60
+ * Omit the workspace name to target the active workspace.
61
+ *
62
+ * @param type Either `componentState` or `windowData`.
63
+ */
64
+ static async getState(type, windowName, workspaceName) {
65
+ const topicAndKey = WindowStorageManager.getTopicAndKey(type, windowName, workspaceName);
66
+ //disabled to reduce load on logging system generated when when retrieving activeWorkspace
67
+ //Logger.system.debug("getState", type, windowName, workspaceName, topicAndKey, "Result=", result);
68
+ return (await get1(topicAndKey)) || null;
69
+ }
70
+ /**
71
+ * Same as `getState` but retrieves both `componentState` and `windowData`.
72
+ * NOTE: either or both of windowData may be null or emtpy objects (i.e, when
73
+ * the requested data doesn't exist).
74
+ */
75
+ static async getCompleteState(windowName, workspaceName) {
76
+ let componentState = (await WindowStorageManager.getState("componentState", windowName, workspaceName)
77
+ // Windows may not necessarily have component state, so we must catch that occurance here.
78
+ .catch(() => {
79
+ return {};
80
+ }));
81
+ let windowData = (await WindowStorageManager.getState("windowData", windowName, workspaceName));
82
+ Logger.system.debug("getCompleteState", windowName, workspaceName, componentState, windowData);
83
+ return { componentState, windowData };
84
+ }
85
+ /**
86
+ * Retrieves multiple states (`componentState` or `windowData`) belonging to the given workspace from storage.
87
+ * Omit the workspace name to target the active workspace.
88
+ *
89
+ * It's possible to request a window state before it's been saved to storage particularly.
90
+ * if the window was added to a workspace by name (not by data). Therefore, unlike `getState`,
91
+ * this method doesn't throw errors if unable to fulfill the request; rather, it logs a warning instead.
92
+ *
93
+ * @param type Either `componentState` or `windowData`.
94
+ */
95
+ static async getManyStates(type, windowNames, workspaceName) {
96
+ const promises = windowNames.flatMap((x) => {
97
+ try {
98
+ const state = WindowStorageManager.getState(type, x, workspaceName);
99
+ return [state];
100
+ }
101
+ catch (e) {
102
+ return [];
103
+ }
104
+ });
105
+ return Promise.all(promises).then((x) => x.filter(identity));
106
+ }
107
+ /**
108
+ * Same as `getManyStates` but retrieves both `componentState` and `windowData`.
109
+ */
110
+ static async getManyCompleteStates(windowNames, workspaceName) {
111
+ return Promise.all(windowNames.map((x) => WindowStorageManager.getCompleteState(x, workspaceName).catch((err) => {
112
+ Logger.system.warn(err);
113
+ return null;
114
+ }))).then((x) => x.filter(identity));
115
+ }
116
+ /**
117
+ * Persists a state to storage under the given workspace name.
118
+ * Omit the workspace name to target the active workspace.
119
+ *
120
+ * @param type Either `componentState` or `windowData`.
121
+ */
122
+ static async setState(type, windowName, data, workspaceName) {
123
+ await save1(Object.assign(Object.assign({}, WindowStorageManager.getTopicAndKey(type, windowName, workspaceName)), { value: data }));
124
+ }
125
+ /**
126
+ * Same as `setState`, but sets both `componentState` and `windowData`.
127
+ */
128
+ static async setCompleteState(state, workspaceName) {
129
+ // This only happens if a very seldomly hit race condition happens, and a window is removed from storage but not from the active workspace.
130
+ // We didn't spend a ton of time trying to figure it out because the underlying issue had no
131
+ // observable effect.
132
+ // Removing this line will cause the workspace to crash if it hits, though. so leave it.
133
+ if (!state.windowData || !state.componentState)
134
+ return;
135
+ await WindowStorageManager.setState("windowData", state.windowData.name, state.windowData, workspaceName);
136
+ await WindowStorageManager.setState("componentState", state.windowData.name, state.componentState, workspaceName);
137
+ }
138
+ /**
139
+ * Given an array of states, persists their states to storage.
140
+ * Omit the workspace name to target the active workspace.
141
+ *
142
+ * @param type Either `componentState` or `windowData`.
143
+ */
144
+ static async setManyStates(type, windows, workspaceName) {
145
+ return Promise.all(windows.map((x) => WindowStorageManager.setState(type, x.name, x, workspaceName)));
146
+ }
147
+ /**
148
+ * Same as `setManyStates`, but sets both `componentState` and `windowData`.
149
+ */
150
+ static async setManyCompleteStates(windows, workspaceName) {
151
+ return Promise.all(windows.map((x) => WindowStorageManager.setCompleteState(x, workspaceName)));
152
+ }
153
+ /**
154
+ * Given a window name and an update function, retrieves the state
155
+ * under that name from storage, applies the update function to it, then sets
156
+ * the storage with the result.
157
+ * Omit the workspace name to target the active workspace.
158
+ *
159
+ * @param type Either `componentState` or `windowData`.
160
+ */
161
+ static async updateState(type, updateFn, windowName, workspaceName) {
162
+ await WindowStorageManager.updateStorage1(Object.assign(Object.assign({}, WindowStorageManager.getTopicAndKey(type, windowName, workspaceName)), { updateFn }));
163
+ }
164
+ /**
165
+ * Removes a window's state (both `componentState` and `windowData`) from storage under the
166
+ * given workspace name. Omit the workspace name to target the active workspace.
167
+ *
168
+ * Logs a warning if unable to fulfill the request (doesn't throw).
169
+ */
170
+ static async removeCompleteState(windowName, workspaceName) {
171
+ try {
172
+ await remove1(WindowStorageManager.getTopicAndKey("windowData", windowName, workspaceName));
173
+ await remove1(WindowStorageManager.getTopicAndKey("componentState", windowName, workspaceName));
174
+ }
175
+ catch (error) {
176
+ Logger.system.warn(error);
177
+ }
178
+ }
179
+ /**
180
+ * Removes multiple states (both `componentState` and `windowData`) belonging to the given workspace from storage.
181
+ * Omit the workspace name to target the active workspace.
182
+ */
183
+ static async removeManyCompleteStates(windowNames, workspaceName) {
184
+ return Promise.all(windowNames.map((x) => WindowStorageManager.removeCompleteState(x, workspaceName)));
185
+ }
186
+ }
187
+ /**
188
+ * This static member is necessary for testing purposes
189
+ * only. Ideally, we would just use the StorageClient
190
+ * instance directly; however, this causes inconsistencies
191
+ * with our mocks that failed our testing efforts.
192
+ */
193
+ WindowStorageManager._SC = StorageClient;
194
+ WindowStorageManager.getWindowID = (win) => camelCase(win.name);
195
+ //# sourceMappingURL=windowStorageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowStorageManager.js","sourceRoot":"","sources":["../../../../../src/platform/services/workspace/windowStorageManager.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { FinsembleWindowData } from "../window/types";
6
6
  /**
7
7
  * Adds a newly launched window to the current active workspace
8
8
  */
9
- export declare const addWindowReferenceToActiveWorkspace: (params: FinsembleWindowData, cb?: any) => Promise<import("../../../clients/routerClient").QueryResponse<any>>;
9
+ export declare const addWindowReferenceToActiveWorkspace: (params: FinsembleWindowData, cb?: any) => Promise<import("../router/types").QueryResponse<any>>;
10
10
  /**
11
11
  * Removes window from active workspace (but does not close it).
12
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceAdminAPI.d.ts","sourceRoot":"","sources":["../../../../../src/platform/services/workspace/workspaceAdminAPI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAItD;;GAEG;AACH,eAAO,MAAM,mCAAmC,WAAkB,mBAAmB,OAAM,GAAG,wEAS7F,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wCAAwC,WAC5C;IACP,MAAM,MAAM,CAAC;CACb,wBAcD,CAAC"}
1
+ {"version":3,"file":"workspaceAdminAPI.d.ts","sourceRoot":"","sources":["../../../../../src/platform/services/workspace/workspaceAdminAPI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAItD;;GAEG;AACH,eAAO,MAAM,mCAAmC,WAAkB,mBAAmB,OAAM,GAAG,0DAS7F,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wCAAwC,WAC5C;IACP,MAAM,MAAM,CAAC;CACb,wBAcD,CAAC"}
@@ -22,6 +22,7 @@ export declare const SmartDesktopDesignerActions: import("unionize").Unionized<{
22
22
  set_project_error: ProjectError;
23
23
  delete_project_error: ProjectError;
24
24
  set_reviewing_project_errors: boolean;
25
+ set_fsbl_version: string;
25
26
  }, import("unionize").SingleValueVariants<{
26
27
  change_view: string;
27
28
  update_apps: AppDefinition[];
@@ -42,6 +43,7 @@ export declare const SmartDesktopDesignerActions: import("unionize").Unionized<{
42
43
  set_project_error: ProjectError;
43
44
  delete_project_error: ProjectError;
44
45
  set_reviewing_project_errors: boolean;
46
+ set_fsbl_version: string;
45
47
  }, "type", "payload">, "type">;
46
48
  export declare type SmartDesktopDesignerActionsTypes = UnionOf<typeof SmartDesktopDesignerActions>;
47
49
  //# sourceMappingURL=smartDesktopDesignerActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartDesktopDesignerActions.d.ts","sourceRoot":"","sources":["../../../../src/ui/actions/smartDesktopDesignerActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EACN,sBAAsB,EACtB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAuBvC,CAAC;AAEF,oBAAY,gCAAgC,GAAG,OAAO,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"smartDesktopDesignerActions.d.ts","sourceRoot":"","sources":["../../../../src/ui/actions/smartDesktopDesignerActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EACN,sBAAsB,EACtB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAwBvC,CAAC;AAEF,oBAAY,gCAAgC,GAAG,OAAO,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -19,5 +19,6 @@ export const SmartDesktopDesignerActions = unionize({
19
19
  set_project_error: ofType(),
20
20
  delete_project_error: ofType(),
21
21
  set_reviewing_project_errors: ofType(),
22
+ set_fsbl_version: ofType(),
22
23
  }, { tag: "type", value: "payload" });
23
24
  //# sourceMappingURL=smartDesktopDesignerActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartDesktopDesignerActions.js","sourceRoot":"","sources":["../../../../src/ui/actions/smartDesktopDesignerActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAW,MAAM,UAAU,CAAC;AAYrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAClD;IACC,WAAW,EAAE,MAAM,EAAU;IAC7B,WAAW,EAAE,MAAM,EAAmB;IACtC,OAAO,EAAE,MAAM,EAAiB;IAChC,kBAAkB,EAAE,MAAM,EAAiB;IAC3C,UAAU,EAAE,MAAM,EAAiB;IACnC,UAAU,EAAE,MAAM,EAAU;IAC5B,YAAY,EAAE,MAAM,EAAY;IAChC,eAAe,EAAE,MAAM,EAAc;IACrC,mBAAmB,EAAE,MAAM,EAAsB;IACjD,eAAe,EAAE,MAAM,EAAqB;IAC5C,iBAAiB,EAAE,MAAM,EAAiB;IAC1C,iBAAiB,EAAE,MAAM,EAAW;IACpC,gBAAgB,EAAE,MAAM,EAAmB;IAC3C,sBAAsB,EAAE,MAAM,EAAW;IACzC,oBAAoB,EAAE,MAAM,EAA0B;IACtD,oBAAoB,EAAE,MAAM,EAAU;IACtC,iBAAiB,EAAE,MAAM,EAAgB;IACzC,oBAAoB,EAAE,MAAM,EAAgB;IAC5C,4BAA4B,EAAE,MAAM,EAAW;CAC/C,EACD,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CACjC,CAAC"}
1
+ {"version":3,"file":"smartDesktopDesignerActions.js","sourceRoot":"","sources":["../../../../src/ui/actions/smartDesktopDesignerActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAW,MAAM,UAAU,CAAC;AAYrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAClD;IACC,WAAW,EAAE,MAAM,EAAU;IAC7B,WAAW,EAAE,MAAM,EAAmB;IACtC,OAAO,EAAE,MAAM,EAAiB;IAChC,kBAAkB,EAAE,MAAM,EAAiB;IAC3C,UAAU,EAAE,MAAM,EAAiB;IACnC,UAAU,EAAE,MAAM,EAAU;IAC5B,YAAY,EAAE,MAAM,EAAY;IAChC,eAAe,EAAE,MAAM,EAAc;IACrC,mBAAmB,EAAE,MAAM,EAAsB;IACjD,eAAe,EAAE,MAAM,EAAqB;IAC5C,iBAAiB,EAAE,MAAM,EAAiB;IAC1C,iBAAiB,EAAE,MAAM,EAAW;IACpC,gBAAgB,EAAE,MAAM,EAAmB;IAC3C,sBAAsB,EAAE,MAAM,EAAW;IACzC,oBAAoB,EAAE,MAAM,EAA0B;IACtD,oBAAoB,EAAE,MAAM,EAAU;IACtC,iBAAiB,EAAE,MAAM,EAAgB;IACzC,oBAAoB,EAAE,MAAM,EAAgB;IAC5C,4BAA4B,EAAE,MAAM,EAAW;IAC/C,gBAAgB,EAAE,MAAM,EAAU;CAClC,EACD,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CACjC,CAAC"}
@@ -0,0 +1,119 @@
1
+ body {
2
+ overflow-x: hidden;
3
+ }
4
+
5
+ .download-header {
6
+ display: flex;
7
+ width: 191px;
8
+ height: 31px;
9
+ margin: 20px 156px 10px 0;
10
+ font-family: OpenSans;
11
+ font-size: 21px;
12
+ }
13
+
14
+ .download-title {
15
+ display: inline-block;
16
+ }
17
+
18
+ .download-settings {
19
+ margin: 0 19.6px 0 105%;
20
+ }
21
+
22
+ .no-downloads {
23
+ margin: 20px 0 16px 21px;
24
+ }
25
+
26
+ .download-row {
27
+ margin: 10px 16px 15.9px 20px;
28
+ border-bottom: solid 1px #979797;
29
+ }
30
+
31
+ .download-progress-button-row {
32
+ display: inline-block;
33
+ margin-bottom: 20px;
34
+ }
35
+
36
+ .download-name {
37
+ margin: 0 196px 0 0;
38
+ font-family: OpenSans;
39
+ font-size: 12px;
40
+ font-weight: bold;
41
+ font-stretch: normal;
42
+ font-style: normal;
43
+ line-height: 1.5;
44
+ letter-spacing: normal;
45
+ color: #fff;
46
+ }
47
+
48
+ .download-url {
49
+ margin: 0 0 16px;
50
+ width: 80%;
51
+ font-family: OpenSans;
52
+ font-size: 12px;
53
+ font-weight: normal;
54
+ font-stretch: normal;
55
+ font-style: normal;
56
+ letter-spacing: normal;
57
+ color: #5b606f;
58
+ text-overflow: ellipsis;
59
+ white-space: nowrap;
60
+ overflow: hidden;
61
+ }
62
+
63
+ .download-progress {
64
+ width: 98px;
65
+ height: 12px;
66
+ margin: 17px 12px 28px 0;
67
+ font-family: OpenSans;
68
+ font-size: 10px;
69
+ font-weight: normal;
70
+ font-stretch: normal;
71
+ font-style: normal;
72
+ line-height: 1.2;
73
+ letter-spacing: normal;
74
+ color: #fff;
75
+ }
76
+
77
+ .download-buttons {
78
+ height: 12px;
79
+ margin: 16px 0 20px 3px;
80
+ font-family: OpenSans;
81
+ font-size: 10px;
82
+ font-weight: normal;
83
+ font-stretch: normal;
84
+ font-style: normal;
85
+ line-height: 1.2;
86
+ letter-spacing: normal;
87
+ color: #fff;
88
+ }
89
+
90
+ .download-remove {
91
+ width: 9.6px;
92
+ height: 9.6px;
93
+ margin: 0 19.6px 0 90%;
94
+ object-fit: contain;
95
+ }
96
+
97
+ .button-container-icon span.btn-label {
98
+ font-size: 10px;
99
+ }
100
+
101
+ .finsemble-download-pause svg {
102
+ fill: #fdda0d;
103
+ }
104
+
105
+ .finsemble-download-cancel svg {
106
+ fill: #f26666;
107
+ }
108
+
109
+ .finsemble-download-resume svg {
110
+ fill: #2cc13f;
111
+ }
112
+
113
+ .download-settings-button svg .finsemble-download-remove svg {
114
+ fill: #979797;
115
+ }
116
+
117
+ .finsemble-download-folder svg {
118
+ fill: #42a5ba;
119
+ }
@@ -141,6 +141,11 @@ img {
141
141
  overflow: auto;
142
142
  }
143
143
 
144
+ .complex-menu-content-row .checkbox-wrapper {
145
+ display: flex;
146
+ align-items: center;
147
+ }
148
+
144
149
  .items-header {
145
150
  font-size: 1.4em;
146
151
  }
@@ -404,6 +409,22 @@ img {
404
409
  color: var(--core-primary-5);
405
410
  }
406
411
 
412
+ .download-header {
413
+ margin: 30px 29px 10px 10px;
414
+ font-family: OpenSans;
415
+ font-size: 21px;
416
+ font-weight: bold;
417
+ }
418
+
419
+ .download-location-row {
420
+ display: flex;
421
+ }
422
+
423
+ .download-location-label {
424
+ display: inline-block;
425
+ padding-right: 10px;
426
+ }
427
+
407
428
  .disabled-restart {
408
429
  /* stylelint-disable-next-line declaration-no-important */
409
430
  color: var(--core-primary-5) !important;
@@ -448,6 +469,10 @@ option:focus {
448
469
  text-align: center;
449
470
  }
450
471
 
472
+ .dashbar-items-table tr.dashbar-preferences-item td span.finsembleToggle {
473
+ display: flex;
474
+ }
475
+
451
476
  /* Notifications Preferences */
452
477
 
453
478
  .notifications-main-preferences__container {
@@ -520,6 +545,31 @@ option:focus {
520
545
  margin-left: auto;
521
546
  }
522
547
 
548
+ .finsemble-dropdown__btn.file-left {
549
+ width: 348px;
550
+ border-radius: 0;
551
+ background-color: #5b606f;
552
+ }
553
+
554
+ .finsemble-dropdown__btn.file-left i {
555
+ margin-left: auto;
556
+ }
557
+
558
+ .finsemble-dropdown__btn-options.file-options-left {
559
+ margin-right: auto;
560
+ max-width: 400px;
561
+ width: 360px;
562
+ white-space: normal;
563
+ overflow-wrap: break-word;
564
+ text-align: left;
565
+ top: 100%;
566
+ right: auto;
567
+ left: 0;
568
+ background-color: #5b606f;
569
+ border-radius: 0;
570
+ padding: 5px 2px;
571
+ }
572
+
523
573
  .heading-larger {
524
574
  font-size: var(--font-size-larger);
525
575
  color: var(--core-primary-5);
@@ -132,6 +132,7 @@ html.desktop-active .fsbl-tab-title-text {
132
132
  color: var(--titleBar-active-font-color);
133
133
  }
134
134
 
135
+ /* This class applies to a tab that is ALONE and active. For tabs that have neighbors, see .fsbl-tab */
135
136
  .fsbl-header-title {
136
137
  position: relative;
137
138
  height: 100%;
@@ -143,7 +144,7 @@ html.desktop-active .fsbl-tab-title-text {
143
144
  transition: background-color 0.2s ease;
144
145
  border-top-left-radius: 10px;
145
146
  border-top-right-radius: 10px;
146
- background-color: var(--titlebar-tab-inactive-background-color);
147
+ background-color: var(--titlebar-tab-active-background-color);
147
148
  }
148
149
 
149
150
  .fsbl-header-title:hover {