@finsemble/finsemble-ui 6.1.4 → 6.3.0-beta.20211008

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 (814) hide show
  1. package/package.json +26 -22
  2. package/react/actions/smartDesktopDesignerActions.d.ts +7 -7
  3. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  4. package/react/actions/toolbarActions.d.ts +2 -3
  5. package/react/actions/toolbarActions.js.map +1 -1
  6. package/react/assets/css/defaultTheme.css +1 -1
  7. package/react/assets/css/notificationsCenter.css +5 -2
  8. package/react/assets/css/userPreferences.css +5 -2
  9. package/react/assets/css/windowTitleBar.css +34 -1
  10. package/react/assets/icons/check-square.svg +6 -0
  11. package/react/assets/icons/lock.svg +6 -0
  12. package/react/components/FinsembleProvider.js +1 -1
  13. package/react/components/FinsembleProvider.js.map +1 -1
  14. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  15. package/react/components/appCatalog/components/AppList.d.ts +7 -1
  16. package/react/components/appCatalog/components/AppList.js +1 -1
  17. package/react/components/appCatalog/components/AppList.js.map +1 -1
  18. package/react/components/appCatalog/components/AppResults.d.ts +10 -8
  19. package/react/components/appCatalog/components/AppResults.js +1 -1
  20. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  21. package/react/components/appCatalog/components/Carousel.js +1 -1
  22. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  23. package/react/components/appCatalog/components/EmptyResults.d.ts +2 -1
  24. package/react/components/appCatalog/components/EmptyResults.js +2 -4
  25. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  26. package/react/components/appCatalog/components/Hero.d.ts +24 -4
  27. package/react/components/appCatalog/components/Hero.js +2 -1
  28. package/react/components/appCatalog/components/Hero.js.map +1 -1
  29. package/react/components/appCatalog/components/Home.d.ts +18 -4
  30. package/react/components/appCatalog/components/Home.js.map +1 -1
  31. package/react/components/appCatalog/components/SearchBar.d.ts +20 -7
  32. package/react/components/appCatalog/components/SearchBar.js +4 -7
  33. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  34. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -3
  35. package/react/components/appCatalog/components/Showcase/AppDescription.js +4 -6
  36. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  37. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +5 -4
  38. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  39. package/react/components/appCatalog/components/Showcase/AppShowcase.js +1 -1
  40. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  41. package/react/components/appCatalog/components/Showcase/Header.d.ts +13 -5
  42. package/react/components/appCatalog/components/Showcase/Header.js +2 -2
  43. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  44. package/react/components/appCatalog/components/Showcase/Modal.d.ts +7 -4
  45. package/react/components/appCatalog/components/Showcase/Modal.js +6 -6
  46. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  47. package/react/components/appCatalog/components/Showcase/defaults.d.ts +3 -3
  48. package/react/components/appCatalog/components/Showcase/defaults.js.map +1 -1
  49. package/react/components/appCatalog/components/Tag.d.ts +6 -4
  50. package/react/components/appCatalog/components/Tag.js.map +1 -1
  51. package/react/components/appCatalog/components/Toast.d.ts +5 -3
  52. package/react/components/appCatalog/components/Toast.js +5 -4
  53. package/react/components/appCatalog/components/Toast.js.map +1 -1
  54. package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -1
  55. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  56. package/react/components/appCatalog/modules/FDC3.d.ts +12 -11
  57. package/react/components/appCatalog/modules/FDC3.js +20 -18
  58. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  59. package/react/components/appCatalog/stores/appStore.d.ts +9 -2
  60. package/react/components/appCatalog/stores/appStore.js +10 -4
  61. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  62. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  63. package/react/components/common/Button.d.ts +5 -4
  64. package/react/components/common/Button.js +2 -2
  65. package/react/components/common/Button.js.map +1 -1
  66. package/react/components/common/ButtonIcon.js +1 -1
  67. package/react/components/common/ButtonIcon.js.map +1 -1
  68. package/react/components/common/ButtonRow.d.ts +15 -0
  69. package/react/components/common/ButtonRow.js +32 -0
  70. package/react/components/common/ButtonRow.js.map +1 -0
  71. package/react/components/common/Checkbox.d.ts +8 -0
  72. package/react/components/common/Checkbox.js +22 -0
  73. package/react/components/common/Checkbox.js.map +1 -0
  74. package/react/components/common/ColorPicker.js +1 -1
  75. package/react/components/common/ColorPicker.js.map +1 -1
  76. package/react/components/common/DropZone.d.ts +0 -5
  77. package/react/components/common/DropZone.js.map +1 -1
  78. package/react/components/common/DropdownButton.js +1 -1
  79. package/react/components/common/DropdownButton.js.map +1 -1
  80. package/react/components/common/FileInput.d.ts +0 -5
  81. package/react/components/common/FileInput.js +7 -9
  82. package/react/components/common/FileInput.js.map +1 -1
  83. package/react/components/common/FinsembleIcon.d.ts +2 -2
  84. package/react/components/common/FinsembleIcon.js +4 -0
  85. package/react/components/common/FinsembleIcon.js.map +1 -1
  86. package/react/components/common/FinsembleSelect.d.ts +3 -2
  87. package/react/components/common/FinsembleSelect.js +3 -6
  88. package/react/components/common/FinsembleSelect.js.map +1 -1
  89. package/react/components/common/FinsembleToggle.js +2 -2
  90. package/react/components/common/FinsembleToggle.js.map +1 -1
  91. package/react/components/common/FontSizeSelector.js +2 -2
  92. package/react/components/common/FontSizeSelector.js.map +1 -1
  93. package/react/components/common/ImagePreview.js +2 -2
  94. package/react/components/common/ImagePreview.js.map +1 -1
  95. package/react/components/common/Tab.js +2 -1
  96. package/react/components/common/Tab.js.map +1 -1
  97. package/react/components/common/Tooltip.d.ts +4 -3
  98. package/react/components/common/Tooltip.js +3 -3
  99. package/react/components/common/Tooltip.js.map +1 -1
  100. package/react/components/common/css/tooltip.css +10 -0
  101. package/react/components/common/file_helpers.js +3 -2
  102. package/react/components/common/file_helpers.js.map +1 -1
  103. package/react/components/common/helpers.js +20 -10
  104. package/react/components/common/helpers.js.map +1 -1
  105. package/react/components/common/stories/Button.stories.js +1 -1
  106. package/react/components/common/stories/Button.stories.js.map +1 -1
  107. package/react/components/common/stories/ButtonIcon.stories.js +1 -1
  108. package/react/components/common/stories/ButtonIcon.stories.js.map +1 -1
  109. package/react/components/common/stories/ButtonRow.stories.d.ts +14 -0
  110. package/react/components/common/stories/ButtonRow.stories.js +39 -0
  111. package/react/components/common/stories/ButtonRow.stories.js.map +1 -0
  112. package/react/components/common/stories/ButtonTile.stories.js +1 -1
  113. package/react/components/common/stories/ButtonTile.stories.js.map +1 -1
  114. package/react/components/common/stories/Checkbox.stories.d.ts +13 -0
  115. package/react/components/common/stories/Checkbox.stories.js +29 -0
  116. package/react/components/common/stories/Checkbox.stories.js.map +1 -0
  117. package/react/components/common/stories/ColorPicker.stories.js +1 -1
  118. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  119. package/react/components/common/stories/DropZone.stories.js +1 -1
  120. package/react/components/common/stories/DropZone.stories.js.map +1 -1
  121. package/react/components/common/stories/DropdownButton.stories.d.ts +22 -0
  122. package/react/components/common/stories/DropdownButton.stories.js +29 -0
  123. package/react/components/common/stories/DropdownButton.stories.js.map +1 -0
  124. package/react/components/common/stories/FinsembleIcon.stories.js +2 -0
  125. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  126. package/react/components/common/stories/FinsembleSelect.stories.d.ts +1 -1
  127. package/react/components/common/stories/FinsembleSelect.stories.js +1 -1
  128. package/react/components/common/stories/FinsembleSelect.stories.js.map +1 -1
  129. package/react/components/common/stories/FinsembleToggle.stories.js +3 -1
  130. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  131. package/react/components/common/stories/FontSizeSelector.stories.js +1 -1
  132. package/react/components/common/stories/FontSizeSelector.stories.js.map +1 -1
  133. package/react/components/common/stories/Header.stories.js +1 -1
  134. package/react/components/common/stories/Header.stories.js.map +1 -1
  135. package/react/components/common/stories/Tooltip.stories.d.ts +1 -1
  136. package/react/components/{shared/addProtocolToValidURL.spec.d.ts → common/tests/ButtonRow.spec.d.ts} +0 -0
  137. package/react/components/common/tests/ButtonRow.spec.js +25 -0
  138. package/react/components/common/tests/ButtonRow.spec.js.map +1 -0
  139. package/react/components/common/tests/Checkbox.spec.d.ts +1 -0
  140. package/react/components/common/tests/Checkbox.spec.js +33 -0
  141. package/react/components/common/tests/Checkbox.spec.js.map +1 -0
  142. package/react/components/common/tests/ColorPicker.spec.js +6 -6
  143. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  144. package/react/components/common/tests/DropZone.spec.js +4 -4
  145. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  146. package/react/components/common/tests/FileInput.spec.js +5 -5
  147. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  148. package/react/components/common/tests/FinsembleSelect.spec.js +12 -11
  149. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  150. package/react/components/common/tests/FinsembleToggle.spec.js +8 -2
  151. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  152. package/react/components/common/tests/Header.spec.js +3 -3
  153. package/react/components/common/tests/Header.spec.js.map +1 -1
  154. package/react/components/common/tests/ImagePreview.spec.js +8 -8
  155. package/react/components/common/tests/ImagePreview.spec.js.map +1 -1
  156. package/react/components/common/tests/Tab.spec.js +3 -3
  157. package/react/components/common/tests/Tab.spec.js.map +1 -1
  158. package/react/components/common/tests/Tooltip.spec.js +5 -5
  159. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  160. package/react/components/favorites/FavoriteMaker.d.ts +0 -5
  161. package/react/components/favorites/FavoriteMaker.js +1 -1
  162. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  163. package/react/components/favorites/FavoritesShell.js +1 -1
  164. package/react/components/favorites/FavoritesShell.js.map +1 -1
  165. package/react/components/favorites/FavoritesShell.spec.js +7 -7
  166. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  167. package/react/components/favorites/FavoritesShell.stories.js +5 -4
  168. package/react/components/favorites/FavoritesShell.stories.js.map +1 -1
  169. package/react/components/fdc3Resolver/ResolverContainer.js +2 -1
  170. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  171. package/react/components/fdc3Resolver/ResolverDialog.css +1 -0
  172. package/react/components/fdc3Resolver/ResolverDialog.js +15 -16
  173. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  174. package/react/components/fdc3Resolver/ResolverDialog.spec.js +6 -13
  175. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  176. package/react/components/fdc3Resolver/ResolverDialog.stories.js +46 -46
  177. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  178. package/react/components/icon/Icon.js +5 -4
  179. package/react/components/icon/Icon.js.map +1 -1
  180. package/react/components/legacyControls/FinsembleDialogButton.d.ts +1 -1
  181. package/react/components/legacyControls/FinsembleDialogButton.js +4 -3
  182. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  183. package/react/components/legacyControls/FinsembleDialogQuestion.js +2 -1
  184. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  185. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +1 -1
  186. package/react/components/legacyControls/FinsembleDialogTextInput.js +8 -5
  187. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  188. package/react/components/legacyControls/FinsembleDnDContext.js +18 -17
  189. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  190. package/react/components/legacyControls/FinsembleDraggable.js +3 -3
  191. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  192. package/react/components/legacyControls/FinsembleHoverDetector.js +2 -1
  193. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  194. package/react/components/legacyControls/FinsembleMenuSection.js +6 -3
  195. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  196. package/react/components/legacyControls/stories/FinsembleDialog.stories.js +1 -1
  197. package/react/components/legacyControls/stories/FinsembleDialog.stories.js.map +1 -1
  198. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js +1 -1
  199. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js.map +1 -1
  200. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js +1 -1
  201. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js.map +1 -1
  202. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js +1 -1
  203. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js.map +1 -1
  204. package/react/components/legacyControls/tests/FinsembleDialog.spec.js +1 -1
  205. package/react/components/legacyControls/tests/FinsembleDialog.spec.js.map +1 -1
  206. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +8 -7
  207. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  208. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js +7 -5
  209. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js.map +1 -1
  210. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +13 -12
  211. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  212. package/react/components/linker/LinkerMenu.js +4 -3
  213. package/react/components/linker/LinkerMenu.js.map +1 -1
  214. package/react/components/linker/LinkerMenuDeprecated.js +1 -1
  215. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  216. package/react/components/linker/remoteRedux.d.ts +10 -42
  217. package/react/components/linker/remoteRedux.js.map +1 -1
  218. package/react/components/menu/Menu.d.ts +1 -1
  219. package/react/components/menu/Menu.js +1 -1
  220. package/react/components/menu/Menu.js.map +1 -1
  221. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  222. package/react/components/menu/MenuPortal.js +7 -6
  223. package/react/components/menu/MenuPortal.js.map +1 -1
  224. package/react/components/menu/keyboardNavigation.js +14 -15
  225. package/react/components/menu/keyboardNavigation.js.map +1 -1
  226. package/react/components/notifications/components/NoNotifications.js +2 -4
  227. package/react/components/notifications/components/NoNotifications.js.map +1 -1
  228. package/react/components/notifications/components/drawer/Drawer.js +2 -4
  229. package/react/components/notifications/components/drawer/Drawer.js.map +1 -1
  230. package/react/components/notifications/components/drawer/DrawerControls.js +2 -4
  231. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  232. package/react/components/notifications/components/drawer/DrawerHeader.js +3 -6
  233. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  234. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +55 -69
  235. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  236. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +14 -15
  237. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  238. package/react/components/notifications/components/shared/CheckButton.d.ts +2 -2
  239. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  240. package/react/components/notifications/components/shared/IconButton.js +3 -5
  241. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  242. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +3 -2
  243. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  244. package/react/components/notifications/components/shared/OverflowMenu.d.ts +2 -1
  245. package/react/components/notifications/components/shared/OverflowMenu.js +6 -5
  246. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  247. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.d.ts +3 -2
  248. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js +1 -1
  249. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  250. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.d.ts +3 -2
  251. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  252. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.d.ts +3 -2
  253. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js +2 -4
  254. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  255. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.d.ts +3 -2
  256. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  257. package/react/components/notifications/components/views/CardView.js +15 -24
  258. package/react/components/notifications/components/views/CardView.js.map +1 -1
  259. package/react/components/notifications/components/views/ListView.d.ts +2 -2
  260. package/react/components/notifications/components/views/ListView.js +10 -10
  261. package/react/components/notifications/components/views/ListView.js.map +1 -1
  262. package/react/components/notifications/components/views/NotificationDetailsView.d.ts +2 -2
  263. package/react/components/notifications/components/views/NotificationDetailsView.js +5 -8
  264. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  265. package/react/components/notifications/constants.d.ts +13 -0
  266. package/react/components/notifications/constants.js.map +1 -1
  267. package/react/components/notifications/types.d.ts +7 -6
  268. package/react/components/notifications/types.js.map +1 -1
  269. package/react/components/notifications/utils.d.ts +6 -4
  270. package/react/components/notifications/utils.js +26 -32
  271. package/react/components/notifications/utils.js.map +1 -1
  272. package/react/components/processMonitor/ProcessMonitor.d.ts +3 -1
  273. package/react/components/processMonitor/ProcessMonitor.js +17 -10
  274. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  275. package/react/components/processMonitor/ProcessMonitorTypes.d.ts +33 -0
  276. package/react/components/processMonitor/ProcessMonitorTypes.js +6 -0
  277. package/react/components/processMonitor/ProcessMonitorTypes.js.map +1 -0
  278. package/react/components/processMonitor/components/ChildWindow.d.ts +10 -3
  279. package/react/components/processMonitor/components/ChildWindow.js +19 -10
  280. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  281. package/react/components/processMonitor/components/ListHeader.d.ts +17 -4
  282. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  283. package/react/components/processMonitor/components/ProcessStatistics.d.ts +11 -3
  284. package/react/components/processMonitor/components/ProcessStatistics.js +25 -18
  285. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  286. package/react/components/processMonitor/constants.d.ts +11 -16
  287. package/react/components/processMonitor/constants.js +3 -1
  288. package/react/components/processMonitor/constants.js.map +1 -1
  289. package/react/components/processMonitor/helpers.d.ts +25 -5
  290. package/react/components/processMonitor/helpers.js +28 -20
  291. package/react/components/processMonitor/helpers.js.map +1 -1
  292. package/react/components/processMonitor/helpers.spec.d.ts +1 -0
  293. package/react/components/processMonitor/helpers.spec.js +44 -0
  294. package/react/components/processMonitor/helpers.spec.js.map +1 -0
  295. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +30 -15
  296. package/react/components/processMonitor/stores/ProcessMonitorStore.js +101 -86
  297. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  298. package/react/components/quickComponentForm/QuickComponentForm.d.ts +4 -1
  299. package/react/components/quickComponentForm/QuickComponentForm.js +13 -14
  300. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  301. package/react/components/search/Highlight.js +13 -3
  302. package/react/components/search/Highlight.js.map +1 -1
  303. package/react/components/search/Highlight.spec.js +3 -3
  304. package/react/components/search/Highlight.spec.js.map +1 -1
  305. package/react/components/search/Highlight.stories.js +1 -1
  306. package/react/components/search/Highlight.stories.js.map +1 -1
  307. package/react/components/search/Search.js +17 -8
  308. package/react/components/search/Search.js.map +1 -1
  309. package/react/components/search/SearchBestMatch.js +2 -1
  310. package/react/components/search/SearchBestMatch.js.map +1 -1
  311. package/react/components/search/SearchProviderResults.js +4 -5
  312. package/react/components/search/SearchProviderResults.js.map +1 -1
  313. package/react/components/search/SearchResult.js +3 -2
  314. package/react/components/search/SearchResult.js.map +1 -1
  315. package/react/components/search/SearchResults.js +1 -1
  316. package/react/components/search/SearchResults.js.map +1 -1
  317. package/react/components/shared/Button.js +2 -4
  318. package/react/components/shared/Button.js.map +1 -1
  319. package/react/components/shared/DefaultDropdownButton.d.ts +1 -0
  320. package/react/components/shared/DefaultDropdownButton.js +14 -4
  321. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  322. package/react/components/shared/NavigationButton.js +9 -11
  323. package/react/components/shared/NavigationButton.js.map +1 -1
  324. package/react/components/shared/Tag.d.ts +11 -1
  325. package/react/components/shared/Tag.js.map +1 -1
  326. package/react/components/shared/TagsMenu.d.ts +26 -6
  327. package/react/components/shared/TagsMenu.js.map +1 -1
  328. package/react/components/shared/linkerUtil.d.ts +3 -1
  329. package/react/components/shared/linkerUtil.js.map +1 -1
  330. package/react/components/shared/tests/DefaultDropdownButton.spec.d.ts +1 -0
  331. package/react/components/shared/tests/DefaultDropdownButton.spec.js +54 -0
  332. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -0
  333. package/react/components/shared/tests/addProtocolToValidURL.spec.d.ts +1 -0
  334. package/react/components/shared/{addProtocolToValidURL.spec.js → tests/addProtocolToValidURL.spec.js} +1 -1
  335. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -0
  336. package/react/components/singleInputDialog/SingleInputDialog.spec.js +6 -6
  337. package/react/components/singleInputDialog/SingleInputDialog.spec.js.map +1 -1
  338. package/react/components/singleInputDialog/SingleInputDialog.stories.js +1 -1
  339. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  340. package/react/components/smartDesktopDesigner/AppEditAccess.d.ts +15 -0
  341. package/react/components/smartDesktopDesigner/AppEditAccess.js +138 -0
  342. package/react/components/smartDesktopDesigner/AppEditAccess.js.map +1 -0
  343. package/react/components/smartDesktopDesigner/AppEditPage.d.ts +9 -3
  344. package/react/components/smartDesktopDesigner/AppEditPage.js +5 -1
  345. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  346. package/react/components/smartDesktopDesigner/Appearance.js +3 -5
  347. package/react/components/smartDesktopDesigner/Appearance.js.map +1 -1
  348. package/react/components/smartDesktopDesigner/Application.d.ts +7 -4
  349. package/react/components/smartDesktopDesigner/Application.js +85 -83
  350. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  351. package/react/components/smartDesktopDesigner/ApplicationEdit.d.ts +3 -0
  352. package/react/components/smartDesktopDesigner/ApplicationEdit.js +68 -51
  353. package/react/components/smartDesktopDesigner/ApplicationEdit.js.map +1 -1
  354. package/react/components/smartDesktopDesigner/ApplicationList.d.ts +4 -2
  355. package/react/components/smartDesktopDesigner/ApplicationList.js +33 -20
  356. package/react/components/smartDesktopDesigner/ApplicationList.js.map +1 -1
  357. package/react/components/smartDesktopDesigner/ApplicationSetup.d.ts +7 -1
  358. package/react/components/smartDesktopDesigner/ApplicationSetup.js +8 -20
  359. package/react/components/smartDesktopDesigner/ApplicationSetup.js.map +1 -1
  360. package/react/components/smartDesktopDesigner/Applications.d.ts +2 -1
  361. package/react/components/smartDesktopDesigner/Applications.js +73 -62
  362. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  363. package/react/components/smartDesktopDesigner/Authentication.js +2 -8
  364. package/react/components/smartDesktopDesigner/Authentication.js.map +1 -1
  365. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js +1 -8
  366. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js.map +1 -1
  367. package/react/components/smartDesktopDesigner/Content.js.map +1 -1
  368. package/react/components/smartDesktopDesigner/CurrentView.js +1 -1
  369. package/react/components/smartDesktopDesigner/CurrentView.js.map +1 -1
  370. package/react/components/smartDesktopDesigner/Export.js +3 -3
  371. package/react/components/smartDesktopDesigner/Export.js.map +1 -1
  372. package/react/components/smartDesktopDesigner/ExportCloud.js +1 -1
  373. package/react/components/smartDesktopDesigner/ExportCloud.js.map +1 -1
  374. package/react/components/smartDesktopDesigner/ExportDeployInfo.js +1 -1
  375. package/react/components/smartDesktopDesigner/ExportDeployInfo.js.map +1 -1
  376. package/react/components/smartDesktopDesigner/ExportZip.js +0 -1
  377. package/react/components/smartDesktopDesigner/ExportZip.js.map +1 -1
  378. package/react/components/smartDesktopDesigner/GettingStarted.d.ts +1 -1
  379. package/react/components/smartDesktopDesigner/GettingStarted.js +1 -1
  380. package/react/components/smartDesktopDesigner/GettingStarted.js.map +1 -1
  381. package/react/components/smartDesktopDesigner/ProjectHeader.d.ts +1 -1
  382. package/react/components/smartDesktopDesigner/ProjectHeader.js +1 -1
  383. package/react/components/smartDesktopDesigner/ProjectHeader.js.map +1 -1
  384. package/react/components/smartDesktopDesigner/Publish.js +1 -1
  385. package/react/components/smartDesktopDesigner/Publish.js.map +1 -1
  386. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +0 -11
  387. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +11 -24
  388. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  389. package/react/components/smartDesktopDesigner/Themes.js +2 -8
  390. package/react/components/smartDesktopDesigner/Themes.js.map +1 -1
  391. package/react/components/smartDesktopDesigner/View.js.map +1 -1
  392. package/react/components/smartDesktopDesigner/common/getCSSVars.d.ts +1 -1
  393. package/react/components/smartDesktopDesigner/common/getCSSVars.js +2 -1
  394. package/react/components/smartDesktopDesigner/common/getCSSVars.js.map +1 -1
  395. package/react/components/smartDesktopDesigner/common/views.d.ts +1 -1
  396. package/react/components/smartDesktopDesigner/common/views.js +6 -14
  397. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  398. package/react/components/smartDesktopDesigner/css/applications.css +38 -0
  399. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js +20 -2
  400. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js.map +1 -1
  401. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js +10 -1
  402. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js.map +1 -1
  403. package/react/components/smartDesktopDesigner/fixtures/applicationsProps.js +6 -3
  404. package/react/components/smartDesktopDesigner/fixtures/applicationsProps.js.map +1 -1
  405. package/react/components/smartDesktopDesigner/fixtures/apps.d.ts +5 -2
  406. package/react/components/smartDesktopDesigner/fixtures/apps.js +15 -15
  407. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  408. package/react/components/smartDesktopDesigner/fixtures/exportProps.js.map +1 -1
  409. package/react/components/smartDesktopDesigner/fixtures/publishProgress.d.ts +2 -1
  410. package/react/components/smartDesktopDesigner/fixtures/publishProgress.js.map +1 -1
  411. package/react/components/smartDesktopDesigner/fixtures/views.js +4 -4
  412. package/react/components/smartDesktopDesigner/fixtures/views.js.map +1 -1
  413. package/react/components/smartDesktopDesigner/sdd_helpers.js +2 -1
  414. package/react/components/smartDesktopDesigner/sdd_helpers.js.map +1 -1
  415. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.d.ts +3 -4
  416. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js +22 -2
  417. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  418. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js +7 -7
  419. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js.map +1 -1
  420. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js +3 -7
  421. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js.map +1 -1
  422. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js +9 -2
  423. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js.map +1 -1
  424. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js +3 -10
  425. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js.map +1 -1
  426. package/react/components/smartDesktopDesigner/stories/Applications.stories.js +3 -2
  427. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  428. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js +7 -14
  429. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js.map +1 -1
  430. package/react/components/smartDesktopDesigner/stories/Export.stories.js +2 -2
  431. package/react/components/smartDesktopDesigner/stories/Export.stories.js.map +1 -1
  432. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js +2 -2
  433. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js.map +1 -1
  434. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js +5 -11
  435. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js.map +1 -1
  436. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.d.ts +1 -1
  437. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js +1 -1
  438. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js.map +1 -1
  439. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js +1 -1
  440. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js.map +1 -1
  441. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js +2 -4
  442. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js.map +1 -1
  443. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.d.ts +1 -1
  444. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js +1 -1
  445. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js.map +1 -1
  446. package/react/components/smartDesktopDesigner/stories/Publish.stories.js +13 -28
  447. package/react/components/smartDesktopDesigner/stories/Publish.stories.js.map +1 -1
  448. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js +1 -1
  449. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js.map +1 -1
  450. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js +3 -3
  451. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js.map +1 -1
  452. package/react/components/smartDesktopDesigner/stories/Themes.stories.js +1 -1
  453. package/react/components/smartDesktopDesigner/stories/Themes.stories.js.map +1 -1
  454. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js +33 -32
  455. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  456. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js +6 -5
  457. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js.map +1 -1
  458. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js +11 -11
  459. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js.map +1 -1
  460. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js +9 -7
  461. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js.map +1 -1
  462. package/react/components/smartDesktopDesigner/tests/Applications.spec.d.ts +1 -1
  463. package/react/components/smartDesktopDesigner/tests/Applications.spec.js +118 -41
  464. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  465. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js +6 -18
  466. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js.map +1 -1
  467. package/react/components/smartDesktopDesigner/tests/Export.spec.js +14 -22
  468. package/react/components/smartDesktopDesigner/tests/Export.spec.js.map +1 -1
  469. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js +2 -6
  470. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js.map +1 -1
  471. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js +2 -2
  472. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js.map +1 -1
  473. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js +2 -2
  474. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js.map +1 -1
  475. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js +2 -2
  476. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js.map +1 -1
  477. package/react/components/smartDesktopDesigner/tests/Publish.spec.js +3 -10
  478. package/react/components/smartDesktopDesigner/tests/Publish.spec.js.map +1 -1
  479. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js +2 -6
  480. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js.map +1 -1
  481. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js +3 -3
  482. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js.map +1 -1
  483. package/react/components/smartDesktopDesigner/tests/Themes.spec.js +7 -7
  484. package/react/components/smartDesktopDesigner/tests/Themes.spec.js.map +1 -1
  485. package/react/components/smartDesktopDesigner/tests/a11y_helper.js +2 -1
  486. package/react/components/smartDesktopDesigner/tests/a11y_helper.js.map +1 -1
  487. package/react/components/system/System.spec.js +1 -1
  488. package/react/components/system/System.spec.js.map +1 -1
  489. package/react/components/system/SystemTrayComponentShell.js +1 -1
  490. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  491. package/react/components/toolbar/MinimizeAll.spec.js +5 -5
  492. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  493. package/react/components/toolbar/NotificationControl.js +3 -2
  494. package/react/components/toolbar/NotificationControl.js.map +1 -1
  495. package/react/components/toolbar/RevealAll.spec.js +5 -5
  496. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  497. package/react/components/toolbar/ToolbarIcon.js +14 -2
  498. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  499. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +22 -5
  500. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +11 -6
  501. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  502. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js +21 -9
  503. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  504. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +33 -10
  505. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +24 -3
  506. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  507. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +3 -3
  508. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +0 -3
  509. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  510. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +24 -8
  511. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +4 -2
  512. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  513. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +18 -4
  514. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +5 -4
  515. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  516. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.d.ts +14 -6
  517. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js +2 -2
  518. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js.map +1 -1
  519. package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +34 -13
  520. package/react/components/toolbar/advancedAppLauncher/components/Content.js +22 -29
  521. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  522. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +15 -5
  523. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -3
  524. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  525. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +38 -21
  526. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +14 -9
  527. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  528. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +18 -3
  529. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +7 -3
  530. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  531. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.d.ts +10 -3
  532. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js +1 -3
  533. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js.map +1 -1
  534. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.d.ts +15 -6
  535. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +11 -6
  536. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  537. package/react/components/toolbar/advancedAppLauncher/components/SortBy.d.ts +11 -4
  538. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js +3 -2
  539. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js.map +1 -1
  540. package/react/components/toolbar/advancedAppLauncher/components/TagsList.d.ts +18 -6
  541. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js +2 -2
  542. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js.map +1 -1
  543. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +20 -4
  544. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +2 -4
  545. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  546. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -1
  547. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  548. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +15 -10
  549. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  550. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.d.ts +5 -2
  551. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js +1 -1
  552. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js.map +1 -1
  553. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +5 -4
  554. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  555. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +7 -6
  556. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +11 -13
  557. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  558. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +3 -3
  559. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +1 -1
  560. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  561. package/react/components/toolbar/appLauncher/DynamicAppLauncher.js.map +1 -1
  562. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +25 -3
  563. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +3 -10
  564. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  565. package/react/components/toolbar/appLauncher/components/componentList.d.ts +34 -6
  566. package/react/components/toolbar/appLauncher/components/componentList.js +24 -21
  567. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  568. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +32 -32
  569. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +37 -55
  570. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  571. package/react/components/toolbar/dashbar/Dashbar.js +24 -13
  572. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  573. package/react/components/toolbar/dashbar/DashbarItem.js +1 -1
  574. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  575. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +28 -5
  576. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +17 -23
  577. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  578. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +25 -3
  579. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  580. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +13 -8
  581. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +2 -2
  582. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  583. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +16 -8
  584. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +0 -3
  585. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  586. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +65 -11
  587. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +95 -145
  588. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  589. package/react/components/userPreferences/UserPreferenceTypes.d.ts +5 -0
  590. package/react/components/userPreferences/UserPreferenceTypes.js +2 -0
  591. package/react/components/userPreferences/UserPreferenceTypes.js.map +1 -0
  592. package/react/components/userPreferences/UserPreferences.js +8 -23
  593. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  594. package/react/components/userPreferences/UserPreferencesBase.d.ts +3 -1
  595. package/react/components/userPreferences/UserPreferencesBase.js +5 -6
  596. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  597. package/react/components/userPreferences/UserPreferencesWrapper.d.ts +4 -0
  598. package/react/components/userPreferences/UserPreferencesWrapper.js +27 -0
  599. package/react/components/userPreferences/UserPreferencesWrapper.js.map +1 -0
  600. package/react/components/userPreferences/components/ContentSection.d.ts +18 -3
  601. package/react/components/userPreferences/components/ContentSection.js +6 -3
  602. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  603. package/react/components/userPreferences/components/LeftNav.d.ts +19 -4
  604. package/react/components/userPreferences/components/LeftNav.js +12 -11
  605. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  606. package/react/components/userPreferences/components/content/DashbarEditor.d.ts +20 -5
  607. package/react/components/userPreferences/components/content/DashbarEditor.js +11 -11
  608. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  609. package/react/components/userPreferences/components/content/DashbarEditorItem.d.ts +10 -0
  610. package/react/components/userPreferences/components/content/DashbarEditorItem.js +11 -0
  611. package/react/components/userPreferences/components/content/DashbarEditorItem.js.map +1 -0
  612. package/react/components/userPreferences/components/content/General.d.ts +10 -3
  613. package/react/components/userPreferences/components/content/General.js +2 -2
  614. package/react/components/userPreferences/components/content/General.js.map +1 -1
  615. package/react/components/userPreferences/components/content/Notifications.js +2 -0
  616. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  617. package/react/components/userPreferences/components/content/Workspaces.js +51 -113
  618. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  619. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +56 -61
  620. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  621. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.d.ts +1 -1
  622. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +17 -15
  623. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  624. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.d.ts +3 -1
  625. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +15 -16
  626. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  627. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js +6 -6
  628. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  629. package/react/components/userPreferences/components/general/ScheduledRestart.d.ts +24 -7
  630. package/react/components/userPreferences/components/general/ScheduledRestart.js +71 -23
  631. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  632. package/react/components/userPreferences/components/workspaces/WorkspaceButton.d.ts +8 -0
  633. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +9 -0
  634. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -0
  635. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.d.ts +6 -0
  636. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js +11 -0
  637. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js.map +1 -0
  638. package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +45 -0
  639. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +89 -0
  640. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -0
  641. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.d.ts +8 -0
  642. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js +21 -0
  643. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js.map +1 -0
  644. package/react/components/userPreferences/index.d.ts +1 -1
  645. package/react/components/userPreferences/index.js +1 -1
  646. package/react/components/userPreferences/index.js.map +1 -1
  647. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +12 -13
  648. package/react/components/userPreferences/stores/UserPreferencesStore.js +13 -25
  649. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  650. package/react/components/userPreferences/stories/DashbarEditor.stories.d.ts +2 -1
  651. package/react/components/userPreferences/stories/DashbarEditor.stories.js +35 -4
  652. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  653. package/react/components/userPreferences/stories/DashbarEditorItem.stories.d.ts +11 -0
  654. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js +21 -0
  655. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js.map +1 -0
  656. package/react/components/userPreferences/stories/General.stories.d.ts +9 -0
  657. package/react/components/userPreferences/stories/General.stories.js +16 -0
  658. package/react/components/userPreferences/stories/General.stories.js.map +1 -0
  659. package/react/components/userPreferences/stories/Notifications.stories.d.ts +9 -0
  660. package/react/components/userPreferences/stories/Notifications.stories.js +17 -0
  661. package/react/components/userPreferences/stories/Notifications.stories.js.map +1 -0
  662. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.d.ts +9 -0
  663. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js +20 -0
  664. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js.map +1 -0
  665. package/react/components/userPreferences/stories/NotificationsSources.stories.d.ts +12 -0
  666. package/react/components/userPreferences/stories/NotificationsSources.stories.js +28 -0
  667. package/react/components/userPreferences/stories/NotificationsSources.stories.js.map +1 -0
  668. package/react/components/userPreferences/stories/UserPreferences.stories.d.ts +8 -0
  669. package/react/components/userPreferences/stories/UserPreferences.stories.js +53 -0
  670. package/react/components/userPreferences/stories/UserPreferences.stories.js.map +1 -0
  671. package/react/components/userPreferences/stories/WorkspaceButton.stories.d.ts +11 -0
  672. package/react/components/userPreferences/stories/WorkspaceButton.stories.js +20 -0
  673. package/react/components/userPreferences/stories/WorkspaceButton.stories.js.map +1 -0
  674. package/react/components/userPreferences/stories/WorkspaceComponents.stories.d.ts +13 -0
  675. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js +26 -0
  676. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js.map +1 -0
  677. package/react/components/userPreferences/stories/WorkspaceItem.stories.d.ts +9 -0
  678. package/react/components/userPreferences/stories/WorkspaceItem.stories.js +30 -0
  679. package/react/components/userPreferences/stories/WorkspaceItem.stories.js.map +1 -0
  680. package/react/components/userPreferences/stories/WorkspaceItemList.stories.d.ts +10 -0
  681. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js +57 -0
  682. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js.map +1 -0
  683. package/react/components/userPreferences/stories/Workspaces.stories.d.ts +9 -0
  684. package/react/components/userPreferences/stories/Workspaces.stories.js +44 -0
  685. package/react/components/userPreferences/stories/Workspaces.stories.js.map +1 -0
  686. package/react/components/userPreferences/tests/ContentSection.spec.d.ts +1 -0
  687. package/react/components/userPreferences/tests/ContentSection.spec.js +41 -0
  688. package/react/components/userPreferences/tests/ContentSection.spec.js.map +1 -0
  689. package/react/components/userPreferences/tests/DashbarEditor.spec.d.ts +1 -0
  690. package/react/components/userPreferences/tests/DashbarEditor.spec.js +37 -0
  691. package/react/components/userPreferences/tests/DashbarEditor.spec.js.map +1 -0
  692. package/react/components/userPreferences/tests/DashbarEditorItem.spec.d.ts +1 -0
  693. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js +38 -0
  694. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js.map +1 -0
  695. package/react/components/userPreferences/tests/General.spec.d.ts +1 -0
  696. package/react/components/userPreferences/tests/General.spec.js +28 -0
  697. package/react/components/userPreferences/tests/General.spec.js.map +1 -0
  698. package/react/components/userPreferences/tests/LeftNav.spec.d.ts +1 -0
  699. package/react/components/userPreferences/tests/LeftNav.spec.js +12 -0
  700. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -0
  701. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.d.ts +1 -0
  702. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js +14 -0
  703. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js.map +1 -0
  704. package/react/components/userPreferences/tests/Notifications.spec.d.ts +1 -0
  705. package/react/components/userPreferences/tests/Notifications.spec.js +17 -0
  706. package/react/components/userPreferences/tests/Notifications.spec.js.map +1 -0
  707. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.d.ts +1 -0
  708. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +39 -0
  709. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -0
  710. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.d.ts +1 -0
  711. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js +22 -0
  712. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js.map +1 -0
  713. package/react/components/userPreferences/tests/ScheduledRestart.spec.d.ts +1 -0
  714. package/react/components/userPreferences/tests/ScheduledRestart.spec.js +70 -0
  715. package/react/components/userPreferences/tests/ScheduledRestart.spec.js.map +1 -0
  716. package/react/components/userPreferences/tests/WorkspaceButton.spec.d.ts +1 -0
  717. package/react/components/userPreferences/tests/WorkspaceButton.spec.js +38 -0
  718. package/react/components/userPreferences/tests/WorkspaceButton.spec.js.map +1 -0
  719. package/react/components/userPreferences/tests/WorkspaceComponents.spec.d.ts +1 -0
  720. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js +22 -0
  721. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js.map +1 -0
  722. package/react/components/userPreferences/tests/WorkspaceItem.spec.d.ts +1 -0
  723. package/react/components/userPreferences/tests/WorkspaceItem.spec.js +64 -0
  724. package/react/components/userPreferences/tests/WorkspaceItem.spec.js.map +1 -0
  725. package/react/components/userPreferences/tests/WorkspaceItemList.spec.d.ts +1 -0
  726. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js +45 -0
  727. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js.map +1 -0
  728. package/react/components/utils.js +1 -1
  729. package/react/components/utils.js.map +1 -1
  730. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +58 -31
  731. package/react/components/windowTitleBar/WindowTitleBarShell.js +47 -50
  732. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  733. package/react/components/windowTitleBar/components/center/Tab.d.ts +27 -7
  734. package/react/components/windowTitleBar/components/center/Tab.js +2 -2
  735. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  736. package/react/components/windowTitleBar/components/center/TabList.d.ts +43 -30
  737. package/react/components/windowTitleBar/components/center/TabList.js +111 -37
  738. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  739. package/react/components/windowTitleBar/components/left/LinkerButton.js +5 -4
  740. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  741. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +1 -21
  742. package/react/components/windowTitleBar/components/left/LinkerGroups.js +6 -8
  743. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  744. package/react/components/windowTitleBar/components/left/ShareButton.d.ts +1 -21
  745. package/react/components/windowTitleBar/components/right/CloseButton.d.ts +12 -25
  746. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  747. package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +17 -26
  748. package/react/components/windowTitleBar/components/right/GroupingButton.js +2 -2
  749. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  750. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +1 -21
  751. package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +12 -25
  752. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  753. package/react/components/windowTitleBar/components/windowTitle.js +11 -6
  754. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  755. package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +51 -44
  756. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +63 -56
  757. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  758. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.d.ts +42 -44
  759. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +1 -1
  760. package/react/components/windowTitleBar/windowTitleBarContext.d.ts +9 -9
  761. package/react/components/windowTitleBar/windowTitleBarContext.js +2 -4
  762. package/react/components/windowTitleBar/windowTitleBarContext.js.map +1 -1
  763. package/react/components/yesNoDialog/Timer.spec.js +2 -2
  764. package/react/components/yesNoDialog/Timer.spec.js.map +1 -1
  765. package/react/components/yesNoDialog/Timer.stories.js +1 -1
  766. package/react/components/yesNoDialog/Timer.stories.js.map +1 -1
  767. package/react/components/yesNoDialog/YesNoDialog.spec.js +5 -5
  768. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  769. package/react/components/yesNoDialog/YesNoDialog.stories.js +1 -1
  770. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  771. package/react/hooks/useFavoritesShell.js.map +1 -1
  772. package/react/hooks/useLinker.js +1 -1
  773. package/react/hooks/useLinker.js.map +1 -1
  774. package/react/hooks/useMenu.js +1 -1
  775. package/react/hooks/useMenu.js.map +1 -1
  776. package/react/hooks/useNotifications.d.ts +10 -6
  777. package/react/hooks/useNotifications.js +53 -47
  778. package/react/hooks/useNotifications.js.map +1 -1
  779. package/react/hooks/usePubSub.js.map +1 -1
  780. package/react/hooks/useSearch.js +1 -1
  781. package/react/hooks/useSearch.js.map +1 -1
  782. package/react/hooks/useToolbar.js +71 -48
  783. package/react/hooks/useToolbar.js.map +1 -1
  784. package/react/hooks/useWorkspace.js +1 -1
  785. package/react/hooks/useWorkspace.js.map +1 -1
  786. package/react/reducers/favoriteReducer.js +1 -1
  787. package/react/reducers/favoriteReducer.js.map +1 -1
  788. package/react/reducers/rootReducer.d.ts +3 -4
  789. package/react/reducers/toolbarReducer.js +1 -1
  790. package/react/reducers/toolbarReducer.js.map +1 -1
  791. package/react/store.d.ts +6 -7
  792. package/react/types/advancedAppLauncherTypes.d.ts +28 -1
  793. package/react/types/advancedAppLauncherTypes.js.map +1 -1
  794. package/react/types/dashbarTypes.d.ts +1 -1
  795. package/react/types/dashbarTypes.js.map +1 -1
  796. package/react/types/favoriteTypes.d.ts +1 -1
  797. package/react/types/favoriteTypes.js.map +1 -1
  798. package/react/types/fdc3.d.ts +28 -20
  799. package/react/types/fdc3.js.map +1 -1
  800. package/react/types/smartDesktopDesignerTypes.d.ts +13 -8
  801. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  802. package/react/types/windowTitleBar.d.ts +46 -0
  803. package/react/types/windowTitleBar.js +2 -0
  804. package/react/types/windowTitleBar.js.map +1 -0
  805. package/react/components/processMonitor/components/ChildWindows.d.ts +0 -4
  806. package/react/components/processMonitor/components/ChildWindows.js +0 -11
  807. package/react/components/processMonitor/components/ChildWindows.js.map +0 -1
  808. package/react/components/shared/addProtocolToValidURL.spec.js.map +0 -1
  809. package/react/components/toolbar/advancedAppLauncher/components/LeftNav.d.ts +0 -4
  810. package/react/components/toolbar/advancedAppLauncher/components/LeftNav.js +0 -14
  811. package/react/components/toolbar/advancedAppLauncher/components/LeftNav.js.map +0 -1
  812. package/react/components/userPreferences/components/Checkbox.d.ts +0 -4
  813. package/react/components/userPreferences/components/Checkbox.js +0 -27
  814. package/react/components/userPreferences/components/Checkbox.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useNotifications.js","sourceRoot":"","sources":["../../src/hooks/useNotifications.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useReducer } from \"react\";\r\nimport { INotification } from \"common/notifications/definitions/INotification\";\r\nimport IFilter from \"common/notifications/definitions/IFilter\";\r\nimport IMuteFilter from \"common/notifications/definitions/IMuteFilter\";\r\nimport { WindowConfig, NotificationsConfig } from \"../components/notifications/types\";\r\nimport { usePubSub } from \"./usePubSub\";\r\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../components/notifications/constants\";\r\nimport { INotificationHistoryOptions } from \"@finsemble/finsemble-core/src/common/notifications/definitions/INotificationHistoryOptions\";\r\n\r\nconst { WindowClient, NotificationClient } = FSBL.Clients;\r\n\r\nconst initialState: any = { notifications: [] };\r\n\r\n/*\r\nAction Types\r\n*/\r\nconst CREATE_MULTIPLE = \"CREATE_MULTIPLE\";\r\nconst UPDATE = \"UPDATE\";\r\nconst REMOVE = \"REMOVE\";\r\n\r\n/*\r\n\tReducer\r\n\t*/\r\nfunction reducer(state: { notifications: INotification[] }, action: { type: string; payload: any }) {\r\n\tswitch (action.type) {\r\n\t\tcase CREATE_MULTIPLE:\r\n\t\t\treturn {\r\n\t\t\t\tnotifications: [...state.notifications, ...action.payload],\r\n\t\t\t};\r\n\t\tcase UPDATE:\r\n\t\t\t// check to see if the notification exists if so update the values\r\n\t\t\tconst notificationExistsInArray = state.notifications.find(\r\n\t\t\t\t(notification: INotification) => notification.id === action.payload.id\r\n\t\t\t);\r\n\r\n\t\t\t//if the notification exists then do nothing and return the current state else add the the new notification to the state\r\n\t\t\tconst notifications = notificationExistsInArray\r\n\t\t\t\t? state.notifications.map((notification: INotification) =>\r\n\t\t\t\t\t\tnotification.id === action.payload.id ? action.payload : notification\r\n\t\t\t\t )\r\n\t\t\t\t: [action.payload, ...state.notifications];\r\n\r\n\t\t\treturn { notifications };\r\n\t\tcase REMOVE:\r\n\t\t\treturn {\r\n\t\t\t\tnotifications: state.notifications.filter((notification) => notification.id !== action.payload.id),\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\tthrow new Error();\r\n\t}\r\n}\r\n\r\nconst getActiveDescriptorsByType = (componentType: string): Promise<any[]> => {\r\n\treturn new Promise(async (resolve, reject) => {\r\n\t\tFSBL.Clients.LauncherClient.getActiveDescriptors((err: any, data: any) => {\r\n\t\t\tconst activeDescriptors: any[] = [];\r\n\t\t\tif (err) {\r\n\t\t\t\treject(err);\r\n\t\t\t} else {\r\n\t\t\t\tfor (const key in data) {\r\n\t\t\t\t\tif (data.hasOwnProperty(key) && data[key]?.componentType === componentType) {\r\n\t\t\t\t\t\tactiveDescriptors.push(data[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresolve(activeDescriptors);\r\n\t\t});\r\n\t});\r\n};\r\n\r\nlet toolbarWindowName: string;\r\n\r\nexport const moveToToolbarMonitor = async () => {\r\n\tconst getToolbarMonitorData = async () => {\r\n\t\treturn new Promise(async (resolve, reject) => {\r\n\t\t\tif (!toolbarWindowName) {\r\n\t\t\t\tconst activeDescriptors = await getActiveDescriptorsByType(\"Toolbar\");\r\n\t\t\t\ttoolbarWindowName = activeDescriptors[0]?.name;\r\n\t\t\t}\r\n\t\t\tconst { err, data } = (await FSBL.Clients.LauncherClient.getMonitorInfo({\r\n\t\t\t\twindowIdentifier: { windowName: toolbarWindowName },\r\n\t\t\t})) as any;\r\n\r\n\t\t\tif (err) {\r\n\t\t\t\tFSBL.Clients.Logger.error(\"Could not get Monitor info\", err);\r\n\t\t\t\treject(err);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tresolve(data);\r\n\t\t});\r\n\t};\r\n\r\n\tconst data = (await getToolbarMonitorData()) as any;\r\n\tconst bounds = (await finsembleWindow.getBounds({})) as any;\r\n\tconst width = bounds.data.right - bounds.data.left;\r\n\r\n\tfinsembleWindow.setBounds(\r\n\t\t{\r\n\t\t\tbounds: {\r\n\t\t\t\ttop: data[\"availableRect\"][\"top\"],\r\n\t\t\t\tleft: data[\"availableRect\"][\"right\"] - width,\r\n\t\t\t\theight: data[\"availableRect\"][\"height\"],\r\n\t\t\t\twidth: width,\r\n\t\t\t},\r\n\t\t},\r\n\t\t(err: any) => {\r\n\t\t\tif (err) {\r\n\t\t\t\tFSBL.Clients.Logger.error(\"Could not update position\", err);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n};\r\n\r\nexport const getOS = () => {\r\n\tif (navigator.platform.indexOf(\"Win\") != -1) {\r\n\t\treturn \"Windows\";\r\n\t} else if (navigator.platform.indexOf(\"Linux\") != -1) {\r\n\t\treturn \"Linux\";\r\n\t} else if (navigator.platform.indexOf(\"Mac\") != -1) {\r\n\t\treturn \"Mac\";\r\n\t}\r\n};\r\n\r\n/**\r\n * Example for setting up button clicks\r\n *\r\n * @param notification\r\n * @param action\r\n */\r\nexport const doAction = (notification: INotification, action: any) => {\r\n\ttry {\r\n\t\tNotificationClient.performAction([notification], action).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t\t// 1) alert user notification has been sent (action may not have completed)\r\n\t\t});\r\n\t} catch (e) {\r\n\t\t// NOTE: The request to perform the action has failed\r\n\t\tconsole.error(\"could not create a notification client\", e);\r\n\t\tFSBL.Clients.Logger.error(\"could not create a notification client\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Example for setting up button clicks\r\n *\r\n * @param filter\r\n */\r\nexport const mute = async (filter: IMuteFilter) => {\r\n\ttry {\r\n\t\tawait NotificationClient.mute(filter);\r\n\t} catch (e) {\r\n\t\t// NOTE: The request to perform the action has failed\r\n\t\tconsole.error(\"Could not save mute preferences\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not save mute preferences\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Example for setting up button clicks\r\n *\r\n * @param filter\r\n */\r\nexport const unmute = async (filter: IMuteFilter) => {\r\n\ttry {\r\n\t\tawait NotificationClient.unmute(filter);\r\n\t} catch (e) {\r\n\t\t// NOTE: The request to perform the action has failed\r\n\t\tconsole.error(\"Could not save mute preferences\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not save mute preferences\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Snooze a notification\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const snoozeNotifications = async (notifications: INotification[]) => {\r\n\tconst preferences: any = await FSBL.Clients.NotificationClient.getPreferences();\r\n\tconst snoozeAction = new FSBL.Clients.NotificationClient.Action();\r\n\tsnoozeAction.type = FSBL.Clients.NotificationClient.ActionTypes.SNOOZE;\r\n\tif (preferences && preferences.defaultSnoozePeriodSeconds) {\r\n\t\tsnoozeAction.milliseconds = preferences.defaultSnoozePeriodSeconds * 1000;\r\n\t}\r\n\tsnoozeAction.buttonText = \"Snooze\";\r\n\r\n\tfor (let i = 0; i < notifications.length; i++) {\r\n\t\tdoAction(notifications[i], snoozeAction);\r\n\t}\r\n};\r\n\r\n/**\r\n * Marks a notification as read\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const markNotificationsUnread = (notifications: INotification[]) => {\r\n\ttry {\r\n\t\tNotificationClient.markUnread(notifications).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t});\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Error marking messages as unread\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not mark notification as unread\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Marks a notification as read\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const markNotificationsRead = (notifications: INotification[]) => {\r\n\ttry {\r\n\t\tNotificationClient.markRead(notifications).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t});\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Error marking messages as read\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not mark notification as read\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Dismisses a notification\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const dismissNotification = (notifications: INotification[]) => {\r\n\ttry {\r\n\t\tNotificationClient.deleteNotifications(notifications).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t});\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Error marking messages as read\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not mark notification as read\", e);\r\n\t}\r\n};\r\n\r\nexport const initializeCenterToggle = () => {\r\n\tconst [notificationSubscribeMessage, notificationsPublish] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\r\n\r\n\tconst toggleCenter = () => {\r\n\t\tconst { showCenter } = notificationSubscribeMessage;\r\n\t\tconst publishValue = { ...notificationSubscribeMessage };\r\n\t\tpublishValue.showCenter = !showCenter;\r\n\t\tnotificationsPublish(publishValue);\r\n\t};\r\n\r\n\treturn {\r\n\t\ttoggleCenter,\r\n\t};\r\n};\r\n\r\n/**\r\n * Get Notification's config from\r\n */\r\nexport const getNotificationConfig = (): NotificationsConfig => {\r\n\tconst config: WindowConfig = WindowClient.options.customData;\r\n\r\n\treturn Object.assign(config?.window?.data?.notifications || {}, {\r\n\t\tisTransparent: config?.window?.options?.transparent || false,\r\n\t});\r\n};\r\n\r\nexport const getFetchHistoryParams = (config: any, params: any) => {\r\n\tconst notificationsHistory = config?.notificationsHistory || params?.config?.notificationsHistory;\r\n\r\n\t// Backwards compatibility - `since` replaced with `options` object\r\n\tlet options = notificationsHistory.since ? notificationsHistory.since : null;\r\n\r\n\t// Use options object if it's been set in the component config\r\n\tif (!options) {\r\n\t\toptions = notificationsHistory?.options;\r\n\t}\r\n\r\n\t// If no options object set and notificationsHistory is true set in config, use the params\r\n\tif (!options && typeof notificationsHistory === \"boolean\" && notificationsHistory) {\r\n\t\toptions = params?.config?.notificationsHistory.options;\r\n\t}\r\n\r\n\tconst filter = notificationsHistory.filter ? notificationsHistory.filter : null;\r\n\r\n\treturn [options, filter];\r\n};\r\n\r\nexport default function useNotifications(params: any = {}) {\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\t/*\r\n\t\tAction Creators\r\n\t*/\r\n\tconst removeNotification = (notification: INotification) => {\r\n\t\tdispatch({ type: REMOVE, payload: notification });\r\n\t};\r\n\r\n\tconst addNotification = (notification: INotification) => {\r\n\t\tdispatch({ type: UPDATE, payload: notification });\r\n\t};\r\n\r\n\tconst addMultipleNotifications = (notifications: INotification[]) => {\r\n\t\tdispatch({ type: CREATE_MULTIPLE, payload: notifications });\r\n\t};\r\n\r\n\t/**\r\n\t * Group Notifications by Type\r\n\t * @param notifications\r\n\t */\r\n\tconst groupNotificationsByType = (notifications: INotification[]) => {\r\n\t\tconst groupBy = (arr: INotification[], type: keyof INotification) =>\r\n\t\t\tarr\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(notification: INotification): string =>\r\n\t\t\t\t\t\t//@ts-ignore\r\n\t\t\t\t\t\tnotification[type]\r\n\t\t\t\t)\r\n\t\t\t\t.reduce((acc: { [x: string]: any }, notificationType: string, index: number) => {\r\n\t\t\t\t\tacc[notificationType] = [...(acc[notificationType] || []), arr[index]];\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t}, {});\r\n\r\n\t\treturn groupBy(notifications, \"type\");\r\n\t};\r\n\r\n\t/**\r\n\t * \t * get the past notifications\r\n\t * WARNING - The default will get all notifications all the way back from 1969!!!\r\n\t * @param since\r\n\t * @param filter\r\n\t */\r\n\tconst getNotificationHistory = (\r\n\t\tsince: INotificationHistoryOptions = { sentAfter: \"1969-12-31T23:59:59.999Z\" },\r\n\t\tfilter: null | IFilter = null\r\n\t): Promise<INotification[]> => NotificationClient.fetchHistory(since, filter as IFilter);\r\n\r\n\tconst notificationIsActive = (notification: INotification, applyMuteFilterOverride?: boolean | undefined) => {\r\n\t\tlet applyMuteFilters = applyMuteFilterOverride;\r\n\r\n\t\tif (typeof applyMuteFilterOverride === \"undefined\") {\r\n\t\t\tconst config = getNotificationConfig();\r\n\t\t\tapplyMuteFilters = config?.applyMuteFilters ? config.applyMuteFilters : false;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t!notification.isSnoozed &&\r\n\t\t\t!notification.isRead &&\r\n\t\t\t!notification.isDeleted &&\r\n\t\t\t(applyMuteFilters ? !notification.isMuted : true)\r\n\t\t);\r\n\t};\r\n\r\n\tconst activeNotifications = (notifications: INotification[], applyMuteFilterOverride?: boolean | undefined) =>\r\n\t\tnotifications.filter((notification) => notificationIsActive(notification, applyMuteFilterOverride));\r\n\r\n\t/**\r\n\t * Main init function to start the subscription\r\n\t */\r\n\tasync function init() {\r\n\t\ttry {\r\n\t\t\tconst subscription = new NotificationClient.Subscription();\r\n\r\n\t\t\tconst notificationConfig: NotificationsConfig = getNotificationConfig();\r\n\r\n\t\t\tconst filter: IFilter = new NotificationClient.Filter();\r\n\r\n\t\t\t// make filters from the config\r\n\t\t\tif (notificationConfig) {\r\n\t\t\t\tnotificationConfig.filter &&\r\n\t\t\t\t\tnotificationConfig.filter.include &&\r\n\t\t\t\t\tfilter.include.push(...notificationConfig.filter.include);\r\n\r\n\t\t\t\tnotificationConfig.filter &&\r\n\t\t\t\t\tnotificationConfig.filter.exclude &&\r\n\t\t\t\t\tfilter.exclude.push(...notificationConfig.filter.exclude);\r\n\t\t\t}\r\n\r\n\t\t\tsubscription.filter = filter;\r\n\r\n\t\t\tconst notificationsHistory = notificationConfig?.notificationsHistory || params?.config?.notificationsHistory;\r\n\r\n\t\t\tif (notificationsHistory) {\r\n\t\t\t\tconst [options, filter] = getFetchHistoryParams(notificationConfig, params);\r\n\r\n\t\t\t\tconst pastNotifications = await getNotificationHistory(options, filter);\r\n\t\t\t\taddMultipleNotifications(pastNotifications);\r\n\t\t\t}\r\n\t\t\tconst onNotification = function (notification: INotification) {\r\n\t\t\t\t// This function will be called when a notification arrives\r\n\t\t\t\tif (notification.isDeleted) {\r\n\t\t\t\t\tremoveNotification(notification);\r\n\t\t\t\t} else {\r\n\t\t\t\t\taddNotification(notification);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\treturn NotificationClient.subscribe(subscription, onNotification);\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set opaque class to html element\r\n\t */\r\n\tfunction setOpaqueClassName(isOpaque: boolean) {\r\n\t\tif (isOpaque) {\r\n\t\t\tconst htmlElement = document.getElementsByTagName(\"html\")[0];\r\n\t\t\tif (!htmlElement.className.includes(\"opaque\")) {\r\n\t\t\t\thtmlElement.className = `${htmlElement.className} opaque`;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// start receiving Notifications and putting them in state\r\n\tuseEffect(() => {\r\n\t\tconst subscribe = init();\r\n\t\treturn () => {\r\n\t\t\t// Unsubscribe using the subscription ID\r\n\t\t\t(async () => {\r\n\t\t\t\tconst subscribeObject = (await subscribe) as any;\r\n\t\t\t\tif (subscribeObject) {\r\n\t\t\t\t\tawait NotificationClient.unsubscribe(subscribeObject.id);\r\n\t\t\t\t}\r\n\t\t\t})();\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tactiveNotifications,\r\n\t\taddNotification,\r\n\t\tnotificationIsActive,\r\n\t\tgetNotificationHistory,\r\n\t\tgroupNotificationsByType,\r\n\t\tnotifications: state.notifications,\r\n\t\tremoveNotification,\r\n\t\tsetOpaqueClassName,\r\n\t};\r\n}\r\n"]}
1
+ {"version":3,"file":"useNotifications.js","sourceRoot":"","sources":["../../src/hooks/useNotifications.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useReducer } from \"react\";\r\nimport { WindowConfig, NotificationsConfig } from \"../components/notifications/types\";\r\nimport { usePubSub } from \"./usePubSub\";\r\nimport { NOTIFICATIONS_PUBSUB_TOPIC, NotificationServiceState } from \"../components/notifications/constants\";\r\nimport { services } from \"@finsemble/finsemble-core\";\r\n\r\ntype IFilter = services.notification.types.IFilter;\r\ntype IMuteFilter = services.notification.types.IMuteFilter;\r\ntype INotification = services.notification.types.INotification;\r\ntype INotificationHistoryOptions = services.notification.types.INotificationHistoryOptions;\r\n\r\nconst { WindowClient, NotificationClient } = FSBL.Clients;\r\n\r\nconst initialState: any = { notifications: [] };\r\n\r\n/*\r\nAction Types\r\n*/\r\nconst CREATE_MULTIPLE = \"CREATE_MULTIPLE\";\r\nconst UPDATE = \"UPDATE\";\r\nconst REMOVE = \"REMOVE\";\r\n\r\n/*\r\n\tReducer\r\n\t*/\r\nfunction reducer(state: { notifications: INotification[] }, action: { type: string; payload: any }) {\r\n\tswitch (action.type) {\r\n\t\tcase CREATE_MULTIPLE:\r\n\t\t\treturn {\r\n\t\t\t\tnotifications: [...state.notifications, ...action.payload],\r\n\t\t\t};\r\n\t\tcase UPDATE: {\r\n\t\t\t// check to see if the notification exists if so update the values\r\n\t\t\tconst notificationExistsInArray = state.notifications.find(\r\n\t\t\t\t(notification: INotification) => notification.id === action.payload.id\r\n\t\t\t);\r\n\r\n\t\t\t//if the notification exists then do nothing and return the current state else add the the new notification to the state\r\n\t\t\tconst notifications = notificationExistsInArray\r\n\t\t\t\t? state.notifications.map((notification: INotification) =>\r\n\t\t\t\t\t\tnotification.id === action.payload.id ? action.payload : notification\r\n\t\t\t\t )\r\n\t\t\t\t: [action.payload, ...state.notifications];\r\n\r\n\t\t\treturn { notifications };\r\n\t\t}\r\n\t\tcase REMOVE:\r\n\t\t\treturn {\r\n\t\t\t\tnotifications: state.notifications.filter((notification) => notification.id !== action.payload.id),\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\tthrow new Error();\r\n\t}\r\n}\r\n\r\ntype NotificationUIStatePublish = (state: NotificationServiceState) => void;\r\n\r\n/**\r\n * Thin wrapper around usePubSub to give us typesafety for the notification service's UI state.\r\n * Automatically appends this client's windowName which is used by the notification service to\r\n * display the notification center on an appropriate monitor.\r\n */\r\nexport const useNotificationUI = (): [state: NotificationServiceState, setState: NotificationUIStatePublish] => {\r\n\tconst [state, setState] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\r\n\r\n\tconst setStateAndAddWindowName = (newState: NotificationServiceState) => {\r\n\t\tsetState({\r\n\t\t\t...newState,\r\n\t\t\tmostRecentWindowName: finsembleWindow.name,\r\n\t\t});\r\n\t};\r\n\treturn [state as NotificationServiceState, setStateAndAddWindowName];\r\n};\r\n\r\nconst getActiveDescriptorsByType = (componentType: string): Promise<any[]> =>\r\n\tnew Promise(async (resolve, reject) => {\r\n\t\tFSBL.Clients.LauncherClient.getActiveDescriptors((err: any, data: any) => {\r\n\t\t\tconst activeDescriptors: any[] = [];\r\n\t\t\tif (err) {\r\n\t\t\t\treject(err);\r\n\t\t\t} else {\r\n\t\t\t\tfor (const key in data) {\r\n\t\t\t\t\tif (data.hasOwnProperty(key) && data[key]?.componentType === componentType) {\r\n\t\t\t\t\t\tactiveDescriptors.push(data[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresolve(activeDescriptors);\r\n\t\t});\r\n\t});\r\n\r\nlet toolbarWindowName: string;\r\n\r\nexport const moveToToolbarMonitor = async () => {\r\n\tconst getToolbarMonitorData = async () =>\r\n\t\tnew Promise(async (resolve, reject) => {\r\n\t\t\tif (!toolbarWindowName) {\r\n\t\t\t\tconst activeDescriptors = await getActiveDescriptorsByType(\"Toolbar\");\r\n\t\t\t\ttoolbarWindowName = activeDescriptors[0]?.name;\r\n\t\t\t}\r\n\t\t\tconst { err, data } = (await FSBL.Clients.LauncherClient.getMonitorInfo({\r\n\t\t\t\twindowIdentifier: { windowName: toolbarWindowName },\r\n\t\t\t})) as any;\r\n\r\n\t\t\tif (err) {\r\n\t\t\t\tFSBL.Clients.Logger.error(\"Could not get Monitor info\", err);\r\n\t\t\t\treject(err);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tresolve(data);\r\n\t\t});\r\n\r\n\tconst data = (await getToolbarMonitorData()) as any;\r\n\tconst bounds = (await finsembleWindow.getBounds({})) as any;\r\n\tconst width = bounds.data.right - bounds.data.left;\r\n\r\n\tfinsembleWindow.setBounds(\r\n\t\t{\r\n\t\t\tbounds: {\r\n\t\t\t\ttop: data[\"availableRect\"][\"top\"],\r\n\t\t\t\tleft: data[\"availableRect\"][\"right\"] - width,\r\n\t\t\t\theight: data[\"availableRect\"][\"height\"],\r\n\t\t\t\twidth: width,\r\n\t\t\t},\r\n\t\t},\r\n\t\t(err: any) => {\r\n\t\t\tif (err) {\r\n\t\t\t\tFSBL.Clients.Logger.error(\"Could not update position\", err);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n};\r\n\r\nexport const getOS = () => {\r\n\tif (navigator.platform.indexOf(\"Win\") != -1) {\r\n\t\treturn \"Windows\";\r\n\t} else if (navigator.platform.indexOf(\"Linux\") != -1) {\r\n\t\treturn \"Linux\";\r\n\t} else if (navigator.platform.indexOf(\"Mac\") != -1) {\r\n\t\treturn \"Mac\";\r\n\t}\r\n};\r\n\r\n/**\r\n * Example for setting up button clicks\r\n *\r\n * @param notification\r\n * @param action\r\n */\r\nexport const doAction = (notification: INotification, action: any) => {\r\n\ttry {\r\n\t\tNotificationClient.performAction([notification], action).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t\t// 1) alert user notification has been sent (action may not have completed)\r\n\t\t});\r\n\t} catch (e) {\r\n\t\t// NOTE: The request to perform the action has failed\r\n\t\tconsole.error(\"could not create a notification client\", e);\r\n\t\tFSBL.Clients.Logger.error(\"could not create a notification client\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Example for setting up button clicks\r\n *\r\n * @param filter\r\n */\r\nexport const mute = async (filter: IMuteFilter) => {\r\n\ttry {\r\n\t\tawait NotificationClient.mute(filter);\r\n\t} catch (e) {\r\n\t\t// NOTE: The request to perform the action has failed\r\n\t\tconsole.error(\"Could not save mute preferences\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not save mute preferences\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Example for setting up button clicks\r\n *\r\n * @param filter\r\n */\r\nexport const unmute = async (filter: IMuteFilter) => {\r\n\ttry {\r\n\t\tawait NotificationClient.unmute(filter);\r\n\t} catch (e) {\r\n\t\t// NOTE: The request to perform the action has failed\r\n\t\tconsole.error(\"Could not save mute preferences\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not save mute preferences\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Snooze a notification\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const snoozeNotifications = async (notifications: INotification[]) => {\r\n\tconst preferences: any = await FSBL.Clients.NotificationClient.getPreferences();\r\n\tconst snoozeAction = new FSBL.Clients.NotificationClient.Action();\r\n\tsnoozeAction.type = FSBL.Clients.NotificationClient.ActionTypes.SNOOZE;\r\n\tif (preferences && preferences.defaultSnoozePeriodSeconds) {\r\n\t\tsnoozeAction.milliseconds = preferences.defaultSnoozePeriodSeconds * 1000;\r\n\t}\r\n\tsnoozeAction.buttonText = \"Snooze\";\r\n\r\n\tfor (let i = 0; i < notifications.length; i++) {\r\n\t\tdoAction(notifications[i], snoozeAction);\r\n\t}\r\n};\r\n\r\n/**\r\n * Marks a notification as read\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const markNotificationsUnread = (notifications: INotification[]) => {\r\n\ttry {\r\n\t\tNotificationClient.markUnread(notifications).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t});\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Error marking messages as unread\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not mark notification as unread\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Marks a notification as read\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const markNotificationsRead = (notifications: INotification[]) => {\r\n\ttry {\r\n\t\tNotificationClient.markRead(notifications).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t});\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Error marking messages as read\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not mark notification as read\", e);\r\n\t}\r\n};\r\n\r\n/**\r\n * Dismisses a notification\r\n *\r\n * @param {INotification[]} notifications\r\n */\r\nexport const dismissNotification = (notifications: INotification[]) => {\r\n\ttry {\r\n\t\tNotificationClient.deleteNotifications(notifications).then(() => {\r\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\r\n\t\t\t// The action itself has not necessarily been perform successfully\r\n\t\t});\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Error marking messages as read\", e);\r\n\t\tFSBL.Clients.Logger.error(\"Could not mark notification as read\", e);\r\n\t}\r\n};\r\n\r\nexport const initializeCenterToggle = () => {\r\n\tconst [uiState, setUIState] = useNotificationUI();\r\n\r\n\tconst toggleCenter = () => {\r\n\t\tsetUIState({\r\n\t\t\t...uiState,\r\n\t\t\tshowCenter: !uiState.showCenter,\r\n\t\t});\r\n\t};\r\n\r\n\treturn {\r\n\t\ttoggleCenter,\r\n\t};\r\n};\r\n\r\n/**\r\n * Get Notification's config from\r\n */\r\nexport const getNotificationConfig = (): NotificationsConfig => {\r\n\tconst config: WindowConfig = WindowClient.options.customData;\r\n\r\n\treturn Object.assign(config?.window?.data?.notifications || {}, {\r\n\t\tisTransparent: config?.window?.options?.transparent || false,\r\n\t});\r\n};\r\n\r\nexport const getFetchHistoryParams = (config: any, params: any) => {\r\n\tconst notificationsHistory = config?.notificationsHistory || params?.config?.notificationsHistory;\r\n\r\n\t// Backwards compatibility - `since` replaced with `options` object\r\n\tlet options = notificationsHistory.since ? notificationsHistory.since : null;\r\n\r\n\t// Use options object if it's been set in the component config\r\n\tif (!options) {\r\n\t\toptions = notificationsHistory?.options;\r\n\t}\r\n\r\n\t// If no options object set and notificationsHistory is true set in config, use the params\r\n\tif (!options && typeof notificationsHistory === \"boolean\" && notificationsHistory) {\r\n\t\toptions = params?.config?.notificationsHistory.options;\r\n\t}\r\n\r\n\tconst filter = notificationsHistory.filter ? notificationsHistory.filter : null;\r\n\r\n\treturn [options, filter];\r\n};\r\n\r\nexport default function useNotifications(params: any = {}) {\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n\t/*\r\n\t\tAction Creators\r\n\t*/\r\n\tconst removeNotification = (notification: INotification) => {\r\n\t\tdispatch({ type: REMOVE, payload: notification });\r\n\t};\r\n\r\n\tconst addNotification = (notification: INotification) => {\r\n\t\tdispatch({ type: UPDATE, payload: notification });\r\n\t};\r\n\r\n\tconst addMultipleNotifications = (notifications: INotification[]) => {\r\n\t\tdispatch({ type: CREATE_MULTIPLE, payload: notifications });\r\n\t};\r\n\r\n\t/**\r\n\t * Group Notifications by Type\r\n\t * @param notifications\r\n\t */\r\n\tconst groupNotificationsByType = (notifications: INotification[]) => {\r\n\t\tconst groupBy = (arr: INotification[], type: keyof INotification) =>\r\n\t\t\tarr\r\n\t\t\t\t.map(\r\n\t\t\t\t\t(notification: INotification): string =>\r\n\t\t\t\t\t\t//@ts-ignore\r\n\t\t\t\t\t\tnotification[type]\r\n\t\t\t\t)\r\n\t\t\t\t.reduce((acc: { [x: string]: any }, notificationType: string, index: number) => {\r\n\t\t\t\t\tacc[notificationType] = [...(acc[notificationType] || []), arr[index]];\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t}, {});\r\n\r\n\t\treturn groupBy(notifications, \"type\");\r\n\t};\r\n\r\n\t/**\r\n\t * \t * get the past notifications\r\n\t * WARNING - The default will get all notifications all the way back from 1969!!!\r\n\t * @param since\r\n\t * @param filter\r\n\t */\r\n\tconst getNotificationHistory = (\r\n\t\tsince: INotificationHistoryOptions = { sentAfter: \"1969-12-31T23:59:59.999Z\" },\r\n\t\tfilter: null | IFilter = null\r\n\t): Promise<INotification[]> => NotificationClient.fetchHistory(since, filter as IFilter);\r\n\r\n\tconst notificationIsActive = (notification: INotification, applyMuteFilterOverride?: boolean | undefined) => {\r\n\t\tlet applyMuteFilters = applyMuteFilterOverride;\r\n\r\n\t\tif (typeof applyMuteFilterOverride === \"undefined\") {\r\n\t\t\tconst config = getNotificationConfig();\r\n\t\t\tapplyMuteFilters = config?.applyMuteFilters ? config.applyMuteFilters : false;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t!notification.isSnoozed &&\r\n\t\t\t!notification.isRead &&\r\n\t\t\t!notification.isDeleted &&\r\n\t\t\t(applyMuteFilters ? !notification.isMuted : true)\r\n\t\t);\r\n\t};\r\n\r\n\tconst activeNotifications = (notifications: INotification[], applyMuteFilterOverride?: boolean | undefined) =>\r\n\t\tnotifications.filter((notification) => notificationIsActive(notification, applyMuteFilterOverride));\r\n\r\n\t/**\r\n\t * Main init function to start the subscription\r\n\t */\r\n\tasync function init() {\r\n\t\ttry {\r\n\t\t\tconst subscription = new NotificationClient.Subscription();\r\n\r\n\t\t\tconst notificationConfig: NotificationsConfig = getNotificationConfig();\r\n\r\n\t\t\tconst filter: IFilter = new NotificationClient.Filter();\r\n\r\n\t\t\t// make filters from the config\r\n\t\t\tif (notificationConfig) {\r\n\t\t\t\tnotificationConfig.filter &&\r\n\t\t\t\t\tnotificationConfig.filter.include &&\r\n\t\t\t\t\tfilter.include.push(...notificationConfig.filter.include);\r\n\r\n\t\t\t\tnotificationConfig.filter &&\r\n\t\t\t\t\tnotificationConfig.filter.exclude &&\r\n\t\t\t\t\tfilter.exclude.push(...notificationConfig.filter.exclude);\r\n\t\t\t}\r\n\r\n\t\t\tsubscription.filter = filter;\r\n\r\n\t\t\tconst notificationsHistory = notificationConfig?.notificationsHistory || params?.config?.notificationsHistory;\r\n\r\n\t\t\tif (notificationsHistory) {\r\n\t\t\t\tconst [options, historyFilter] = getFetchHistoryParams(notificationConfig, params);\r\n\r\n\t\t\t\tconst pastNotifications = await getNotificationHistory(options, historyFilter);\r\n\t\t\t\taddMultipleNotifications(pastNotifications);\r\n\t\t\t}\r\n\t\t\tconst onNotification = function (notification: INotification) {\r\n\t\t\t\t// This function will be called when a notification arrives\r\n\t\t\t\tif (notification.isDeleted) {\r\n\t\t\t\t\tremoveNotification(notification);\r\n\t\t\t\t} else {\r\n\t\t\t\t\taddNotification(notification);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\treturn NotificationClient.subscribe(subscription, onNotification);\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set opaque class to html element\r\n\t */\r\n\tfunction setOpaqueClassName(isOpaque: boolean) {\r\n\t\tif (isOpaque) {\r\n\t\t\tconst htmlElement = document.getElementsByTagName(\"html\")[0];\r\n\t\t\tif (!htmlElement.className.includes(\"opaque\")) {\r\n\t\t\t\thtmlElement.className = `${htmlElement.className} opaque`;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// start receiving Notifications and putting them in state\r\n\tuseEffect(() => {\r\n\t\tconst subscribe = init();\r\n\t\treturn () => {\r\n\t\t\t// Unsubscribe using the subscription ID\r\n\t\t\t(async () => {\r\n\t\t\t\tconst subscribeObject = (await subscribe) as any;\r\n\t\t\t\tif (subscribeObject) {\r\n\t\t\t\t\tawait NotificationClient.unsubscribe(subscribeObject.id);\r\n\t\t\t\t}\r\n\t\t\t})();\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tactiveNotifications,\r\n\t\taddNotification,\r\n\t\tnotificationIsActive,\r\n\t\tgetNotificationHistory,\r\n\t\tgroupNotificationsByType,\r\n\t\tnotifications: state.notifications,\r\n\t\tremoveNotification,\r\n\t\tsetOpaqueClassName,\r\n\t};\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePubSub.js","sourceRoot":"","sources":["../../src/hooks/usePubSub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AACtC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;AAEzD,SAAS,SAAS,CAAC,KAAa,EAAE,iBAAyB,EAAE;IAC5D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjD,IAAI,GAAG,EAAE;gBAER,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACX,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import * as React from \"react\";\r\n\r\nconst { useState, useEffect } = React;\r\nconst { RouterClient } = FSBL.Clients;\r\nconst { publish, subscribe, unsubscribe } = RouterClient;\r\n\r\nfunction usePubSub(topic: string, initialMessage: object = {}): [{ [key: string]: any }, Function] {\r\n\tconst [message, setMessage] = useState(initialMessage);\r\n\r\n\tconst pub = (value: any) => publish(topic, value);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst subscribeId = subscribe(topic, (err, res) => {\r\n\t\t\tif (err) {\r\n\t\t\t\t// Use Finsemble Logger?\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t}\r\n\t\t\tsetMessage(res.data);\r\n\t\t});\r\n\t\treturn () => {\r\n\t\t\tunsubscribe(subscribeId);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn [message, pub];\r\n}\r\n\r\nexport { usePubSub };\r\n"]}
1
+ {"version":3,"file":"usePubSub.js","sourceRoot":"","sources":["../../src/hooks/usePubSub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AACtC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;AAmBzD,SAAS,SAAS,CAAC,KAAa,EAAE,iBAAyB,EAAE;IAC5D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAElD,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjD,IAAI,GAAG,EAAE;gBAER,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACX,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import * as React from \"react\";\r\n\r\nconst { useState, useEffect } = React;\r\nconst { RouterClient } = FSBL.Clients;\r\nconst { publish, subscribe, unsubscribe } = RouterClient;\r\n\r\n/**\r\n * A generic effect for getting and setting state dynamically from a Router pubsub channel.\r\n *\r\n * @param {string} topic The pubsub topic (i.e. channel) to subscribe\r\n * @param {object} initialMessage The initial state (defaults to empty object)\r\n * @returns [object, function] The current state of the pubsub channel (or initialMessage if no state exists).\r\n * The second returned array parameter is a publish function which can be used to update state.\r\n *\r\n * @example\r\n * // Inside a React functional component\r\n * const [currentState, publish] = usePubSub(\"topic\", {});\r\n * console.log(currentState);\r\n *\r\n * onClick = () => {\r\n * publish(someNewState);\r\n * }\r\n */\r\nfunction usePubSub(topic: string, initialMessage: object = {}): [{ [key: string]: any }, Function] {\r\n\tconst [message, setMessage] = useState(initialMessage);\r\n\r\n\tconst pub = (value: any) => publish(topic, value);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst subscribeId = subscribe(topic, (err, res) => {\r\n\t\t\tif (err) {\r\n\t\t\t\t// Use Finsemble Logger?\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t}\r\n\t\t\tsetMessage(res.data);\r\n\t\t});\r\n\t\treturn () => {\r\n\t\t\tunsubscribe(subscribeId);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn [message, pub];\r\n}\r\n\r\nexport { usePubSub };\r\n"]}
@@ -16,7 +16,7 @@ const useSearch = () => {
16
16
  const clonedProviderResponses = JSON.parse(JSON.stringify(responses));
17
17
  if (!clonedProviderResponses)
18
18
  return updateResults([]);
19
- let providersWithData = clonedProviderResponses.filter((provider) => provider?.data?.length);
19
+ let providersWithData = clonedProviderResponses.filter((provider) => { var _a; return (_a = provider === null || provider === void 0 ? void 0 : provider.data) === null || _a === void 0 ? void 0 : _a.length; });
20
20
  if (providersWithData.length === 0)
21
21
  providersWithData = [];
22
22
  updateResults(providersWithData);
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../src/hooks/useSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AActC,MAAM,SAAS,GAAG,GAAe,EAAE;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEhC,MAAM,aAAa,GAAG,WAAW,CAChC,CAAC,OAAmB,EAAE,EAAE;QACvB,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC,EACD,CAAC,QAAQ,CAAC,CACV,CAAC;IACF,MAAM,sBAAsB,GAAG,CAAC,WAAgB,EAAE,SAAmC,EAAE,KAAa,EAAE,EAAE;QAEvG,IAAI,KAAK,KAAK,YAAY,CAAC,OAAO;YAAE,OAAO;QAM3C,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,uBAAuB;YAAE,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;QAEvD,IAAI,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CACrD,CAAC,QAAgC,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAC5D,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,iBAAiB,GAAG,EAAE,CAAC;QAE3D,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC,CAAC;IAoBF,MAAM,uBAAuB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,WAAW,CAC9B,CAAC,KAAa,EAAE,EAAE;QACjB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAE7B,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAM,EAAE,SAAmC,EAAE,EAAE;YACpF,uBAAuB,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,QAAQ,EAAE,aAAa,CAAC,CACzB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO;QACN,aAAa;QACb,WAAW;QACX,WAAW;QACX,WAAW;KACX,CAAC;AACH,CAAC,CAAC;AACF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import { useRef, useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"../store\";\r\nimport { SearchActions } from \"../actions/searchActions\";\r\nimport { SearchProviderResponse } from \"../types/searchTypes\";\r\nimport { debounce } from \"lodash\";\r\n\r\nconst { SearchClient } = FSBL.Clients;\r\n\r\ntype SearchHook = {\r\n\tsearchResults: Array<SearchProviderResponse>;\r\n\tsearchQuery: string;\r\n\tupdateQuery: (query: string) => void;\r\n\tresetSearch: () => void;\r\n};\r\n\r\n/**\r\n * A hook for working with search. Search results stream back, and this hook will relay those through\r\n * a reducer. Note that the reducer implementation is a singleton (if you have multiple search) inputs\r\n * across a component then they will all be synchronized to query and results.\r\n */\r\nconst useSearch = (): SearchHook => {\r\n\tconst dispatch = useDispatch();\r\n\tconst { searchQuery, searchResults } = useSelector((state) => state.search);\r\n\tconst currentQuery = useRef({});\r\n\r\n\tconst updateResults = useCallback(\r\n\t\t(results: Array<any>) => {\r\n\t\t\tdispatch(SearchActions.UPDATE_RESULTS(results));\r\n\t\t},\r\n\t\t[dispatch]\r\n\t);\r\n\tconst onSearchClientResponse = (searchError: any, responses: SearchProviderResponse[], query: string) => {\r\n\t\t// If we get a response back from an older query then drop the results\r\n\t\tif (query !== currentQuery.current) return;\r\n\t\t/**\r\n\t\t * The callback from `SearchClient.search` can return *multiple times*, and it uses a single global array\r\n\t\t * that it is constantly mutating. React isn't doing a deep comparison, so it never updates the results, we\r\n\t\t * therefore force an update by cloning the array into a new reference.\r\n\t\t */\r\n\t\tconst clonedProviderResponses = JSON.parse(JSON.stringify(responses));\r\n\r\n\t\tif (!clonedProviderResponses) return updateResults([]);\r\n\r\n\t\tlet providersWithData = clonedProviderResponses.filter(\r\n\t\t\t(provider: SearchProviderResponse) => provider?.data?.length\r\n\t\t);\r\n\t\tif (providersWithData.length === 0) providersWithData = [];\r\n\r\n\t\tupdateResults(providersWithData);\r\n\t};\r\n\r\n\t/**\r\n\t * The seach client callback procedure is a little strange. In order to prevent a hangup for slow search\r\n\t * providers, your callback to searchClient.search is invoked multiple times -- one time per search provider.\r\n\t *\r\n\t * Your search goes out for \"De\", you get a response from the WindowService saying \"No components match\".\r\n\t * Then you get a response from the WorkspaceService saying \"Hey DefaultWorkspace matches!\". Your callback\r\n\t * has been hit twice. On the 2nd time, you get all of the data you would've gotten the first time.\r\n\t *\r\n\t * Without debouncing the search client response, we end up setting intermediary state, which forces the DOM to\r\n\t * render, which forces the window size to change to fit the DOM. Imagine the situation above.\r\n\t *\r\n\t * We send out a search for \"DE\", and the WindowService comes back at us first saying 'no components'. There's no data,\r\n\t * so there's no results. So there's no DOM spit out for the search results. This causes the window to size down\r\n\t * to its minimum. Miliseconds later, the workspace service comes at us saying \"Hey I have workspaces!\", which\r\n\t * causes the search menu to expand to fit the results in the DOM. By setting the intermediary\r\n\t * state, we cause unnecessary renders and we end up resizing resizing the window in a very jarring manner.\r\n\t * By waiting until they've had a chance to come at us in a burst, we make the menu resizing smoother and less prone to jitter.\r\n\t */\r\n\tconst debouncedSearchResponse = debounce(onSearchClientResponse, 100);\r\n\r\n\tconst updateQuery = useCallback(\r\n\t\t(query: string) => {\r\n\t\t\tdispatch(SearchActions.UPDATE_QUERY(query));\r\n\t\t\tcurrentQuery.current = query;\r\n\t\t\t// Run the search() effect. One day, move this to effects middleware.\r\n\t\t\tSearchClient.search({ text: query }, (e: any, responses: SearchProviderResponse[]) => {\r\n\t\t\t\tdebouncedSearchResponse(e, responses, query);\r\n\t\t\t});\r\n\t\t},\r\n\t\t[dispatch, updateResults]\r\n\t);\r\n\r\n\tconst resetSearch = useCallback(() => {\r\n\t\tdispatch(SearchActions.RESET_SEARCH());\r\n\t}, [dispatch]);\r\n\r\n\treturn {\r\n\t\tsearchResults,\r\n\t\tupdateQuery,\r\n\t\tsearchQuery,\r\n\t\tresetSearch,\r\n\t};\r\n};\r\nexport { useSearch };\r\n"]}
1
+ {"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../src/hooks/useSearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AActC,MAAM,SAAS,GAAG,GAAe,EAAE;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEhC,MAAM,aAAa,GAAG,WAAW,CAChC,CAAC,OAAmB,EAAE,EAAE;QACvB,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC,EACD,CAAC,QAAQ,CAAC,CACV,CAAC;IACF,MAAM,sBAAsB,GAAG,CAAC,WAAgB,EAAE,SAAmC,EAAE,KAAa,EAAE,EAAE;QAEvG,IAAI,KAAK,KAAK,YAAY,CAAC,OAAO;YAAE,OAAO;QAM3C,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,uBAAuB;YAAE,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;QAEvD,IAAI,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CACrD,CAAC,QAAgC,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,MAAM,CAAA,EAAA,CAC5D,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,iBAAiB,GAAG,EAAE,CAAC;QAE3D,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC,CAAC;IAoBF,MAAM,uBAAuB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAG,WAAW,CAC9B,CAAC,KAAa,EAAE,EAAE;QACjB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAE7B,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAM,EAAE,SAAmC,EAAE,EAAE;YACpF,uBAAuB,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,QAAQ,EAAE,aAAa,CAAC,CACzB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO;QACN,aAAa;QACb,WAAW;QACX,WAAW;QACX,WAAW;KACX,CAAC;AACH,CAAC,CAAC;AACF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import { useRef, useCallback } from \"react\";\r\nimport { useDispatch, useSelector } from \"../store\";\r\nimport { SearchActions } from \"../actions/searchActions\";\r\nimport { SearchProviderResponse } from \"../types/searchTypes\";\r\nimport { debounce } from \"lodash\";\r\n\r\nconst { SearchClient } = FSBL.Clients;\r\n\r\ntype SearchHook = {\r\n\tsearchResults: Array<SearchProviderResponse>;\r\n\tsearchQuery: string;\r\n\tupdateQuery: (query: string) => void;\r\n\tresetSearch: () => void;\r\n};\r\n\r\n/**\r\n * A hook for working with search. Search results stream back, and this hook will relay those through\r\n * a reducer. Note that the reducer implementation is a singleton (if you have multiple search) inputs\r\n * across a component then they will all be synchronized to query and results.\r\n */\r\nconst useSearch = (): SearchHook => {\r\n\tconst dispatch = useDispatch();\r\n\tconst { searchQuery, searchResults } = useSelector((state) => state.search);\r\n\tconst currentQuery = useRef({});\r\n\r\n\tconst updateResults = useCallback(\r\n\t\t(results: Array<any>) => {\r\n\t\t\tdispatch(SearchActions.UPDATE_RESULTS(results));\r\n\t\t},\r\n\t\t[dispatch]\r\n\t);\r\n\tconst onSearchClientResponse = (searchError: any, responses: SearchProviderResponse[], query: string) => {\r\n\t\t// If we get a response back from an older query then drop the results\r\n\t\tif (query !== currentQuery.current) return;\r\n\t\t/**\r\n\t\t * The callback from `SearchClient.search` can return *multiple times*, and it uses a single global array\r\n\t\t * that it is constantly mutating. React isn't doing a deep comparison, so it never updates the results, we\r\n\t\t * therefore force an update by cloning the array into a new reference.\r\n\t\t */\r\n\t\tconst clonedProviderResponses = JSON.parse(JSON.stringify(responses));\r\n\r\n\t\tif (!clonedProviderResponses) return updateResults([]);\r\n\r\n\t\tlet providersWithData = clonedProviderResponses.filter(\r\n\t\t\t(provider: SearchProviderResponse) => provider?.data?.length\r\n\t\t);\r\n\t\tif (providersWithData.length === 0) providersWithData = [];\r\n\r\n\t\tupdateResults(providersWithData);\r\n\t};\r\n\r\n\t/**\r\n\t * The seach client callback procedure is a little strange. In order to prevent a hangup for slow search\r\n\t * providers, your callback to searchClient.search is invoked multiple times -- one time per search provider.\r\n\t *\r\n\t * Your search goes out for \"De\", you get a response from the WindowService saying \"No components match\".\r\n\t * Then you get a response from the WorkspaceService saying \"Hey DefaultWorkspace matches!\". Your callback\r\n\t * has been hit twice. On the 2nd time, you get all of the data you would've gotten the first time.\r\n\t *\r\n\t * Without debouncing the search client response, we end up setting intermediary state, which forces the DOM to\r\n\t * render, which forces the window size to change to fit the DOM. Imagine the situation above.\r\n\t *\r\n\t * We send out a search for \"DE\", and the WindowService comes back at us first saying 'no components'. There's no data,\r\n\t * so there's no results. So there's no DOM spit out for the search results. This causes the window to size down\r\n\t * to its minimum. Miliseconds later, the workspace service comes at us saying \"Hey I have workspaces!\", which\r\n\t * causes the search menu to expand to fit the results in the DOM. By setting the intermediary\r\n\t * state, we cause unnecessary renders and we end up resizing resizing the window in a very jarring manner.\r\n\t * By waiting until they've had a chance to come at us in a burst, we make the menu resizing smoother and less prone to jitter.\r\n\t */\r\n\tconst debouncedSearchResponse = debounce(onSearchClientResponse, 100);\r\n\r\n\tconst updateQuery = useCallback(\r\n\t\t(query: string) => {\r\n\t\t\tdispatch(SearchActions.UPDATE_QUERY(query));\r\n\t\t\tcurrentQuery.current = query;\r\n\t\t\t// Run the search() effect. One day, move this to effects middleware.\r\n\t\t\tSearchClient.search({ text: query }, (e: any, responses: SearchProviderResponse[]) => {\r\n\t\t\t\tdebouncedSearchResponse(e, responses, query);\r\n\t\t\t});\r\n\t\t},\r\n\t\t[dispatch, updateResults]\r\n\t);\r\n\r\n\tconst resetSearch = useCallback(() => {\r\n\t\tdispatch(SearchActions.RESET_SEARCH());\r\n\t}, [dispatch]);\r\n\r\n\treturn {\r\n\t\tsearchResults,\r\n\t\tupdateQuery,\r\n\t\tsearchQuery,\r\n\t\tresetSearch,\r\n\t};\r\n};\r\nexport { useSearch };\r\n"]}
@@ -83,6 +83,23 @@ export const useToolbar = () => {
83
83
  preventSystemClose();
84
84
  }
85
85
  }, []);
86
+ useEffect(() => {
87
+ if (typeof FSBL.Clients.WindowClient["getSpawnData"] === "function") {
88
+ const { dashbar } = FSBL.Clients.WindowClient.getSpawnData();
89
+ if (dashbar && dashbar.height) {
90
+ const fsblWindow = FSBL.Clients.WindowClient.getCurrentWindow();
91
+ fsblWindow.getBounds(async (bounds) => {
92
+ const response = await FSBL.Clients.ConfigClient.getValue({
93
+ field: "finsemble.components.Toolbar.window.height",
94
+ });
95
+ const expectedToolbarHeight = response.data + dashbar.height;
96
+ if (bounds.height !== expectedToolbarHeight) {
97
+ fsblWindow.setBounds(bounds.left, bounds.top, bounds.width, expectedToolbarHeight);
98
+ }
99
+ });
100
+ }
101
+ }
102
+ }, []);
86
103
  async function setDashbarItems(error, data) {
87
104
  const { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({
88
105
  field: "finsemble.availableDashbarItems",
@@ -98,64 +115,70 @@ export const useToolbar = () => {
98
115
  dispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));
99
116
  }
100
117
  useDeepEffect(() => {
101
- async function fetchDashbarItems() {
118
+ async function createStoreAndFetchDashbarItems() {
102
119
  try {
103
- storageIsInitialized = true;
104
- FSBL.Clients.DistributedStoreClient.createStore({
105
- store: "Finsemble-Dashbar-Store",
106
- global: true,
107
- persist: true,
108
- }, async (getDashbarStoreErr, store) => {
109
- if (getDashbarStoreErr) {
110
- FSBL.Clients.Logger.error("Error initializing dashbar: unable to retrieve stored items, falling back to config", getDashbarStoreErr);
111
- }
112
- DashbarStore = store;
113
- const { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({
114
- field: "finsemble.availableDashbarItems",
115
- });
116
- let dashbarItemList;
117
- if (DashbarStore && Object.keys(DashbarStore.values).length > 0) {
118
- ({ dashbaritems: dashbarItemList } = DashbarStore.values);
119
- }
120
- if (!dashbarItemList) {
121
- const spawnData = FSBL.Clients.WindowClient.getSpawnData();
122
- if (spawnData.hasOwnProperty("dashbar") &&
123
- spawnData.dashbar.hasOwnProperty("items") &&
124
- Array.isArray(spawnData.dashbar.items)) {
125
- dashbarItemList = spawnData.dashbar.items;
126
- }
127
- }
128
- if (!dashbarItemList)
129
- dashbarItemList = [];
130
- const newDashbarItems = [];
131
- if (dashbarItemList.length > 0) {
132
- dashbarItemList.forEach((itemName) => {
133
- if (availableDashbarItems.hasOwnProperty(itemName)) {
134
- const newItem = availableDashbarItems[itemName];
135
- newItem.id = itemName;
136
- newDashbarItems.push(newItem);
120
+ FSBL.Clients.RouterClient.subscribe("distributedStoresLoading", (subscribeErr, notify) => {
121
+ if (!subscribeErr && notify.data.State === "done") {
122
+ if (storageIsInitialized)
123
+ return;
124
+ storageIsInitialized = true;
125
+ FSBL.Clients.DistributedStoreClient.createStore({
126
+ store: "Finsemble-Dashbar-Store",
127
+ global: true,
128
+ persist: true,
129
+ }, async (getDashbarStoreErr, store) => {
130
+ if (getDashbarStoreErr) {
131
+ FSBL.Clients.Logger.error("Error initializing dashbar: unable to retrieve stored items, falling back to config", getDashbarStoreErr);
137
132
  }
133
+ DashbarStore = store;
134
+ const { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({
135
+ field: "finsemble.availableDashbarItems",
136
+ });
137
+ let dashbarItemList;
138
+ if (DashbarStore && Object.keys(DashbarStore.values).length > 0) {
139
+ ({ dashbaritems: dashbarItemList } = DashbarStore.values);
140
+ }
141
+ if (!dashbarItemList) {
142
+ const spawnData = FSBL.Clients.WindowClient.getSpawnData();
143
+ if (spawnData.hasOwnProperty("dashbar") &&
144
+ spawnData.dashbar.hasOwnProperty("items") &&
145
+ Array.isArray(spawnData.dashbar.items)) {
146
+ dashbarItemList = spawnData.dashbar.items;
147
+ }
148
+ }
149
+ if (!dashbarItemList)
150
+ dashbarItemList = [];
151
+ const newDashbarItems = [];
152
+ if (dashbarItemList.length > 0) {
153
+ dashbarItemList.forEach((itemName) => {
154
+ if (availableDashbarItems.hasOwnProperty(itemName)) {
155
+ const newItem = availableDashbarItems[itemName];
156
+ newItem.id = itemName;
157
+ newDashbarItems.push(newItem);
158
+ }
159
+ });
160
+ }
161
+ if (!DashbarStore.values.dashbaritems) {
162
+ DashbarStore.setValue({
163
+ field: "dashbaritems",
164
+ value: dashbarItemList,
165
+ });
166
+ }
167
+ else {
168
+ dispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));
169
+ }
170
+ DashbarStore.addListener({ field: "dashbaritems" }, setDashbarItems);
138
171
  });
139
172
  }
140
- if (!DashbarStore.values.dashbaritems) {
141
- DashbarStore.setValue({
142
- field: "dashbaritems",
143
- value: dashbarItemList,
144
- });
145
- }
146
- else {
147
- dispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));
148
- }
149
- DashbarStore.addListener({ field: "dashbaritems" }, setDashbarItems);
150
173
  });
151
174
  }
152
175
  catch (majorErr) {
153
176
  return FSBL.Clients.Logger.error(`Fatal error retrieving dashbar items`, majorErr);
154
177
  }
155
178
  }
156
- if (storageIsInitialized)
157
- return;
158
- fetchDashbarItems();
179
+ if (!storageIsInitialized) {
180
+ createStoreAndFetchDashbarItems();
181
+ }
159
182
  return function cleanup() {
160
183
  DashbarStore.removeListener({ field: "dashbaritems" }, setDashbarItems);
161
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useToolbar.js","sourceRoot":"","sources":["../../src/hooks/useToolbar.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\r\nimport { useDeepEffect } from \"./useDeepEffect\";\r\nimport { useSelector } from \"../store\";\r\nimport { ToolbarActions } from \"../actions/toolbarActions\";\r\nimport { openQuitConfirmationDialog } from \"../components/shared/openQuitConfirmationDialog\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { DashbarItem } from \"../types/dashbarTypes\";\r\n\r\nlet storageIsInitialized: boolean = false;\r\n\r\ntype DashbarStoreValueType = {\r\n\tdashbaritems: DashbarItem[];\r\n};\r\n\r\ntype DashbarStoreType = {\r\n\tname: string;\r\n\tsetValue: Function;\r\n\tsetValues: Function;\r\n\taddListener: Function;\r\n\tremoveListener: Function;\r\n\tvalues: DashbarStoreValueType;\r\n};\r\n\r\nlet DashbarStore: DashbarStoreType;\r\n\r\n/**\r\n * Function to bring toolbar to front (since dockable toolbar can be hidden)\r\n * @param {boolean} focus If true, will also focus the toolbar\r\n */\r\nconst bringToolbarToFront = ({ focus }: { focus: boolean }) => {\r\n\tfinsembleWindow.bringToFront(null, (err: any) => {\r\n\t\tif (err) {\r\n\t\t\tFSBL.Clients.Logger.error(\"bringToolbarToFront failed, error:\", err);\r\n\t\t}\r\n\r\n\t\tif (focus) {\r\n\t\t\tfinsembleWindow.focus();\r\n\t\t}\r\n\t});\r\n};\r\n\r\n/**\r\n * Hides the toolbar\r\n */\r\nconst hideToolbar = () => {\r\n\tfinsembleWindow.blur();\r\n\tfinsembleWindow.hide();\r\n};\r\n\r\n/**\r\n * Shows the toolbar left-aligned to the user's mouse.\r\n */\r\nconst showToolbar = () => {\r\n\tFSBL.Clients.WindowClient.showAtMousePosition();\r\n\tbringToolbarToFront({ focus: true });\r\n};\r\n\r\n/**\r\n * Mimimizes all windows.\r\n */\r\nconst minimizeAllWindows = () => {\r\n\tFSBL.Clients.WorkspaceClient.minimizeAll();\r\n};\r\n\r\n/**\r\n * Brings all windows to front.\r\n */\r\nconst revealAllWindows = () => {\r\n\tFSBL.Clients.WorkspaceClient.bringWindowsToFront();\r\n};\r\n\r\n/**\r\n * Toggles Auto Arrange for all windows on the same monitor as the toolbar\r\n */\r\nconst toggleAutoArrange = () => {\r\n\tFSBL.Clients.WorkspaceClient.autoArrange({}, () => {\r\n\t\t// This is legacy and we're not sure if it's still required or not.\r\n\t\t// We can try eliminating this once core auto arrange is refactored.\r\n\t\tbringToolbarToFront({ focus: false });\r\n\t\trevealAllWindows();\r\n\t});\r\n};\r\n\r\n/**\r\n * It's a requirement that the toolbar not be minimized.\r\n * the minimizable option does not work.\r\n * Instead, we just listen for this event and restore the window.\r\n * Hacky. Best I can think of right now.\r\n * //TODO allowMinimize should be a component config option\r\n */\r\nconst preventMinimize = () => {\r\n\tfinsembleWindow.addEventListener(\"minimized\", () => {\r\n\t\tfinsembleWindow.restore();\r\n\t});\r\n};\r\n\r\n/**\r\n * Required to let the system know that the toolbar is up and ready.\r\n * Other pieces of the UI key off of this.\r\n * @TODO Determine whether this kind of baked-in dependency\r\n * makes sense in finsemble.\r\n */\r\nconst publishSystemCheckpoint = () => {\r\n\tFSBL.SystemManagerClient.publishCheckpointState(\"Toolbar\", \"initialize\", \"completed\");\r\n};\r\n\r\n/**\r\n * Prevents closing of the window.\r\n */\r\nconst onBeforeToolbarUnload = () => {\r\n\topenQuitConfirmationDialog();\r\n\t// Return of a non-void value (in this `onbeforeunload` handler) is what tells Electron not to close the window.\r\n\t// Don't delete this!\r\n\treturn false;\r\n};\r\n\r\nconst removeSystemClosePrevention = () => {\r\n\tif (window.onbeforeunload === onBeforeToolbarUnload) {\r\n\t\twindow.onbeforeunload = null;\r\n\t}\r\n};\r\n\r\nconst launchPreferences = (tabName: string) => {\r\n\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\r\n\t\tpreferencesTab: tabName,\r\n\t});\r\n\tFSBL.Clients.LauncherClient.showWindow(\r\n\t\t{\r\n\t\t\tcomponentType: \"UserPreferences\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tmonitor: \"mine\",\r\n\t\t\tleft: \"center\",\r\n\t\t\ttop: \"center\",\r\n\t\t}\r\n\t);\r\n};\r\n\r\n/**\r\n * Prevents the window from going down on alt+f4 or closing from taskbar.\r\n * Pops up a dialog asking if the user meant to shut down the system.\r\n */\r\nconst preventSystemClose = () => {\r\n\t// This function was already called, so no need to run it again.\r\n\tif (window.onbeforeunload === onBeforeToolbarUnload) return;\r\n\r\n\t// Bypass system close prevention if for some reason the toolbar has been customized with an alternative onbeforeunload handler\r\n\tif (window.onbeforeunload) {\r\n\t\tconsole.error(\r\n\t\t\t`Finsemble toolbar was configured to prevent system closes, however, there is already a function assigned to window.onbeforeunload. In order to prevent the OS from closing your window, we need to overwrite this handler. Users will be able to close your toolbar from the windows taskbar. Please remove your onbeforeunload handler or set the toolbar property 'allowSystemToCloseWindow' to true to get rid of this error message.`\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * From the electron docs:\r\n\t * Note: There is a subtle difference between the behaviors of window.onbeforeunload = handler and window.addEventListener('beforeunload', handler). It is recommended to always set the event.returnValue explicitly, instead of only returning a value, as the former works more consistently within Electron.\r\n\t *\r\n\t * Tried addEventListener, and it wouldn't work.\r\n\t */\r\n\twindow.onbeforeunload = onBeforeToolbarUnload;\r\n\t// Terry, onShutdown() hasn't worked for many versions, so this code was never running\r\n\t// remove the listener when we're shutting down. Don't want to get into an infinite loop.\r\n\t//FSBL.onShutdown(removeSystemClosePrevention);\r\n};\r\n\r\nexport const useToolbar = () => {\r\n\tconst dispatch = useDispatch();\r\n\r\n\tuseEffect(() => {\r\n\t\tpreventMinimize();\r\n\t\tpublishSystemCheckpoint();\r\n\r\n\t\tif (FSBL.debug !== true) {\r\n\t\t\tpreventSystemClose();\r\n\t\t}\r\n\t}, []);\r\n\r\n\tasync function setDashbarItems(error: Error, data: any) {\r\n\t\tconst { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({\r\n\t\t\tfield: \"finsemble.availableDashbarItems\",\r\n\t\t});\r\n\t\tconst newDashbarItems: DashbarItem[] = [];\r\n\t\t// Add the widget name as an id to help identify\r\n\t\t// keys -> widgets when reordering items\r\n\t\tdata.value.forEach((itemName: string) => {\r\n\t\t\tif (availableDashbarItems.hasOwnProperty(itemName)) {\r\n\t\t\t\tconst newItem = availableDashbarItems[itemName];\r\n\t\t\t\tnewItem.id = itemName;\r\n\t\t\t\tnewDashbarItems.push(newItem);\r\n\t\t\t}\r\n\t\t});\r\n\t\tdispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));\r\n\t}\r\n\r\n\t/**\r\n\t * This effect initializes the dashbar items in the redux store. The store must only be initialized once. We use the module level variable\r\n\t * `storageIsInitialized` as a simple flag to prevent initialization from occuring more than once.\r\n\t */\r\n\tuseDeepEffect(() => {\r\n\t\tasync function fetchDashbarItems() {\r\n\t\t\ttry {\r\n\t\t\t\tstorageIsInitialized = true;\r\n\t\t\t\tFSBL.Clients.DistributedStoreClient.createStore(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstore: \"Finsemble-Dashbar-Store\",\r\n\t\t\t\t\t\tglobal: true,\r\n\t\t\t\t\t\tpersist: true,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tasync (getDashbarStoreErr: Error, store: any) => {\r\n\t\t\t\t\t\tif (getDashbarStoreErr) {\r\n\t\t\t\t\t\t\tFSBL.Clients.Logger.error(\r\n\t\t\t\t\t\t\t\t\"Error initializing dashbar: unable to retrieve stored items, falling back to config\",\r\n\t\t\t\t\t\t\t\tgetDashbarStoreErr\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tDashbarStore = store;\r\n\r\n\t\t\t\t\t\tconst { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({\r\n\t\t\t\t\t\t\tfield: \"finsemble.availableDashbarItems\",\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t// Fetch active dashbar items from store, if not found, fall back to spawn data\r\n\t\t\t\t\t\tlet dashbarItemList;\r\n\t\t\t\t\t\tif (DashbarStore && Object.keys(DashbarStore.values).length > 0) {\r\n\t\t\t\t\t\t\t({ dashbaritems: dashbarItemList } = DashbarStore.values);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!dashbarItemList) {\r\n\t\t\t\t\t\t\tconst spawnData = FSBL.Clients.WindowClient.getSpawnData();\r\n\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\tspawnData.hasOwnProperty(\"dashbar\") &&\r\n\t\t\t\t\t\t\t\tspawnData.dashbar.hasOwnProperty(\"items\") &&\r\n\t\t\t\t\t\t\t\tArray.isArray(spawnData.dashbar.items)\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tdashbarItemList = spawnData.dashbar.items;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!dashbarItemList) dashbarItemList = [];\r\n\r\n\t\t\t\t\t\tconst newDashbarItems: DashbarItem[] = [];\r\n\t\t\t\t\t\tif (dashbarItemList.length > 0) {\r\n\t\t\t\t\t\t\tdashbarItemList.forEach((itemName: string) => {\r\n\t\t\t\t\t\t\t\tif (availableDashbarItems.hasOwnProperty(itemName)) {\r\n\t\t\t\t\t\t\t\t\tconst newItem = availableDashbarItems[itemName];\r\n\t\t\t\t\t\t\t\t\t// Add the widget name as an id to help identify\r\n\t\t\t\t\t\t\t\t\t// keys -> widgets when reordering items\r\n\t\t\t\t\t\t\t\t\tnewItem.id = itemName;\r\n\t\t\t\t\t\t\t\t\tnewDashbarItems.push(newItem);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!DashbarStore.values.dashbaritems) {\r\n\t\t\t\t\t\t\tDashbarStore.setValue({\r\n\t\t\t\t\t\t\t\tfield: \"dashbaritems\",\r\n\t\t\t\t\t\t\t\tvalue: dashbarItemList,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tdispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tDashbarStore.addListener({ field: \"dashbaritems\" }, setDashbarItems);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t} catch (majorErr) {\r\n\t\t\t\treturn FSBL.Clients.Logger.error(`Fatal error retrieving dashbar items`, majorErr);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (storageIsInitialized) return;\r\n\t\tfetchDashbarItems();\r\n\t\treturn function cleanup() {\r\n\t\t\tDashbarStore.removeListener({ field: \"dashbaritems\" }, setDashbarItems);\r\n\t\t};\r\n\t}, [dispatch]);\r\n\r\n\tconst { dashbarItems } = useSelector((state) => state.toolbar);\r\n\r\n\tconst reorderDashbarItems = ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => {\r\n\t\tconst dashbarItemsNewOrder = [...dashbarItems];\r\n\t\tconst dashbarItemToMove = dashbarItemsNewOrder[oldIndex];\r\n\t\tdashbarItemsNewOrder.splice(oldIndex, 1);\r\n\t\tdashbarItemsNewOrder.splice(newIndex, 0, dashbarItemToMove);\r\n\r\n\t\tconst newOrderList = dashbarItemsNewOrder.map((dashbarItem) => dashbarItem.id);\r\n\r\n\t\tDashbarStore.setValue(\r\n\t\t\t{\r\n\t\t\t\tfield: \"dashbaritems\",\r\n\t\t\t\tvalue: newOrderList,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tdispatch(ToolbarActions.REORDER_DASHBAR_ITEMS({ oldIndex, newIndex }));\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\treturn {\r\n\t\tdashbarItems,\r\n\t\tremoveSystemClosePrevention,\r\n\t\tpreventSystemClose,\r\n\t\tminimizeAllWindows,\r\n\t\trevealAllWindows,\r\n\t\ttoggleAutoArrange,\r\n\t\tshowToolbar,\r\n\t\thideToolbar,\r\n\t\treorderDashbarItems,\r\n\t\tlaunchPreferences,\r\n\t};\r\n};\r\n"]}
1
+ {"version":3,"file":"useToolbar.js","sourceRoot":"","sources":["../../src/hooks/useToolbar.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\r\nimport { useDeepEffect } from \"./useDeepEffect\";\r\nimport { useSelector } from \"../store\";\r\nimport { ToolbarActions } from \"../actions/toolbarActions\";\r\nimport { openQuitConfirmationDialog } from \"../components/shared/openQuitConfirmationDialog\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { DashbarItem } from \"../types/dashbarTypes\";\r\nimport { types } from \"@finsemble/finsemble-core\";\r\n\r\ntype StandardError = types.StandardError;\r\n\r\nlet storageIsInitialized: boolean = false;\r\n\r\ntype DashbarStoreValueType = {\r\n\tdashbaritems: DashbarItem[];\r\n};\r\n\r\ntype DashbarStoreType = {\r\n\tname: string;\r\n\tsetValue: Function;\r\n\tsetValues: Function;\r\n\taddListener: Function;\r\n\tremoveListener: Function;\r\n\tvalues: DashbarStoreValueType;\r\n};\r\n\r\nlet DashbarStore: DashbarStoreType;\r\n\r\n/**\r\n * Function to bring toolbar to front (since dockable toolbar can be hidden)\r\n * @param {boolean} focus If true, will also focus the toolbar\r\n */\r\nconst bringToolbarToFront = ({ focus }: { focus: boolean }) => {\r\n\tfinsembleWindow.bringToFront(null, (err: any) => {\r\n\t\tif (err) {\r\n\t\t\tFSBL.Clients.Logger.error(\"bringToolbarToFront failed, error:\", err);\r\n\t\t}\r\n\r\n\t\tif (focus) {\r\n\t\t\tfinsembleWindow.focus();\r\n\t\t}\r\n\t});\r\n};\r\n\r\n/**\r\n * Hides the toolbar\r\n */\r\nconst hideToolbar = () => {\r\n\tfinsembleWindow.blur();\r\n\tfinsembleWindow.hide();\r\n};\r\n\r\n/**\r\n * Shows the toolbar left-aligned to the user's mouse.\r\n */\r\nconst showToolbar = () => {\r\n\tFSBL.Clients.WindowClient.showAtMousePosition();\r\n\tbringToolbarToFront({ focus: true });\r\n};\r\n\r\n/**\r\n * Mimimizes all windows.\r\n */\r\nconst minimizeAllWindows = () => {\r\n\tFSBL.Clients.WorkspaceClient.minimizeAll();\r\n};\r\n\r\n/**\r\n * Brings all windows to front.\r\n */\r\nconst revealAllWindows = () => {\r\n\tFSBL.Clients.WorkspaceClient.bringWindowsToFront();\r\n};\r\n\r\n/**\r\n * Toggles Auto Arrange for all windows on the same monitor as the toolbar\r\n */\r\nconst toggleAutoArrange = () => {\r\n\tFSBL.Clients.WorkspaceClient.autoArrange({}, () => {\r\n\t\t// This is legacy and we're not sure if it's still required or not.\r\n\t\t// We can try eliminating this once core auto arrange is refactored.\r\n\t\tbringToolbarToFront({ focus: false });\r\n\t\trevealAllWindows();\r\n\t});\r\n};\r\n\r\n/**\r\n * It's a requirement that the toolbar not be minimized.\r\n * the minimizable option does not work.\r\n * Instead, we just listen for this event and restore the window.\r\n * Hacky. Best I can think of right now.\r\n * //TODO allowMinimize should be a component config option\r\n */\r\nconst preventMinimize = () => {\r\n\tfinsembleWindow.addEventListener(\"minimized\", () => {\r\n\t\tfinsembleWindow.restore();\r\n\t});\r\n};\r\n\r\n/**\r\n * Required to let the system know that the toolbar is up and ready.\r\n * Other pieces of the UI key off of this.\r\n * @TODO Determine whether this kind of baked-in dependency\r\n * makes sense in finsemble.\r\n */\r\nconst publishSystemCheckpoint = () => {\r\n\tFSBL.SystemManagerClient.publishCheckpointState(\"Toolbar\", \"initialize\", \"completed\");\r\n};\r\n\r\n/**\r\n * Prevents closing of the window.\r\n */\r\nconst onBeforeToolbarUnload = () => {\r\n\topenQuitConfirmationDialog();\r\n\t// Return of a non-void value (in this `onbeforeunload` handler) is what tells Electron not to close the window.\r\n\t// Don't delete this!\r\n\treturn false;\r\n};\r\n\r\nconst removeSystemClosePrevention = () => {\r\n\tif (window.onbeforeunload === onBeforeToolbarUnload) {\r\n\t\twindow.onbeforeunload = null;\r\n\t}\r\n};\r\n\r\nconst launchPreferences = (tabName: string) => {\r\n\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\r\n\t\tpreferencesTab: tabName,\r\n\t});\r\n\tFSBL.Clients.LauncherClient.showWindow(\r\n\t\t{\r\n\t\t\tcomponentType: \"UserPreferences\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tmonitor: \"mine\",\r\n\t\t\tleft: \"center\",\r\n\t\t\ttop: \"center\",\r\n\t\t}\r\n\t);\r\n};\r\n\r\n/**\r\n * Prevents the window from going down on alt+f4 or closing from taskbar.\r\n * Pops up a dialog asking if the user meant to shut down the system.\r\n */\r\nconst preventSystemClose = () => {\r\n\t// This function was already called, so no need to run it again.\r\n\tif (window.onbeforeunload === onBeforeToolbarUnload) return;\r\n\r\n\t// Bypass system close prevention if for some reason the toolbar has been customized with an alternative onbeforeunload handler\r\n\tif (window.onbeforeunload) {\r\n\t\tconsole.error(\r\n\t\t\t`Finsemble toolbar was configured to prevent system closes, however, there is already a function assigned to window.onbeforeunload. In order to prevent the OS from closing your window, we need to overwrite this handler. Users will be able to close your toolbar from the windows taskbar. Please remove your onbeforeunload handler or set the toolbar property 'allowSystemToCloseWindow' to true to get rid of this error message.`\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * From the electron docs:\r\n\t * Note: There is a subtle difference between the behaviors of window.onbeforeunload = handler and window.addEventListener('beforeunload', handler). It is recommended to always set the event.returnValue explicitly, instead of only returning a value, as the former works more consistently within Electron.\r\n\t *\r\n\t * Tried addEventListener, and it wouldn't work.\r\n\t */\r\n\twindow.onbeforeunload = onBeforeToolbarUnload;\r\n\t// Terry, onShutdown() hasn't worked for many versions, so this code was never running\r\n\t// remove the listener when we're shutting down. Don't want to get into an infinite loop.\r\n\t//FSBL.onShutdown(removeSystemClosePrevention);\r\n};\r\n\r\nexport const useToolbar = () => {\r\n\tconst dispatch = useDispatch();\r\n\r\n\tuseEffect(() => {\r\n\t\tpreventMinimize();\r\n\t\tpublishSystemCheckpoint();\r\n\r\n\t\tif (FSBL.debug !== true) {\r\n\t\t\tpreventSystemClose();\r\n\t\t}\r\n\t}, []);\r\n\r\n\t/**\r\n\t * Sometimes toolbar window has a less height then it needed to show dashabar section (ticket #37118).\r\n\t * The fix with a check for correct toolbar window height.\r\n\t */\r\n\tuseEffect(() => {\r\n\t\tif (typeof FSBL.Clients.WindowClient[\"getSpawnData\"] === \"function\") {\r\n\t\t\tconst { dashbar } = FSBL.Clients.WindowClient.getSpawnData();\r\n\t\t\t// dashbar enabled\r\n\t\t\tif (dashbar && dashbar.height) {\r\n\t\t\t\tconst fsblWindow = FSBL.Clients.WindowClient.getCurrentWindow();\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tfsblWindow.getBounds(async (bounds: any) => {\r\n\t\t\t\t\tconst response = await FSBL.Clients.ConfigClient.getValue({\r\n\t\t\t\t\t\tfield: \"finsemble.components.Toolbar.window.height\",\r\n\t\t\t\t\t});\r\n\t\t\t\t\tconst expectedToolbarHeight = response.data + dashbar.height;\r\n\t\t\t\t\t// the change of window height if it is incorrect\r\n\t\t\t\t\tif (bounds.height !== expectedToolbarHeight) {\r\n\t\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\t\tfsblWindow.setBounds(bounds.left, bounds.top, bounds.width, expectedToolbarHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}, []);\r\n\r\n\tasync function setDashbarItems(error: Error, data: any) {\r\n\t\tconst { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({\r\n\t\t\tfield: \"finsemble.availableDashbarItems\",\r\n\t\t});\r\n\t\tconst newDashbarItems: DashbarItem[] = [];\r\n\t\t// Add the widget name as an id to help identify\r\n\t\t// keys -> widgets when reordering items\r\n\t\tdata.value.forEach((itemName: string) => {\r\n\t\t\tif (availableDashbarItems.hasOwnProperty(itemName)) {\r\n\t\t\t\tconst newItem = availableDashbarItems[itemName];\r\n\t\t\t\tnewItem.id = itemName;\r\n\t\t\t\tnewDashbarItems.push(newItem);\r\n\t\t\t}\r\n\t\t});\r\n\t\tdispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));\r\n\t}\r\n\r\n\t/**\r\n\t * This effect initializes the dashbar items in the redux store. The store must only be initialized once. We use the module level variable\r\n\t * `storageIsInitialized` as a simple flag to prevent initialization from occuring more than once.\r\n\t */\r\n\tuseDeepEffect(() => {\r\n\t\tasync function createStoreAndFetchDashbarItems() {\r\n\t\t\ttry {\r\n\t\t\t\tFSBL.Clients.RouterClient.subscribe(\"distributedStoresLoading\", (subscribeErr, notify) => {\r\n\t\t\t\t\tif (!subscribeErr && notify.data.State === \"done\") {\r\n\t\t\t\t\t\t// if we already initialized the store we bail out\r\n\t\t\t\t\t\tif (storageIsInitialized) return;\r\n\r\n\t\t\t\t\t\tstorageIsInitialized = true;\r\n\t\t\t\t\t\tFSBL.Clients.DistributedStoreClient.createStore(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tstore: \"Finsemble-Dashbar-Store\",\r\n\t\t\t\t\t\t\t\tglobal: true,\r\n\t\t\t\t\t\t\t\tpersist: true,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tasync (getDashbarStoreErr: StandardError, store?: any) => {\r\n\t\t\t\t\t\t\t\tif (getDashbarStoreErr) {\r\n\t\t\t\t\t\t\t\t\tFSBL.Clients.Logger.error(\r\n\t\t\t\t\t\t\t\t\t\t\"Error initializing dashbar: unable to retrieve stored items, falling back to config\",\r\n\t\t\t\t\t\t\t\t\t\tgetDashbarStoreErr\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tDashbarStore = store;\r\n\r\n\t\t\t\t\t\t\t\tconst { data: availableDashbarItems } = await FSBL.Clients.ConfigClient.getValue({\r\n\t\t\t\t\t\t\t\t\tfield: \"finsemble.availableDashbarItems\",\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t// Fetch active dashbar items from store, if not found, fall back to spawn data\r\n\t\t\t\t\t\t\t\tlet dashbarItemList;\r\n\t\t\t\t\t\t\t\tif (DashbarStore && Object.keys(DashbarStore.values).length > 0) {\r\n\t\t\t\t\t\t\t\t\t({ dashbaritems: dashbarItemList } = DashbarStore.values);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (!dashbarItemList) {\r\n\t\t\t\t\t\t\t\t\tconst spawnData = FSBL.Clients.WindowClient.getSpawnData();\r\n\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\tspawnData.hasOwnProperty(\"dashbar\") &&\r\n\t\t\t\t\t\t\t\t\t\tspawnData.dashbar.hasOwnProperty(\"items\") &&\r\n\t\t\t\t\t\t\t\t\t\tArray.isArray(spawnData.dashbar.items)\r\n\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\tdashbarItemList = spawnData.dashbar.items;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (!dashbarItemList) dashbarItemList = [];\r\n\r\n\t\t\t\t\t\t\t\tconst newDashbarItems: DashbarItem[] = [];\r\n\t\t\t\t\t\t\t\tif (dashbarItemList.length > 0) {\r\n\t\t\t\t\t\t\t\t\tdashbarItemList.forEach((itemName: string) => {\r\n\t\t\t\t\t\t\t\t\t\tif (availableDashbarItems.hasOwnProperty(itemName)) {\r\n\t\t\t\t\t\t\t\t\t\t\tconst newItem = availableDashbarItems[itemName];\r\n\t\t\t\t\t\t\t\t\t\t\t// Add the widget name as an id to help identify\r\n\t\t\t\t\t\t\t\t\t\t\t// keys -> widgets when reordering items\r\n\t\t\t\t\t\t\t\t\t\t\tnewItem.id = itemName;\r\n\t\t\t\t\t\t\t\t\t\t\tnewDashbarItems.push(newItem);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (!DashbarStore.values.dashbaritems) {\r\n\t\t\t\t\t\t\t\t\tDashbarStore.setValue({\r\n\t\t\t\t\t\t\t\t\t\tfield: \"dashbaritems\",\r\n\t\t\t\t\t\t\t\t\t\tvalue: dashbarItemList,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tdispatch(ToolbarActions.SET_DASHBAR_ITEMS(newDashbarItems));\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tDashbarStore.addListener({ field: \"dashbaritems\" }, setDashbarItems);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} catch (majorErr) {\r\n\t\t\t\treturn FSBL.Clients.Logger.error(`Fatal error retrieving dashbar items`, majorErr);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!storageIsInitialized) {\r\n\t\t\tcreateStoreAndFetchDashbarItems();\r\n\t\t}\r\n\t\treturn function cleanup() {\r\n\t\t\tDashbarStore.removeListener({ field: \"dashbaritems\" }, setDashbarItems);\r\n\t\t};\r\n\t}, [dispatch]);\r\n\r\n\tconst { dashbarItems } = useSelector((state) => state.toolbar);\r\n\r\n\tconst reorderDashbarItems = ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => {\r\n\t\tconst dashbarItemsNewOrder = [...dashbarItems];\r\n\t\tconst dashbarItemToMove = dashbarItemsNewOrder[oldIndex];\r\n\t\tdashbarItemsNewOrder.splice(oldIndex, 1);\r\n\t\tdashbarItemsNewOrder.splice(newIndex, 0, dashbarItemToMove);\r\n\r\n\t\tconst newOrderList = dashbarItemsNewOrder.map((dashbarItem) => dashbarItem.id);\r\n\r\n\t\tDashbarStore.setValue(\r\n\t\t\t{\r\n\t\t\t\tfield: \"dashbaritems\",\r\n\t\t\t\tvalue: newOrderList,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tdispatch(ToolbarActions.REORDER_DASHBAR_ITEMS({ oldIndex, newIndex }));\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\treturn {\r\n\t\tdashbarItems,\r\n\t\tremoveSystemClosePrevention,\r\n\t\tpreventSystemClose,\r\n\t\tminimizeAllWindows,\r\n\t\trevealAllWindows,\r\n\t\ttoggleAutoArrange,\r\n\t\tshowToolbar,\r\n\t\thideToolbar,\r\n\t\treorderDashbarItems,\r\n\t\tlaunchPreferences,\r\n\t};\r\n};\r\n"]}
@@ -14,7 +14,7 @@ export const useWorkspaces = () => {
14
14
  const WorkspaceUpdateSubscribeID = FSBL.Clients.RouterClient.subscribe("Finsemble.WorkspaceService.update", onWorkspaceUpdate);
15
15
  FSBL.Clients.ConfigClient.getValue({
16
16
  field: "finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace",
17
- }, (_, data) => {
17
+ }, (err, data) => {
18
18
  data && dispatch(WorkspaceActions.UPDATE_PROMPT_ON_SAVE_WORKSPACE_PREFERENCE(data));
19
19
  });
20
20
  return function cleanup() {
@@ -1 +1 @@
1
- {"version":3,"file":"useWorkspace.js","sourceRoot":"","sources":["../../src/hooks/useWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,iBAAiB,GAAG,CAAC,CAAM,EAAE,EAAE,IAAI,EAA4B,EAAE,EAAE;QACxE,IAAI,IAAI,EAAE;YACT,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD;IACF,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QAGd,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CACrE,mCAAmC,EACnC,iBAAiB,CACjB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CACjC;YACC,KAAK,EAAE,mEAAmE;SAC1E,EACD,CAAC,CAAM,EAAE,IAAa,EAAE,EAAE;YAEzB,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,CAAC,CACD,CAAC;QAEF,OAAO,SAAS,OAAO;YACtB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QACnE,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AACtD,CAAC,CAAC","sourcesContent":["import { useDispatch, useSelector } from \"../store\";\r\nimport { WorkspaceActions } from \"../actions/workspaceActions\";\r\nimport { WorkspaceState } from \"../reducers/workspaceReducer\";\r\nimport { useEffect } from \"react\";\r\n\r\n/**\r\n * A hook for getting the current workspaces including the ActiveWorkspace,\r\n * and listening on any workspace updates.\r\n */\r\nexport const useWorkspaces = () => {\r\n\tconst dispatch = useDispatch();\r\n\r\n\tconst onWorkspaceUpdate = (_: any, { data }: { data: WorkspaceState }) => {\r\n\t\tif (data) {\r\n\t\t\tdispatch(WorkspaceActions.UPDATE_ALL_WORKSPACES(data));\r\n\t\t}\r\n\t};\r\n\r\n\tconst workspaceState = useSelector((state) => state.workspace);\r\n\tconst { workspaces, activeWorkspace, promptOnSave } = workspaceState;\r\n\r\n\tuseEffect(() => {\r\n\t\t// When the workspace updates, update the active workspace name.\r\n\t\t// We will also get the active workspace as soon as we subscribe.\r\n\t\tconst WorkspaceUpdateSubscribeID = FSBL.Clients.RouterClient.subscribe(\r\n\t\t\t\"Finsemble.WorkspaceService.update\",\r\n\t\t\tonWorkspaceUpdate\r\n\t\t);\r\n\t\tFSBL.Clients.ConfigClient.getValue(\r\n\t\t\t{\r\n\t\t\t\tfield: \"finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace\",\r\n\t\t\t},\r\n\t\t\t(_: any, data: boolean) => {\r\n\t\t\t\t// default to false.\r\n\t\t\t\tdata && dispatch(WorkspaceActions.UPDATE_PROMPT_ON_SAVE_WORKSPACE_PREFERENCE(data));\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn function cleanup() {\r\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(WorkspaceUpdateSubscribeID);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn { workspaces, activeWorkspace, promptOnSave };\r\n};\r\n"]}
1
+ {"version":3,"file":"useWorkspace.js","sourceRoot":"","sources":["../../src/hooks/useWorkspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,iBAAiB,GAAG,CAAC,CAAM,EAAE,EAAE,IAAI,EAA4B,EAAE,EAAE;QACxE,IAAI,IAAI,EAAE;YACT,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD;IACF,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QAGd,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CACrE,mCAAmC,EACnC,iBAAiB,CACjB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CACjC;YACC,KAAK,EAAE,mEAAmE;SAC1E,EACD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAEb,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,CAAC,CACD,CAAC;QAEF,OAAO,SAAS,OAAO;YACtB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QACnE,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AACtD,CAAC,CAAC","sourcesContent":["import { useDispatch, useSelector } from \"../store\";\r\nimport { WorkspaceActions } from \"../actions/workspaceActions\";\r\nimport { WorkspaceState } from \"../reducers/workspaceReducer\";\r\nimport { useEffect } from \"react\";\r\n\r\n/**\r\n * A hook for getting the current workspaces including the ActiveWorkspace,\r\n * and listening on any workspace updates.\r\n */\r\nexport const useWorkspaces = () => {\r\n\tconst dispatch = useDispatch();\r\n\r\n\tconst onWorkspaceUpdate = (_: any, { data }: { data: WorkspaceState }) => {\r\n\t\tif (data) {\r\n\t\t\tdispatch(WorkspaceActions.UPDATE_ALL_WORKSPACES(data));\r\n\t\t}\r\n\t};\r\n\r\n\tconst workspaceState = useSelector((state) => state.workspace);\r\n\tconst { workspaces, activeWorkspace, promptOnSave } = workspaceState;\r\n\r\n\tuseEffect(() => {\r\n\t\t// When the workspace updates, update the active workspace name.\r\n\t\t// We will also get the active workspace as soon as we subscribe.\r\n\t\tconst WorkspaceUpdateSubscribeID = FSBL.Clients.RouterClient.subscribe(\r\n\t\t\t\"Finsemble.WorkspaceService.update\",\r\n\t\t\tonWorkspaceUpdate\r\n\t\t);\r\n\t\tFSBL.Clients.ConfigClient.getValue<boolean>(\r\n\t\t\t{\r\n\t\t\t\tfield: \"finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace\",\r\n\t\t\t},\r\n\t\t\t(err, data) => {\r\n\t\t\t\t// default to false.\r\n\t\t\t\tdata && dispatch(WorkspaceActions.UPDATE_PROMPT_ON_SAVE_WORKSPACE_PREFERENCE(data));\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn function cleanup() {\r\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(WorkspaceUpdateSubscribeID);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn { workspaces, activeWorkspace, promptOnSave };\r\n};\r\n"]}
@@ -6,7 +6,7 @@ export const initialState = {
6
6
  export const favoriteReducer = produce((state, action) => {
7
7
  FavoriteActions.match(action, {
8
8
  INITIALIZE_FAVORITES: (favorites) => {
9
- state.favorites = favorites?.length ? favorites : [];
9
+ state.favorites = (favorites === null || favorites === void 0 ? void 0 : favorites.length) ? favorites : [];
10
10
  },
11
11
  ADD_FAVORITE: (favorite) => {
12
12
  state.favorites.push(favorite);
@@ -1 +1 @@
1
- {"version":3,"file":"favoriteReducer.js","sourceRoot":"","sources":["../../src/reducers/favoriteReducer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAC;AAWlF,MAAM,CAAC,MAAM,YAAY,GAAkB;IAC1C,SAAS,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAgD,OAAO,CAClF,CAAC,KAAoB,EAAE,MAA2B,EAAE,EAAE;IACrD,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE;QAC7B,oBAAoB,EAAE,CAAC,SAA0B,EAAE,EAAE;YACpD,KAAK,CAAC,SAAS,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,YAAY,EAAE,CAAC,QAAkB,EAAE,EAAE;YACpC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,eAAe,EAAE,CAAC,QAAwB,EAAE,EAAE;YAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACzE,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;QAChC,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC7C,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACrD,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;YACxD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;KACpB,CAAC,CAAC;AACJ,CAAC,EACD,YAAY,CACZ,CAAC","sourcesContent":["import produce from \"immer\";\r\nimport { FavoriteActions, FavoriteActionTypes } from \"../actions/favoriteActions\";\r\nimport { Favorite } from \"../types/favoriteTypes\";\r\nimport { Reducer } from \"react\";\r\n\r\n/**\r\n * Favorite state definition.\r\n */\r\nexport type FavoriteState = {\r\n\tfavorites: Favorite[];\r\n};\r\n\r\nexport const initialState: FavoriteState = {\r\n\tfavorites: [],\r\n};\r\n\r\nexport const favoriteReducer: Reducer<FavoriteState, FavoriteActionTypes> = produce(\r\n\t(state: FavoriteState, action: FavoriteActionTypes) => {\r\n\t\tFavoriteActions.match(action, {\r\n\t\t\tINITIALIZE_FAVORITES: (favorites: Array<Favorite>) => {\r\n\t\t\t\tstate.favorites = favorites?.length ? favorites : [];\r\n\t\t\t},\r\n\t\t\tADD_FAVORITE: (favorite: Favorite) => {\r\n\t\t\t\tstate.favorites.push(favorite);\r\n\t\t\t},\r\n\t\t\tREMOVE_FAVORITE: (targetId: Favorite[\"id\"]) => {\r\n\t\t\t\tconst newFavorites = state.favorites.filter(({ id }) => id !== targetId);\r\n\t\t\t\tstate.favorites = newFavorites;\r\n\t\t\t},\r\n\t\t\tREORDER_FAVORITES: ({ oldIndex, newIndex }) => {\r\n\t\t\t\tconst favoritesInNewOrder = [...state.favorites];\r\n\t\t\t\tconst favoriteToMove = favoritesInNewOrder[oldIndex];\r\n\t\t\t\tfavoritesInNewOrder.splice(oldIndex, 1);\r\n\t\t\t\tfavoritesInNewOrder.splice(newIndex, 0, favoriteToMove);\r\n\t\t\t\tstate.favorites = favoritesInNewOrder;\r\n\t\t\t},\r\n\t\t\tdefault: () => state,\r\n\t\t});\r\n\t},\r\n\tinitialState\r\n);\r\n"]}
1
+ {"version":3,"file":"favoriteReducer.js","sourceRoot":"","sources":["../../src/reducers/favoriteReducer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAC;AAWlF,MAAM,CAAC,MAAM,YAAY,GAAkB;IAC1C,SAAS,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAgD,OAAO,CAClF,CAAC,KAAoB,EAAE,MAA2B,EAAE,EAAE;IACrD,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE;QAC7B,oBAAoB,EAAE,CAAC,SAA0B,EAAE,EAAE;YACpD,KAAK,CAAC,SAAS,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,YAAY,EAAE,CAAC,QAAkB,EAAE,EAAE;YACpC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,eAAe,EAAE,CAAC,QAAwB,EAAE,EAAE;YAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACzE,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;QAChC,CAAC;QACD,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC7C,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACrD,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;YACxD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;KACpB,CAAC,CAAC;AACJ,CAAC,EACD,YAAY,CACZ,CAAC","sourcesContent":["import produce from \"immer\";\r\nimport { FavoriteActions, FavoriteActionTypes } from \"../actions/favoriteActions\";\r\nimport { Favorite } from \"../types/favoriteTypes\";\r\nimport { Reducer } from \"react\";\r\n\r\n/**\r\n * Favorite state definition.\r\n */\r\nexport type FavoriteState = {\r\n\tfavorites: Favorite[];\r\n};\r\n\r\nexport const initialState: FavoriteState = {\r\n\tfavorites: [],\r\n};\r\n\r\nexport const favoriteReducer: Reducer<FavoriteState, FavoriteActionTypes> = produce(\r\n\t(state: FavoriteState, action: FavoriteActionTypes) => {\r\n\t\tFavoriteActions.match(action, {\r\n\t\t\tINITIALIZE_FAVORITES: (favorites: Array<Favorite>) => {\r\n\t\t\t\tstate.favorites = favorites?.length ? favorites : [];\r\n\t\t\t},\r\n\t\t\tADD_FAVORITE: (favorite: Favorite) => {\r\n\t\t\t\tstate.favorites.push(favorite);\r\n\t\t\t},\r\n\t\t\tREMOVE_FAVORITE: (targetId: Favorite[\"id\"]) => {\r\n\t\t\t\tconst newFavorites = state.favorites.filter(({ id }) => id !== targetId);\r\n\t\t\t\tstate.favorites = newFavorites;\r\n\t\t\t},\r\n\t\t\tREORDER_FAVORITES: ({ oldIndex, newIndex }) => {\r\n\t\t\t\tconst favoritesInNewOrder = [...state.favorites];\r\n\t\t\t\tconst favoriteToMove = favoritesInNewOrder[oldIndex];\r\n\t\t\t\tfavoritesInNewOrder.splice(oldIndex, 1);\r\n\t\t\t\tfavoritesInNewOrder.splice(newIndex, 0, favoriteToMove);\r\n\t\t\t\tstate.favorites = favoritesInNewOrder;\r\n\t\t\t},\r\n\t\t\tdefault: () => state,\r\n\t\t});\r\n\t},\r\n\tinitialState\r\n);\r\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="finsemble-core" />
2
1
  import { ToolbarState } from "./toolbarReducer";
3
2
  import { LinkerState } from "./linkerReducer";
4
3
  import { WorkspaceState } from "./workspaceReducer";
@@ -148,7 +147,7 @@ export declare const rootReducer: import("redux").Reducer<import("redux").Combin
148
147
  }) | ({
149
148
  type: "update_apps";
150
149
  } & {
151
- payload: any[];
150
+ payload: import("@finsemble/finsemble-core/types/services/Interop/types").AppDefinition[];
152
151
  }) | ({
153
152
  type: "new_app";
154
153
  } & {
@@ -164,7 +163,7 @@ export declare const rootReducer: import("redux").Reducer<import("redux").Combin
164
163
  }) | ({
165
164
  type: "update_app";
166
165
  } & {
167
- payload: any;
166
+ payload: import("@finsemble/finsemble-core/types/services/Interop/types").AppDefinition;
168
167
  }) | ({
169
168
  type: "delete_app";
170
169
  } & {
@@ -176,7 +175,7 @@ export declare const rootReducer: import("redux").Reducer<import("redux").Combin
176
175
  }) | ({
177
176
  type: "set_deploy_info";
178
177
  } & {
179
- payload: DeployInfo | null;
178
+ payload: import("@finsemble/finsemble-core/types/FEA").DeployInfo | null;
180
179
  }) | ({
181
180
  type: "set_publish_error";
182
181
  } & {
@@ -16,7 +16,7 @@ export const toolbarReducer = produce((state, action) => {
16
16
  state.dashbarItems = dashbarItemsInNewOrder;
17
17
  },
18
18
  SET_DASHBAR_ITEMS: (items) => {
19
- state.dashbarItems = items?.length ? items : [];
19
+ state.dashbarItems = (items === null || items === void 0 ? void 0 : items.length) ? items : [];
20
20
  },
21
21
  TOOLBAR_ACTION1: ({ foo }) => {
22
22
  state.myFoo = foo;
@@ -1 +1 @@
1
- {"version":3,"file":"toolbarReducer.js","sourceRoot":"","sources":["../../src/reducers/toolbarReducer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAU/E,MAAM,YAAY,GAAiB;IAClC,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,EAAE;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA8C,OAAO,CAC/E,CAAC,KAAmB,EAAE,MAA0B,EAAE,EAAE;IACnD,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE;QAC5B,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjD,MAAM,sBAAsB,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAC3D,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC3C,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAC9D,KAAK,CAAC,YAAY,GAAG,sBAAsB,CAAC;QAC7C,CAAC;QACD,iBAAiB,EAAE,CAAC,KAAyB,EAAE,EAAE;YAChD,KAAK,CAAC,YAAY,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YAC5B,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YAC5B,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;KACpB,CAAC,CAAC;AACJ,CAAC,EACD,YAAY,CACZ,CAAC","sourcesContent":["import produce from \"immer\";\r\nimport { DashbarItem } from \"../types/dashbarTypes\";\r\nimport { ToolbarActions, ToolbarActionTypes } from \"../actions/toolbarActions\";\r\nimport { Reducer } from \"react\";\r\n\r\nexport type ToolbarState = {\r\n\tmyFoo: string;\r\n\tmyBar: string;\r\n\tdashbarItems: DashbarItem[];\r\n\tdashbarItemKeys: string[];\r\n};\r\n\r\nconst initialState: ToolbarState = {\r\n\tmyFoo: \"\",\r\n\tmyBar: \"\",\r\n\tdashbarItems: [],\r\n\tdashbarItemKeys: [],\r\n};\r\n\r\nexport const toolbarReducer: Reducer<ToolbarState, ToolbarActionTypes> = produce(\r\n\t(state: ToolbarState, action: ToolbarActionTypes) => {\r\n\t\tToolbarActions.match(action, {\r\n\t\t\tREORDER_DASHBAR_ITEMS: ({ oldIndex, newIndex }) => {\r\n\t\t\t\tconst dashbarItemsInNewOrder = [...state.dashbarItems];\r\n\t\t\t\tconst dashbarItemToMove = dashbarItemsInNewOrder[oldIndex];\r\n\t\t\t\tdashbarItemsInNewOrder.splice(oldIndex, 1);\r\n\t\t\t\tdashbarItemsInNewOrder.splice(newIndex, 0, dashbarItemToMove);\r\n\t\t\t\tstate.dashbarItems = dashbarItemsInNewOrder;\r\n\t\t\t},\r\n\t\t\tSET_DASHBAR_ITEMS: (items: Array<DashbarItem>) => {\r\n\t\t\t\tstate.dashbarItems = items?.length ? items : [];\r\n\t\t\t},\r\n\t\t\tTOOLBAR_ACTION1: ({ foo }) => {\r\n\t\t\t\tstate.myFoo = foo;\r\n\t\t\t},\r\n\t\t\tTOOLBAR_ACTION2: ({ bar }) => {\r\n\t\t\t\tstate.myBar = bar;\r\n\t\t\t},\r\n\t\t\tdefault: () => state,\r\n\t\t});\r\n\t},\r\n\tinitialState\r\n);\r\n"]}
1
+ {"version":3,"file":"toolbarReducer.js","sourceRoot":"","sources":["../../src/reducers/toolbarReducer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAU/E,MAAM,YAAY,GAAiB;IAClC,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,EAAE;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA8C,OAAO,CAC/E,CAAC,KAAmB,EAAE,MAA0B,EAAE,EAAE;IACnD,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE;QAC5B,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjD,MAAM,sBAAsB,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAC3D,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC3C,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAC9D,KAAK,CAAC,YAAY,GAAG,sBAAsB,CAAC;QAC7C,CAAC;QACD,iBAAiB,EAAE,CAAC,KAAyB,EAAE,EAAE;YAChD,KAAK,CAAC,YAAY,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YAC5B,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,CAAC;QACD,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YAC5B,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;KACpB,CAAC,CAAC;AACJ,CAAC,EACD,YAAY,CACZ,CAAC","sourcesContent":["import produce from \"immer\";\r\nimport { DashbarItem } from \"../types/dashbarTypes\";\r\nimport { ToolbarActions, ToolbarActionTypes } from \"../actions/toolbarActions\";\r\nimport { Reducer } from \"react\";\r\n\r\nexport type ToolbarState = {\r\n\tmyFoo: string;\r\n\tmyBar: string;\r\n\tdashbarItems: DashbarItem[];\r\n\tdashbarItemKeys: string[];\r\n};\r\n\r\nconst initialState: ToolbarState = {\r\n\tmyFoo: \"\",\r\n\tmyBar: \"\",\r\n\tdashbarItems: [],\r\n\tdashbarItemKeys: [],\r\n};\r\n\r\nexport const toolbarReducer: Reducer<ToolbarState, ToolbarActionTypes> = produce(\r\n\t(state: ToolbarState, action: ToolbarActionTypes) => {\r\n\t\tToolbarActions.match(action, {\r\n\t\t\tREORDER_DASHBAR_ITEMS: ({ oldIndex, newIndex }) => {\r\n\t\t\t\tconst dashbarItemsInNewOrder = [...state.dashbarItems];\r\n\t\t\t\tconst dashbarItemToMove = dashbarItemsInNewOrder[oldIndex];\r\n\t\t\t\tdashbarItemsInNewOrder.splice(oldIndex, 1);\r\n\t\t\t\tdashbarItemsInNewOrder.splice(newIndex, 0, dashbarItemToMove);\r\n\t\t\t\tstate.dashbarItems = dashbarItemsInNewOrder;\r\n\t\t\t},\r\n\t\t\tSET_DASHBAR_ITEMS: (items: Array<DashbarItem>) => {\r\n\t\t\t\tstate.dashbarItems = items?.length ? items : [];\r\n\t\t\t},\r\n\t\t\tTOOLBAR_ACTION1: ({ foo }) => {\r\n\t\t\t\tstate.myFoo = foo;\r\n\t\t\t},\r\n\t\t\tTOOLBAR_ACTION2: ({ bar }) => {\r\n\t\t\t\tstate.myBar = bar;\r\n\t\t\t},\r\n\t\t\tdefault: () => state,\r\n\t\t});\r\n\t},\r\n\tinitialState\r\n);\r\n"]}
package/react/store.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="finsemble-core" />
2
1
  import { Actions } from "./actions/rootActions";
3
2
  import { RootState } from "./reducers/rootReducer";
4
3
  export declare const createStore: () => import("redux").Store<import("redux").EmptyObject & {
@@ -134,7 +133,7 @@ export declare const createStore: () => import("redux").Store<import("redux").Em
134
133
  }) | ({
135
134
  type: "update_apps";
136
135
  } & {
137
- payload: any[];
136
+ payload: import("@finsemble/finsemble-core/types/services/Interop/types").AppDefinition[];
138
137
  }) | ({
139
138
  type: "new_app";
140
139
  } & {
@@ -150,7 +149,7 @@ export declare const createStore: () => import("redux").Store<import("redux").Em
150
149
  }) | ({
151
150
  type: "update_app";
152
151
  } & {
153
- payload: any;
152
+ payload: import("@finsemble/finsemble-core/types/services/Interop/types").AppDefinition;
154
153
  }) | ({
155
154
  type: "delete_app";
156
155
  } & {
@@ -162,7 +161,7 @@ export declare const createStore: () => import("redux").Store<import("redux").Em
162
161
  }) | ({
163
162
  type: "set_deploy_info";
164
163
  } & {
165
- payload: DeployInfo | null;
164
+ payload: import("@finsemble/finsemble-core/types/FEA").DeployInfo | null;
166
165
  }) | ({
167
166
  type: "set_publish_error";
168
167
  } & {
@@ -335,7 +334,7 @@ export declare const store: import("redux").Store<import("redux").EmptyObject &
335
334
  }) | ({
336
335
  type: "update_apps";
337
336
  } & {
338
- payload: any[];
337
+ payload: import("@finsemble/finsemble-core/types/services/Interop/types").AppDefinition[];
339
338
  }) | ({
340
339
  type: "new_app";
341
340
  } & {
@@ -351,7 +350,7 @@ export declare const store: import("redux").Store<import("redux").EmptyObject &
351
350
  }) | ({
352
351
  type: "update_app";
353
352
  } & {
354
- payload: any;
353
+ payload: import("@finsemble/finsemble-core/types/services/Interop/types").AppDefinition;
355
354
  }) | ({
356
355
  type: "delete_app";
357
356
  } & {
@@ -363,7 +362,7 @@ export declare const store: import("redux").Store<import("redux").EmptyObject &
363
362
  }) | ({
364
363
  type: "set_deploy_info";
365
364
  } & {
366
- payload: DeployInfo | null;
365
+ payload: import("@finsemble/finsemble-core/types/FEA").DeployInfo | null;
367
366
  }) | ({
368
367
  type: "set_publish_error";
369
368
  } & {