@finsemble/finsemble-ui 6.6.3 → 7.0.0-beta-X

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 (902) hide show
  1. package/package.json +31 -43
  2. package/react/actions/favoriteActions.d.ts +1 -0
  3. package/react/actions/favoriteActions.js +1 -0
  4. package/react/actions/favoriteActions.js.map +1 -1
  5. package/react/actions/menuActions.d.ts +1 -0
  6. package/react/actions/menuActions.js +1 -0
  7. package/react/actions/menuActions.js.map +1 -1
  8. package/react/actions/rootActions.d.ts +1 -0
  9. package/react/actions/rootActions.js +1 -0
  10. package/react/actions/rootActions.js.map +1 -1
  11. package/react/actions/searchActions.d.ts +1 -0
  12. package/react/actions/searchActions.js +1 -0
  13. package/react/actions/searchActions.js.map +1 -1
  14. package/react/actions/toolbarActions.d.ts +34 -0
  15. package/react/actions/toolbarActions.js +17 -0
  16. package/react/actions/toolbarActions.js.map +1 -1
  17. package/react/actions/workspaceActions.d.ts +1 -0
  18. package/react/actions/workspaceActions.js +1 -0
  19. package/react/actions/workspaceActions.js.map +1 -1
  20. package/react/assets/css/advancedAppLauncher.css +22 -19
  21. package/react/assets/css/appCatalog.css +67 -72
  22. package/react/assets/css/authentication.css +4 -3
  23. package/react/assets/css/button.css +4 -11
  24. package/react/assets/css/core/formElements.css +1 -1
  25. package/react/assets/css/core/icons.css +3 -2
  26. package/react/assets/css/core/notifications.css +2 -2
  27. package/react/assets/css/core/windowFrame.css +9 -9
  28. package/react/assets/css/dashbar.css +1 -1
  29. package/react/assets/css/defaultTheme.css +9 -53
  30. package/react/assets/css/dialogs.css +13 -11
  31. package/react/assets/css/favorites.css +3 -48
  32. package/react/assets/css/finsemble.css +6 -2
  33. package/react/assets/css/font-finance.css +233 -120
  34. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
  35. package/react/assets/css/linkerWindow.css +15 -3
  36. package/react/assets/css/menus.css +12 -12
  37. package/react/assets/css/notificationsCenter.css +49 -33
  38. package/react/assets/css/processMonitor.css +7 -4
  39. package/react/assets/css/search.css +1 -1
  40. package/react/assets/css/shared/animations.css +10 -4
  41. package/react/assets/css/shared/common.css +40 -0
  42. package/react/assets/css/tags.css +10 -10
  43. package/react/assets/css/toolbar.css +22 -19
  44. package/react/assets/css/userPreferences.css +29 -26
  45. package/react/assets/css/windowTitleBar.css +86 -40
  46. package/react/assets/icons/server.svg +26 -0
  47. package/react/componentTemplateGenerator.js +3 -2
  48. package/react/componentTemplateGenerator.js.map +1 -1
  49. package/react/components/FinsembleProvider.d.ts +7 -0
  50. package/react/components/FinsembleProvider.js +2 -0
  51. package/react/components/FinsembleProvider.js.map +1 -1
  52. package/react/components/appCatalog/AppCatalog.d.ts +4 -0
  53. package/react/components/appCatalog/AppCatalog.js +4 -0
  54. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  55. package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
  56. package/react/components/appCatalog/AppCatalogComponent.js +70 -1
  57. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  58. package/react/components/appCatalog/components/AppCard.d.ts +35 -0
  59. package/react/components/appCatalog/components/AppCard.js +42 -0
  60. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  61. package/react/components/appCatalog/components/AppResults.d.ts +10 -0
  62. package/react/components/appCatalog/components/AppResults.js +24 -0
  63. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  64. package/react/components/appCatalog/components/Carousel.d.ts +26 -0
  65. package/react/components/appCatalog/components/Carousel.js +34 -0
  66. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  67. package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
  68. package/react/components/appCatalog/components/EmptyResults.js +8 -0
  69. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  70. package/react/components/appCatalog/components/Hero.d.ts +15 -0
  71. package/react/components/appCatalog/components/Hero.js +15 -0
  72. package/react/components/appCatalog/components/Hero.js.map +1 -1
  73. package/react/components/appCatalog/components/Home.d.ts +6 -4
  74. package/react/components/appCatalog/components/Home.js +10 -0
  75. package/react/components/appCatalog/components/Home.js.map +1 -1
  76. package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
  77. package/react/components/appCatalog/components/SearchBar.js +33 -0
  78. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  79. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
  80. package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
  81. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  82. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
  83. package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
  84. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  85. package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
  86. package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
  87. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  88. package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
  89. package/react/components/appCatalog/components/Showcase/Header.js +12 -0
  90. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  91. package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
  92. package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
  93. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  94. package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
  95. package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
  96. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  97. package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
  98. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
  99. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  100. package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
  101. package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
  102. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  103. package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
  104. package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
  105. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  106. package/react/components/appCatalog/components/Tag.d.ts +6 -0
  107. package/react/components/appCatalog/components/Tag.js +10 -0
  108. package/react/components/appCatalog/components/Tag.js.map +1 -1
  109. package/react/components/appCatalog/components/Toast.d.ts +5 -0
  110. package/react/components/appCatalog/components/Toast.js +9 -0
  111. package/react/components/appCatalog/components/Toast.js.map +1 -1
  112. package/react/components/appCatalog/components/helpers.js +1 -0
  113. package/react/components/appCatalog/components/helpers.js.map +1 -1
  114. package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
  115. package/react/components/appCatalog/modules/AppDirectory.js +5 -0
  116. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  117. package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
  118. package/react/components/appCatalog/modules/FDC3.js +40 -0
  119. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  120. package/react/components/appCatalog/stores/appStore.js +1 -0
  121. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  122. package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
  123. package/react/components/appCatalog/stores/storeActions.js +116 -1
  124. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  125. package/react/components/common/ButtonIcon.js +1 -1
  126. package/react/components/common/ButtonIcon.js.map +1 -1
  127. package/react/components/common/ButtonRow.js +2 -2
  128. package/react/components/common/ButtonRow.js.map +1 -1
  129. package/react/components/common/Checkbox.d.ts +1 -0
  130. package/react/components/common/Checkbox.js +3 -3
  131. package/react/components/common/Checkbox.js.map +1 -1
  132. package/react/components/common/ColorPicker.d.ts +5 -0
  133. package/react/components/common/ColorPicker.js +56 -15
  134. package/react/components/common/ColorPicker.js.map +1 -1
  135. package/react/components/common/DropZone.d.ts +11 -0
  136. package/react/components/common/DropZone.js +21 -1
  137. package/react/components/common/DropZone.js.map +1 -1
  138. package/react/components/common/DropdownButton.d.ts +4 -0
  139. package/react/components/common/DropdownButton.js +4 -0
  140. package/react/components/common/DropdownButton.js.map +1 -1
  141. package/react/components/common/ErrorBoundary.d.ts +34 -0
  142. package/react/components/common/ErrorBoundary.js +43 -0
  143. package/react/components/common/ErrorBoundary.js.map +1 -0
  144. package/react/components/common/FileInput.d.ts +8 -1
  145. package/react/components/common/FileInput.js +19 -4
  146. package/react/components/common/FileInput.js.map +1 -1
  147. package/react/components/common/FinsembleIcon.d.ts +13 -2
  148. package/react/components/common/FinsembleIcon.js +61 -5
  149. package/react/components/common/FinsembleIcon.js.map +1 -1
  150. package/react/components/common/FinsembleLink.d.ts +6 -0
  151. package/react/components/common/FinsembleLink.js +12 -0
  152. package/react/components/common/FinsembleLink.js.map +1 -0
  153. package/react/components/common/FinsembleSelect.js +5 -1
  154. package/react/components/common/FinsembleSelect.js.map +1 -1
  155. package/react/components/common/FinsembleToggle.d.ts +1 -2
  156. package/react/components/common/FinsembleToggle.js +2 -6
  157. package/react/components/common/FinsembleToggle.js.map +1 -1
  158. package/react/components/common/FinsembleToggleButtonBar.d.ts +13 -0
  159. package/react/components/common/FinsembleToggleButtonBar.js +44 -0
  160. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -0
  161. package/react/components/common/InputTable.d.ts +10 -3
  162. package/react/components/common/InputTable.js +20 -13
  163. package/react/components/common/InputTable.js.map +1 -1
  164. package/react/components/common/Tab.js +36 -5
  165. package/react/components/common/Tab.js.map +1 -1
  166. package/react/components/common/TimeSelect.js +34 -3
  167. package/react/components/common/TimeSelect.js.map +1 -1
  168. package/react/components/common/Tooltip.js +2 -0
  169. package/react/components/common/Tooltip.js.map +1 -1
  170. package/react/components/common/css/FinsembleToggle.css +22 -0
  171. package/react/components/common/css/accordion.css +9 -6
  172. package/react/components/common/css/application-edit-page.css +48 -45
  173. package/react/components/common/css/button.css +10 -5
  174. package/react/components/common/css/color-picker.css +3 -3
  175. package/react/components/common/css/drop-zone.css +2 -6
  176. package/react/components/common/css/file-input.css +5 -5
  177. package/react/components/common/css/header.css +3 -2
  178. package/react/components/common/css/icon.css +1 -1
  179. package/react/components/common/css/loading-spinner.css +7 -12
  180. package/react/components/common/css/selector.css +4 -4
  181. package/react/components/common/css/styles.css +22 -16
  182. package/react/components/common/css/tab.css +14 -14
  183. package/react/components/common/css/time-select.css +2 -1
  184. package/react/components/common/css/toggle.css +4 -12
  185. package/react/components/common/css/tooltip.css +2 -3
  186. package/react/components/common/file_helpers.js +2 -0
  187. package/react/components/common/file_helpers.js.map +1 -1
  188. package/react/components/common/helpers.js +12 -1
  189. package/react/components/common/helpers.js.map +1 -1
  190. package/react/components/common/stories/ColorPicker.stories.js +9 -11
  191. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  192. package/react/components/common/stories/FileInput.stories.d.ts +3 -1
  193. package/react/components/common/stories/FileInput.stories.js +12 -0
  194. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  195. package/react/components/common/stories/FinsembleToggle.stories.d.ts +1 -2
  196. package/react/components/common/stories/FinsembleToggle.stories.js +0 -7
  197. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  198. package/react/components/common/stories/FinsembleToggleButtonBar.stories.d.ts +14 -0
  199. package/react/components/common/stories/FinsembleToggleButtonBar.stories.js +97 -0
  200. package/react/components/common/stories/FinsembleToggleButtonBar.stories.js.map +1 -0
  201. package/react/components/common/stories/InputTable.stories.d.ts +4 -3
  202. package/react/components/common/stories/InputTable.stories.js +18 -8
  203. package/react/components/common/stories/InputTable.stories.js.map +1 -1
  204. package/react/components/common/tests/Accordion.spec.js +6 -0
  205. package/react/components/common/tests/Accordion.spec.js.map +1 -1
  206. package/react/components/common/tests/ButtonRow.spec.js +5 -0
  207. package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
  208. package/react/components/common/tests/Checkbox.spec.js +1 -0
  209. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  210. package/react/components/common/tests/ColorPicker.spec.js +6 -0
  211. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  212. package/react/components/common/tests/DropZone.spec.js +1 -0
  213. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  214. package/react/components/common/tests/FileInput.spec.js +22 -0
  215. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  216. package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
  217. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  218. package/react/components/common/tests/FinsembleToggle.spec.js +2 -6
  219. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  220. package/react/components/common/tests/FinsembleToggleButtonBar.spec.d.ts +1 -0
  221. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +41 -0
  222. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -0
  223. package/react/components/common/tests/InputTable.spec.js +3 -3
  224. package/react/components/common/tests/InputTable.spec.js.map +1 -1
  225. package/react/components/common/tests/TimeSelect.spec.js +4 -0
  226. package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
  227. package/react/components/common/tests/Tooltip.spec.js +16 -0
  228. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  229. package/react/components/favorites/FavoriteMaker.d.ts +8 -0
  230. package/react/components/favorites/FavoriteMaker.js +10 -1
  231. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  232. package/react/components/favorites/FavoritesShell.d.ts +4 -0
  233. package/react/components/favorites/FavoritesShell.js +13 -1
  234. package/react/components/favorites/FavoritesShell.js.map +1 -1
  235. package/react/components/favorites/FavoritesShell.spec.js +3 -0
  236. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  237. package/react/components/fdc3Resolver/ResolverContainer.js +12 -7
  238. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  239. package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
  240. package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
  241. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  242. package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
  243. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  244. package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
  245. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  246. package/react/components/icon/Icon.d.ts +14 -1
  247. package/react/components/icon/Icon.js +42 -1
  248. package/react/components/icon/Icon.js.map +1 -1
  249. package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
  250. package/react/components/legacyControls/FinsembleDialog.js +16 -1
  251. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  252. package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
  253. package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
  254. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  255. package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
  256. package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
  257. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  258. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
  259. package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
  260. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  261. package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
  262. package/react/components/legacyControls/FinsembleDnDContext.js +133 -8
  263. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  264. package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
  265. package/react/components/legacyControls/FinsembleDraggable.js +3 -0
  266. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  267. package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
  268. package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
  269. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  270. package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
  271. package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
  272. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  273. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
  274. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  275. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
  276. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  277. package/react/components/linker/LinkerMenu.d.ts +3 -0
  278. package/react/components/linker/LinkerMenu.js +21 -0
  279. package/react/components/linker/LinkerMenu.js.map +1 -1
  280. package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
  281. package/react/components/linker/LinkerMenuDeprecated.js +9 -0
  282. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  283. package/react/components/linker/remoteRedux.js +1 -0
  284. package/react/components/linker/remoteRedux.js.map +1 -1
  285. package/react/components/menu/Menu.d.ts +15 -0
  286. package/react/components/menu/Menu.js +15 -0
  287. package/react/components/menu/Menu.js.map +1 -1
  288. package/react/components/menu/MenuAutoResizer.d.ts +7 -0
  289. package/react/components/menu/MenuAutoResizer.js +27 -0
  290. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  291. package/react/components/menu/MenuContent.d.ts +4 -0
  292. package/react/components/menu/MenuContent.js +4 -0
  293. package/react/components/menu/MenuContent.js.map +1 -1
  294. package/react/components/menu/MenuHotKey.d.ts +14 -0
  295. package/react/components/menu/MenuHotKey.js +15 -0
  296. package/react/components/menu/MenuHotKey.js.map +1 -1
  297. package/react/components/menu/MenuItem.d.ts +8 -0
  298. package/react/components/menu/MenuItem.js +13 -2
  299. package/react/components/menu/MenuItem.js.map +1 -1
  300. package/react/components/menu/MenuPortal.js +125 -24
  301. package/react/components/menu/MenuPortal.js.map +1 -1
  302. package/react/components/menu/MenuShell.d.ts +16 -0
  303. package/react/components/menu/MenuShell.js +26 -0
  304. package/react/components/menu/MenuShell.js.map +1 -1
  305. package/react/components/menu/MenuToggle.d.ts +3 -0
  306. package/react/components/menu/MenuToggle.js +5 -2
  307. package/react/components/menu/MenuToggle.js.map +1 -1
  308. package/react/components/menu/keyboardNavigation.d.ts +13 -22
  309. package/react/components/menu/keyboardNavigation.js +165 -160
  310. package/react/components/menu/keyboardNavigation.js.map +1 -1
  311. package/react/components/menu/menuContext.d.ts +6 -0
  312. package/react/components/menu/menuContext.js +6 -0
  313. package/react/components/menu/menuContext.js.map +1 -1
  314. package/react/components/menu/menuHelpers.d.ts +22 -0
  315. package/react/components/menu/menuHelpers.js +58 -1
  316. package/react/components/menu/menuHelpers.js.map +1 -1
  317. package/react/components/notifications/components/drawer/DrawerControls.js +47 -25
  318. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  319. package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
  320. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  321. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +37 -6
  322. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  323. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +3 -0
  324. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  325. package/react/components/notifications/components/shared/CheckButton.js +19 -8
  326. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  327. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
  328. package/react/components/notifications/components/shared/NotificationCardShell.js +15 -7
  329. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  330. package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
  331. package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
  332. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  333. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js +2 -1
  334. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  335. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js +2 -1
  336. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  337. package/react/components/notifications/components/views/CardView.js +8 -3
  338. package/react/components/notifications/components/views/CardView.js.map +1 -1
  339. package/react/components/notifications/components/views/ListView.js +11 -1
  340. package/react/components/notifications/components/views/ListView.js.map +1 -1
  341. package/react/components/notifications/notificationsContext.d.ts +4 -0
  342. package/react/components/notifications/notificationsContext.js +4 -0
  343. package/react/components/notifications/notificationsContext.js.map +1 -1
  344. package/react/components/notifications/types.d.ts +6 -0
  345. package/react/components/notifications/types.js.map +1 -1
  346. package/react/components/notifications/utils.d.ts +4 -0
  347. package/react/components/notifications/utils.js +4 -0
  348. package/react/components/notifications/utils.js.map +1 -1
  349. package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
  350. package/react/components/processMonitor/ProcessMonitor.js +21 -3
  351. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  352. package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
  353. package/react/components/processMonitor/components/ChildWindow.js +5 -0
  354. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  355. package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
  356. package/react/components/processMonitor/components/ListHeader.js +7 -0
  357. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  358. package/react/components/processMonitor/components/ProcessStatistics.js +12 -3
  359. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  360. package/react/components/processMonitor/constants.js +6 -0
  361. package/react/components/processMonitor/constants.js.map +1 -1
  362. package/react/components/processMonitor/helpers.d.ts +13 -0
  363. package/react/components/processMonitor/helpers.js +27 -6
  364. package/react/components/processMonitor/helpers.js.map +1 -1
  365. package/react/components/processMonitor/helpers.spec.js +7 -3
  366. package/react/components/processMonitor/helpers.spec.js.map +1 -1
  367. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
  368. package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
  369. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  370. package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
  371. package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
  372. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  373. package/react/components/quickComponentForm/quickComponent.css +1 -1
  374. package/react/components/sdd/AddApp.d.ts +7 -4
  375. package/react/components/sdd/AddApp.js +144 -34
  376. package/react/components/sdd/AddApp.js.map +1 -1
  377. package/react/components/sdd/AppEditAccess.d.ts +4 -3
  378. package/react/components/sdd/AppEditAccess.js +8 -0
  379. package/react/components/sdd/AppEditAccess.js.map +1 -1
  380. package/react/components/sdd/AppEditPage.d.ts +6 -4
  381. package/react/components/sdd/AppEditPage.js +205 -393
  382. package/react/components/sdd/AppEditPage.js.map +1 -1
  383. package/react/components/sdd/Appearance.css +1 -1
  384. package/react/components/sdd/Appearance.d.ts +2 -1
  385. package/react/components/sdd/Appearance.js +18 -7
  386. package/react/components/sdd/Appearance.js.map +1 -1
  387. package/react/components/sdd/Application.d.ts +5 -4
  388. package/react/components/sdd/Application.js +94 -44
  389. package/react/components/sdd/Application.js.map +1 -1
  390. package/react/components/sdd/Applications.d.ts +12 -11
  391. package/react/components/sdd/Applications.js +110 -15
  392. package/react/components/sdd/Applications.js.map +1 -1
  393. package/react/components/sdd/AssetsPage.css +3 -3
  394. package/react/components/sdd/Authentication.js +1 -6
  395. package/react/components/sdd/Authentication.js.map +1 -1
  396. package/react/components/sdd/AuthenticationProviderConfig.js +5 -3
  397. package/react/components/sdd/AuthenticationProviderConfig.js.map +1 -1
  398. package/react/components/sdd/EditPreload.d.ts +4 -3
  399. package/react/components/sdd/EditPreload.js +49 -22
  400. package/react/components/sdd/EditPreload.js.map +1 -1
  401. package/react/components/sdd/Export.d.ts +7 -6
  402. package/react/components/sdd/Export.js +4 -3
  403. package/react/components/sdd/Export.js.map +1 -1
  404. package/react/components/sdd/ExportCloud.js +4 -0
  405. package/react/components/sdd/ExportCloud.js.map +1 -1
  406. package/react/components/sdd/GettingStarted.js +3 -3
  407. package/react/components/sdd/GettingStarted.js.map +1 -1
  408. package/react/components/sdd/Navigation.js +28 -4
  409. package/react/components/sdd/Navigation.js.map +1 -1
  410. package/react/components/sdd/OptionalSettingsView.d.ts +6 -5
  411. package/react/components/sdd/OptionalSettingsView.js +2 -10
  412. package/react/components/sdd/OptionalSettingsView.js.map +1 -1
  413. package/react/components/sdd/ProjectErrors.js +1 -1
  414. package/react/components/sdd/ProjectErrors.js.map +1 -1
  415. package/react/components/sdd/Publish.js +4 -2
  416. package/react/components/sdd/Publish.js.map +1 -1
  417. package/react/components/sdd/PublishProgress.js +11 -1
  418. package/react/components/sdd/PublishProgress.js.map +1 -1
  419. package/react/components/sdd/SmartDesktopDesigner.d.ts +17 -16
  420. package/react/components/sdd/SmartDesktopDesigner.js +54 -34
  421. package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
  422. package/react/components/sdd/ThemePage.css +6 -23
  423. package/react/components/sdd/ThemePage.js +8 -5
  424. package/react/components/sdd/ThemePage.js.map +1 -1
  425. package/react/components/sdd/Themes.d.ts +2 -1
  426. package/react/components/sdd/Themes.js +4 -2
  427. package/react/components/sdd/Themes.js.map +1 -1
  428. package/react/components/sdd/Toolbar.d.ts +5 -4
  429. package/react/components/sdd/Toolbar.js +18 -9
  430. package/react/components/sdd/Toolbar.js.map +1 -1
  431. package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
  432. package/react/components/sdd/appEditPage/Behavior.js +134 -0
  433. package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
  434. package/react/components/sdd/appEditPage/Component.d.ts +22 -0
  435. package/react/components/sdd/appEditPage/Component.js +76 -0
  436. package/react/components/sdd/appEditPage/Component.js.map +1 -0
  437. package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
  438. package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
  439. package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
  440. package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
  441. package/react/components/sdd/appEditPage/Interop.js +40 -0
  442. package/react/components/sdd/appEditPage/Interop.js.map +1 -0
  443. package/react/components/sdd/appEditPage/Position.d.ts +18 -0
  444. package/react/components/sdd/appEditPage/Position.js +72 -0
  445. package/react/components/sdd/appEditPage/Position.js.map +1 -0
  446. package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
  447. package/react/components/sdd/appEditPage/Preloads.js +16 -0
  448. package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
  449. package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
  450. package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
  451. package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
  452. package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
  453. package/react/components/sdd/appEditPage/Workspace.js +30 -0
  454. package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
  455. package/react/components/sdd/common/getCSSVars.js +7 -2
  456. package/react/components/sdd/common/getCSSVars.js.map +1 -1
  457. package/react/components/sdd/common/setPreloadDefaults.d.ts +1 -1
  458. package/react/components/sdd/common/setPreloadDefaults.js +9 -4
  459. package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
  460. package/react/components/sdd/common/views.js +7 -4
  461. package/react/components/sdd/common/views.js.map +1 -1
  462. package/react/components/sdd/css/addApp.css +65 -0
  463. package/react/components/sdd/css/appearance.css +6 -0
  464. package/react/components/sdd/css/applications.css +27 -34
  465. package/react/components/sdd/css/authentication.css +7 -6
  466. package/react/components/sdd/css/buttons.css +1 -1
  467. package/react/components/sdd/css/export.css +5 -3
  468. package/react/components/sdd/css/getting-started.css +2 -2
  469. package/react/components/sdd/css/nav.css +11 -14
  470. package/react/components/sdd/css/project-header.css +5 -7
  471. package/react/components/sdd/css/styles.css +29 -23
  472. package/react/components/sdd/css/views.css +4 -3
  473. package/react/components/sdd/fixtures/apps.js +12 -0
  474. package/react/components/sdd/fixtures/apps.js.map +1 -1
  475. package/react/components/sdd/fixtures/authenticationProps.js +15 -1
  476. package/react/components/sdd/fixtures/authenticationProps.js.map +1 -1
  477. package/react/components/sdd/fixtures/configTemplate.js +1 -0
  478. package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
  479. package/react/components/sdd/fixtures/preloads.js +14 -12
  480. package/react/components/sdd/fixtures/preloads.js.map +1 -1
  481. package/react/components/sdd/fixtures/publishProgress.js +40 -0
  482. package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
  483. package/react/components/sdd/sdd_helpers.d.ts +6 -0
  484. package/react/components/sdd/sdd_helpers.js +6 -0
  485. package/react/components/sdd/sdd_helpers.js.map +1 -1
  486. package/react/components/sdd/smartDesktopClient.d.ts +466 -0
  487. package/react/components/sdd/smartDesktopClient.js +906 -0
  488. package/react/components/sdd/smartDesktopClient.js.map +1 -0
  489. package/react/components/sdd/smartDesktopClient.spec.d.ts +1 -0
  490. package/react/components/sdd/smartDesktopClient.spec.js +64 -0
  491. package/react/components/sdd/smartDesktopClient.spec.js.map +1 -0
  492. package/react/components/sdd/stories/AddApp.stories.d.ts +11 -0
  493. package/react/components/sdd/stories/AddApp.stories.js +26 -0
  494. package/react/components/sdd/stories/AddApp.stories.js.map +1 -0
  495. package/react/components/sdd/stories/AppEditPage.stories.d.ts +5 -1
  496. package/react/components/sdd/stories/AppEditPage.stories.js +5 -0
  497. package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
  498. package/react/components/sdd/stories/Appearance.stories.d.ts +1 -1
  499. package/react/components/sdd/stories/Appearance.stories.js +2 -0
  500. package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
  501. package/react/components/sdd/stories/Authentication.stories.js +2 -16
  502. package/react/components/sdd/stories/Authentication.stories.js.map +1 -1
  503. package/react/components/sdd/stories/OptionalSettingsView.stories.js +1 -1
  504. package/react/components/sdd/stories/OptionalSettingsView.stories.js.map +1 -1
  505. package/react/components/sdd/stories/SmartDesktopDesigner.stories.d.ts +1 -1
  506. package/react/components/sdd/stories/SmartDesktopDesigner.stories.js +3 -0
  507. package/react/components/sdd/stories/SmartDesktopDesigner.stories.js.map +1 -1
  508. package/react/components/sdd/stories/Themes.stories.d.ts +1 -1
  509. package/react/components/sdd/stories/Themes.stories.js +1 -0
  510. package/react/components/sdd/stories/Themes.stories.js.map +1 -1
  511. package/react/components/sdd/tests/AddApp.spec.d.ts +1 -0
  512. package/react/components/sdd/tests/AddApp.spec.js +133 -0
  513. package/react/components/sdd/tests/AddApp.spec.js.map +1 -0
  514. package/react/components/sdd/tests/AppEditPage.spec.js +108 -23
  515. package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
  516. package/react/components/sdd/tests/Application.spec.js +351 -369
  517. package/react/components/sdd/tests/Application.spec.js.map +1 -1
  518. package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
  519. package/react/components/sdd/tests/Applications.spec.js +30 -50
  520. package/react/components/sdd/tests/Applications.spec.js.map +1 -1
  521. package/react/components/sdd/tests/Authentication.spec.js +8 -1
  522. package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
  523. package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
  524. package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
  525. package/react/components/sdd/tests/EditPreload.spec.js +63 -7
  526. package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
  527. package/react/components/sdd/tests/Export.spec.js +8 -1
  528. package/react/components/sdd/tests/Export.spec.js.map +1 -1
  529. package/react/components/sdd/tests/ItemList.spec.js +4 -0
  530. package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
  531. package/react/components/sdd/tests/Navigation.spec.js +2 -2
  532. package/react/components/sdd/tests/Navigation.spec.js.map +1 -1
  533. package/react/components/sdd/tests/OptionalSettingsView.spec.js +264 -0
  534. package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
  535. package/react/components/sdd/tests/ProjectErrors.spec.js +3 -1
  536. package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
  537. package/react/components/sdd/tests/SmartDesktopDesigner.spec.js +2 -2
  538. package/react/components/sdd/tests/SmartDesktopDesigner.spec.js.map +1 -1
  539. package/react/components/sdd/tests/Themes.spec.js +1 -1
  540. package/react/components/sdd/tests/Themes.spec.js.map +1 -1
  541. package/react/components/sdd/tests/Toolbar.spec.js +53 -0
  542. package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
  543. package/react/components/sdd/tests/a11y_helper.js +8 -0
  544. package/react/components/sdd/tests/a11y_helper.js.map +1 -1
  545. package/react/components/search/Highlight.d.ts +6 -0
  546. package/react/components/search/Highlight.js +19 -0
  547. package/react/components/search/Highlight.js.map +1 -1
  548. package/react/components/search/Highlight.stories.js +1 -1
  549. package/react/components/search/Highlight.stories.js.map +1 -1
  550. package/react/components/search/Search.js +1 -1
  551. package/react/components/search/Search.js.map +1 -1
  552. package/react/components/search/SearchBestMatch.d.ts +4 -0
  553. package/react/components/search/SearchBestMatch.js +11 -0
  554. package/react/components/search/SearchBestMatch.js.map +1 -1
  555. package/react/components/search/SearchInput.d.ts +5 -0
  556. package/react/components/search/SearchInput.js +6 -0
  557. package/react/components/search/SearchInput.js.map +1 -1
  558. package/react/components/search/SearchProviderResults.js +2 -0
  559. package/react/components/search/SearchProviderResults.js.map +1 -1
  560. package/react/components/search/SearchResult.d.ts +5 -0
  561. package/react/components/search/SearchResult.js +6 -0
  562. package/react/components/search/SearchResult.js.map +1 -1
  563. package/react/components/search/SearchResult.spec.d.ts +1 -0
  564. package/react/components/search/SearchResult.spec.js +46 -0
  565. package/react/components/search/SearchResult.spec.js.map +1 -0
  566. package/react/components/search/SearchResult.stories.d.ts +16 -0
  567. package/react/components/search/SearchResult.stories.js +113 -0
  568. package/react/components/search/SearchResult.stories.js.map +1 -0
  569. package/react/components/search/SearchResults.js +5 -1
  570. package/react/components/search/SearchResults.js.map +1 -1
  571. package/react/components/search/SearchResults.spec.d.ts +1 -0
  572. package/react/components/search/SearchResults.spec.js +35 -0
  573. package/react/components/search/SearchResults.spec.js.map +1 -0
  574. package/react/components/search/SearchResults.stories.d.ts +11 -0
  575. package/react/components/search/SearchResults.stories.js +458 -0
  576. package/react/components/search/SearchResults.stories.js.map +1 -0
  577. package/react/components/shared/Animate.d.ts +5 -0
  578. package/react/components/shared/Animate.js +12 -1
  579. package/react/components/shared/Animate.js.map +1 -1
  580. package/react/components/shared/DefaultDropdownButton.js +26 -6
  581. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  582. package/react/components/shared/Tag.d.ts +0 -4
  583. package/react/components/shared/Tag.js +4 -0
  584. package/react/components/shared/Tag.js.map +1 -1
  585. package/react/components/shared/TagsMenu.d.ts +6 -0
  586. package/react/components/shared/TagsMenu.js +7 -0
  587. package/react/components/shared/TagsMenu.js.map +1 -1
  588. package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
  589. package/react/components/shared/addProtocolToValidURL.js +6 -0
  590. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  591. package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
  592. package/react/components/shared/openQuitConfirmationDialog.js +4 -4
  593. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  594. package/react/components/shared/tests/DefaultDropdownButton.spec.js +12 -0
  595. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
  596. package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
  597. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  598. package/react/components/shared/validateURL.d.ts +18 -0
  599. package/react/components/shared/validateURL.js +24 -5
  600. package/react/components/shared/validateURL.js.map +1 -1
  601. package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
  602. package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
  603. package/react/components/singleInputDialog/SingleInputDialog.js +46 -0
  604. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  605. package/react/components/singleInputDialog/SingleInputDialog.stories.js +2 -2
  606. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  607. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +1 -16
  608. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +5 -3
  609. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  610. package/react/components/system/System.d.ts +22 -0
  611. package/react/components/system/System.js +23 -1
  612. package/react/components/system/System.js.map +1 -1
  613. package/react/components/system/System.stories.js +1 -0
  614. package/react/components/system/System.stories.js.map +1 -1
  615. package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
  616. package/react/components/system/SystemTrayComponentShell.js +9 -0
  617. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  618. package/react/components/toolbar/AutoArrange.d.ts +5 -0
  619. package/react/components/toolbar/AutoArrange.js +8 -1
  620. package/react/components/toolbar/AutoArrange.js.map +1 -1
  621. package/react/components/toolbar/AutoArrange.spec.js +10 -4
  622. package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
  623. package/react/components/toolbar/AutoArrange.stories.js +1 -0
  624. package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
  625. package/react/components/toolbar/DragHandle.d.ts +4 -0
  626. package/react/components/toolbar/DragHandle.js +11 -0
  627. package/react/components/toolbar/DragHandle.js.map +1 -1
  628. package/react/components/toolbar/DragHandle.spec.js +1 -0
  629. package/react/components/toolbar/DragHandle.spec.js.map +1 -1
  630. package/react/components/toolbar/DragHandle.stories.js +1 -0
  631. package/react/components/toolbar/DragHandle.stories.js.map +1 -1
  632. package/react/components/toolbar/MinimizeAll.d.ts +4 -0
  633. package/react/components/toolbar/MinimizeAll.js +7 -1
  634. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  635. package/react/components/toolbar/MinimizeAll.spec.js +1 -0
  636. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  637. package/react/components/toolbar/MinimizeAll.stories.js +1 -0
  638. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  639. package/react/components/toolbar/NotificationControl.d.ts +5 -0
  640. package/react/components/toolbar/NotificationControl.js +8 -1
  641. package/react/components/toolbar/NotificationControl.js.map +1 -1
  642. package/react/components/toolbar/RevealAll.d.ts +4 -0
  643. package/react/components/toolbar/RevealAll.js +7 -1
  644. package/react/components/toolbar/RevealAll.js.map +1 -1
  645. package/react/components/toolbar/RevealAll.spec.js +1 -0
  646. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  647. package/react/components/toolbar/RevealAll.stories.js +1 -0
  648. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  649. package/react/components/toolbar/SddButton.d.ts +4 -0
  650. package/react/components/toolbar/SddButton.js +4 -0
  651. package/react/components/toolbar/SddButton.js.map +1 -1
  652. package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
  653. package/react/components/toolbar/ToolbarIcon.js +6 -2
  654. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  655. package/react/components/toolbar/ToolbarSection.d.ts +8 -9
  656. package/react/components/toolbar/ToolbarSection.js +21 -7
  657. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  658. package/react/components/toolbar/ToolbarShell.d.ts +5 -0
  659. package/react/components/toolbar/ToolbarShell.js +7 -0
  660. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  661. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
  662. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
  663. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  664. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
  665. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
  666. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  667. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
  668. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
  669. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  670. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
  671. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
  672. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  673. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
  674. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +14 -0
  675. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  676. package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
  677. package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
  678. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  679. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
  680. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
  681. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  682. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
  683. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
  684. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  685. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
  686. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
  687. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  688. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
  689. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  690. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
  691. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
  692. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  693. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
  694. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
  695. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  696. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
  697. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
  698. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  699. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
  700. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
  701. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  702. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
  703. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +83 -1
  704. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  705. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
  706. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +12 -3
  707. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  708. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
  709. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
  710. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  711. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
  712. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
  713. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  714. package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
  715. package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
  716. package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
  717. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  718. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
  719. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
  720. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  721. package/react/components/toolbar/dashbar/Dashbar.js +91 -15
  722. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  723. package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
  724. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  725. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +8 -1
  726. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
  727. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  728. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +17 -1
  729. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +21 -1
  730. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  731. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
  732. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
  733. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  734. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +6 -1
  735. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
  736. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  737. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +78 -2
  738. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +191 -40
  739. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  740. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
  741. package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
  742. package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
  743. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  744. package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
  745. package/react/components/userPreferences/UserPreferences.d.ts +8 -0
  746. package/react/components/userPreferences/UserPreferences.js +8 -0
  747. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  748. package/react/components/userPreferences/UserPreferencesBase.js +4 -0
  749. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  750. package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
  751. package/react/components/userPreferences/components/ContentSection.js +1 -1
  752. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  753. package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
  754. package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
  755. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  756. package/react/components/userPreferences/components/content/Notifications.js +3 -0
  757. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  758. package/react/components/userPreferences/components/content/Workspaces.d.ts +14 -2
  759. package/react/components/userPreferences/components/content/Workspaces.js +78 -38
  760. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  761. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +7 -3
  762. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  763. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
  764. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  765. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
  766. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  767. package/react/components/userPreferences/components/general/ScheduledClose.js +26 -5
  768. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  769. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +1 -1
  770. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  771. package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +1 -1
  772. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +20 -10
  773. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  774. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +18 -1
  775. package/react/components/userPreferences/stores/UserPreferencesStore.js +35 -6
  776. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  777. package/react/components/userPreferences/tests/LeftNav.spec.js +15 -1
  778. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -1
  779. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
  780. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  781. package/react/components/userPreferences/tests/UserPreferencesBase.spec.d.ts +1 -0
  782. package/react/components/userPreferences/tests/UserPreferencesBase.spec.js +42 -0
  783. package/react/components/userPreferences/tests/UserPreferencesBase.spec.js.map +1 -0
  784. package/react/components/userPreferences/tests/Workspace.spec.d.ts +1 -0
  785. package/react/components/userPreferences/tests/Workspace.spec.js +139 -0
  786. package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -0
  787. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +130 -2
  788. package/react/components/windowTitleBar/WindowTitleBarShell.js +386 -27
  789. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  790. package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
  791. package/react/components/windowTitleBar/components/center/Tab.js +3 -0
  792. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  793. package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
  794. package/react/components/windowTitleBar/components/center/TabList.js +170 -4
  795. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  796. package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
  797. package/react/components/windowTitleBar/components/left/LinkerButton.js +27 -5
  798. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  799. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
  800. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
  801. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  802. package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
  803. package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
  804. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  805. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
  806. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
  807. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  808. package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
  809. package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
  810. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  811. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
  812. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  813. package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
  814. package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
  815. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  816. package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
  817. package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
  818. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  819. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
  820. package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
  821. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  822. package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
  823. package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
  824. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  825. package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
  826. package/react/components/windowTitleBar/components/windowTitle.js +245 -48
  827. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  828. package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
  829. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +81 -6
  830. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  831. package/react/components/yesNoDialog/YesNoDialog.css +1 -1
  832. package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
  833. package/react/components/yesNoDialog/YesNoDialog.js +64 -1
  834. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  835. package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
  836. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  837. package/react/components/yesNoDialog/YesNoDialog.stories.js +2 -2
  838. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  839. package/react/components/yesNoDialog/timer.js +2 -0
  840. package/react/components/yesNoDialog/timer.js.map +1 -1
  841. package/react/enzymeSetup.js +10 -0
  842. package/react/enzymeSetup.js.map +1 -1
  843. package/react/hooks/useDashbar.js +10 -0
  844. package/react/hooks/useDashbar.js.map +1 -1
  845. package/react/hooks/useDeepEffect.d.ts +4 -0
  846. package/react/hooks/useDeepEffect.js +21 -0
  847. package/react/hooks/useDeepEffect.js.map +1 -1
  848. package/react/hooks/useFavorites.d.ts +15 -0
  849. package/react/hooks/useFavorites.js +3 -0
  850. package/react/hooks/useFavorites.js.map +1 -1
  851. package/react/hooks/useFavoritesShell.d.ts +4 -0
  852. package/react/hooks/useFavoritesShell.js +23 -0
  853. package/react/hooks/useFavoritesShell.js.map +1 -1
  854. package/react/hooks/useHotkey.d.ts +6 -0
  855. package/react/hooks/useHotkey.js +9 -0
  856. package/react/hooks/useHotkey.js.map +1 -1
  857. package/react/hooks/useLinker.js +14 -0
  858. package/react/hooks/useLinker.js.map +1 -1
  859. package/react/hooks/useMenu.d.ts +29 -0
  860. package/react/hooks/useMenu.js +12 -1
  861. package/react/hooks/useMenu.js.map +1 -1
  862. package/react/hooks/useNotifications.d.ts +44 -0
  863. package/react/hooks/useNotifications.js +104 -12
  864. package/react/hooks/useNotifications.js.map +1 -1
  865. package/react/hooks/useOutsideClickDetector.d.ts +3 -0
  866. package/react/hooks/useOutsideClickDetector.js +3 -0
  867. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  868. package/react/hooks/usePubSub.d.ts +17 -0
  869. package/react/hooks/usePubSub.js +18 -0
  870. package/react/hooks/usePubSub.js.map +1 -1
  871. package/react/hooks/useSearch.d.ts +5 -0
  872. package/react/hooks/useSearch.js +30 -0
  873. package/react/hooks/useSearch.js.map +1 -1
  874. package/react/hooks/useToolbar.d.ts +1 -1
  875. package/react/hooks/useToolbar.js +54 -2
  876. package/react/hooks/useToolbar.js.map +1 -1
  877. package/react/reducers/favoriteReducer.d.ts +3 -0
  878. package/react/reducers/linkerReducer.d.ts +3 -0
  879. package/react/reducers/linkerReducer.js +4 -0
  880. package/react/reducers/linkerReducer.js.map +1 -1
  881. package/react/reducers/menuReducer.d.ts +28 -0
  882. package/react/reducers/menuReducer.js +34 -0
  883. package/react/reducers/menuReducer.js.map +1 -1
  884. package/react/reducers/rootReducer.d.ts +2 -2
  885. package/react/reducers/rootReducer.js +3 -0
  886. package/react/reducers/rootReducer.js.map +1 -1
  887. package/react/reducers/searchReducer.d.ts +7 -0
  888. package/react/reducers/searchReducer.js +6 -0
  889. package/react/reducers/searchReducer.js.map +1 -1
  890. package/react/reducers/workspaceReducer.js +1 -0
  891. package/react/reducers/workspaceReducer.js.map +1 -1
  892. package/react/store.d.ts +8 -4
  893. package/react/store.js +11 -0
  894. package/react/store.js.map +1 -1
  895. package/react/tsconfig.tsbuildinfo +1 -0
  896. package/react/types/fdc3.d.ts +2 -0
  897. package/react/types/linkerTypes.d.ts +13 -0
  898. package/react/types/linkerTypes.js +1 -0
  899. package/react/types/linkerTypes.js.map +1 -1
  900. package/react/types/smartDesktopDesignerTypes.d.ts +8 -0
  901. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  902. package/react/types/workspaceTypes.d.ts +8 -0
@@ -1,10 +1,39 @@
1
1
  declare type MenuHook = {
2
+ /**
3
+ * The Id of the menu that is currently open
4
+ *
5
+ * @type {string | null}
6
+ */
2
7
  openMenuId: string | null;
8
+ /**
9
+ * Dispatches a TOGGLE_MENU action, which should cause the menu to close if it is open, or to open if it is closed.
10
+ */
3
11
  toggleMenu: () => void;
12
+ /**
13
+ * Dispatches a CLOSE_MENU action, which should cause the menu to close if it is open.
14
+ */
4
15
  closeMenu: () => void;
16
+ /**
17
+ * Dispatches a CLOSE_MENU action after a timeout (DURATION in ms). See description in useMenu comments.
18
+ */
5
19
  blurMenu: () => void;
20
+ /**
21
+ * Dispatches a OPEN_MENU action, which should cause the menu to open if it is closed.
22
+ */
6
23
  openMenu: () => void;
24
+ /**
25
+ * Returns true if the id of the menu matches the currently active menu
26
+ * @return boolean - Returns true if the menu is active
27
+ */
7
28
  isMenuActive: () => boolean;
8
29
  };
30
+ /**
31
+ * A hook for working with menus. It gets its implicit menu "id" from React context.
32
+ * It dispatches actions to the reducer to modify menu state across MenuShell instances.
33
+ *
34
+ * See menuReducer.ts for "toggle/blur" race condition algorithm
35
+ *
36
+ * Setting window.FSBL.debug=true will override menu close on blur, to make it easier to debug windows
37
+ */
9
38
  export declare const useMenu: () => MenuHook;
10
39
  export {};
@@ -2,6 +2,14 @@ import { useDispatch, useSelector } from "../store";
2
2
  import { MenuActions } from "../actions/menuActions";
3
3
  import { useCallback, useContext } from "react";
4
4
  import { MenuContext } from "../components/menu/menuContext";
5
+ /**
6
+ * A hook for working with menus. It gets its implicit menu "id" from React context.
7
+ * It dispatches actions to the reducer to modify menu state across MenuShell instances.
8
+ *
9
+ * See menuReducer.ts for "toggle/blur" race condition algorithm
10
+ *
11
+ * Setting window.FSBL.debug=true will override menu close on blur, to make it easier to debug windows
12
+ */
5
13
  export const useMenu = () => {
6
14
  const DURATION = 120;
7
15
  const dispatch = useDispatch();
@@ -11,6 +19,7 @@ export const useMenu = () => {
11
19
  dispatch(MenuActions.TOGGLE_MENU(thisMenuId));
12
20
  }, [dispatch, thisMenuId]);
13
21
  const openMenu = useCallback(() => {
22
+ // without this call, the toolbar will stay hidden behind other content, and the menus will not be visible
14
23
  FSBL.Clients.WindowClient.bringToFront();
15
24
  dispatch(MenuActions.OPEN_MENU(thisMenuId));
16
25
  }, [dispatch, thisMenuId]);
@@ -19,11 +28,13 @@ export const useMenu = () => {
19
28
  }, [dispatch, thisMenuId]);
20
29
  const blurMenu = useCallback(() => {
21
30
  if (FSBL === null || FSBL === void 0 ? void 0 : FSBL.debug)
22
- return;
31
+ return; // If we're debugging then don't blur menus
32
+ // This is a purposeful closure. There is no need to update it with new state.
23
33
  const closeIfPending = () => {
24
34
  dispatch(MenuActions.CLOSE_MENU_IF_PENDING(thisMenuId));
25
35
  };
26
36
  dispatch(MenuActions.BLUR_MENU(thisMenuId));
37
+ // See menuReducer.ts for how this timeout is used. Removing the timeout will cause a race condition.
27
38
  setTimeout(closeIfPending, DURATION);
28
39
  }, [dispatch, thisMenuId]);
29
40
  const isMenuActive = () => openMenuId === thisMenuId;
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/hooks/useMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAwC7D,MAAM,CAAC,MAAM,OAAO,GAAG,GAAa,EAAE;IACrC,MAAM,QAAQ,GAAW,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAEjC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACzC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK;YAAE,OAAO;QAGxB,MAAM,cAAc,GAAG,GAAG,EAAE;YAC3B,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAG5C,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,YAAY,GAAG,GAAY,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;IAE9D,OAAO;QACN,UAAU;QACV,UAAU;QACV,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,YAAY;KACZ,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { useDispatch, useSelector } from \"../store\";\nimport { MenuActions } from \"../actions/menuActions\";\nimport { useCallback, useContext } from \"react\";\nimport { MenuContext } from \"../components/menu/menuContext\";\n\ntype MenuHook = {\n\t/**\n\t * The Id of the menu that is currently open\n\t *\n\t * @type {string | null}\n\t */\n\topenMenuId: string | null;\n\t/**\n\t * Dispatches a TOGGLE_MENU action, which should cause the menu to close if it is open, or to open if it is closed.\n\t */\n\ttoggleMenu: () => void;\n\t/**\n\t * Dispatches a CLOSE_MENU action, which should cause the menu to close if it is open.\n\t */\n\tcloseMenu: () => void;\n\t/**\n\t * Dispatches a CLOSE_MENU action after a timeout (DURATION in ms). See description in useMenu comments.\n\t */\n\tblurMenu: () => void;\n\t/**\n\t * Dispatches a OPEN_MENU action, which should cause the menu to open if it is closed.\n\t */\n\topenMenu: () => void;\n\t/**\n\t * Returns true if the id of the menu matches the currently active menu\n\t * @return boolean - Returns true if the menu is active\n\t */\n\tisMenuActive: () => boolean;\n};\n\n/**\n * A hook for working with menus. It gets its implicit menu \"id\" from React context.\n * It dispatches actions to the reducer to modify menu state across MenuShell instances.\n *\n * See menuReducer.ts for \"toggle/blur\" race condition algorithm\n *\n * Setting window.FSBL.debug=true will override menu close on blur, to make it easier to debug windows\n */\nexport const useMenu = (): MenuHook => {\n\tconst DURATION: number = 120;\n\tconst dispatch = useDispatch();\n\tconst { openMenuId } = useSelector((state) => state.menu);\n\tconst { thisMenuId } = useContext(MenuContext);\n\n\tconst toggleMenu = useCallback(() => {\n\t\tdispatch(MenuActions.TOGGLE_MENU(thisMenuId));\n\t}, [dispatch, thisMenuId]);\n\n\tconst openMenu = useCallback(() => {\n\t\t// without this call, the toolbar will stay hidden behind other content, and the menus will not be visible\n\t\tFSBL.Clients.WindowClient.bringToFront();\n\t\tdispatch(MenuActions.OPEN_MENU(thisMenuId));\n\t}, [dispatch, thisMenuId]);\n\n\tconst closeMenu = useCallback(() => {\n\t\tdispatch(MenuActions.CLOSE_MENU(thisMenuId));\n\t}, [dispatch, thisMenuId]);\n\n\tconst blurMenu = useCallback(() => {\n\t\tif (FSBL?.debug) return; // If we're debugging then don't blur menus\n\n\t\t// This is a purposeful closure. There is no need to update it with new state.\n\t\tconst closeIfPending = () => {\n\t\t\tdispatch(MenuActions.CLOSE_MENU_IF_PENDING(thisMenuId));\n\t\t};\n\n\t\tdispatch(MenuActions.BLUR_MENU(thisMenuId));\n\n\t\t// See menuReducer.ts for how this timeout is used. Removing the timeout will cause a race condition.\n\t\tsetTimeout(closeIfPending, DURATION);\n\t}, [dispatch, thisMenuId]);\n\n\tconst isMenuActive = (): boolean => openMenuId === thisMenuId;\n\n\treturn {\n\t\topenMenuId,\n\t\ttoggleMenu,\n\t\tcloseMenu,\n\t\topenMenu,\n\t\tblurMenu,\n\t\tisMenuActive,\n\t};\n};\n"]}
1
+ {"version":3,"file":"useMenu.js","sourceRoot":"","sources":["../../src/hooks/useMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAgC7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAa,EAAE;IACrC,MAAM,QAAQ,GAAW,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,0GAA0G;QAC1G,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACzC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK;YAAE,OAAO,CAAC,2CAA2C;QAEpE,8EAA8E;QAC9E,MAAM,cAAc,GAAG,GAAG,EAAE;YAC3B,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5C,qGAAqG;QACrG,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,YAAY,GAAG,GAAY,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;IAE9D,OAAO;QACN,UAAU;QACV,UAAU;QACV,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,YAAY;KACZ,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { useDispatch, useSelector } from \"../store\";\nimport { MenuActions } from \"../actions/menuActions\";\nimport { useCallback, useContext } from \"react\";\nimport { MenuContext } from \"../components/menu/menuContext\";\n\ntype MenuHook = {\n\t/**\n\t * The Id of the menu that is currently open\n\t *\n\t * @type {string | null}\n\t */\n\topenMenuId: string | null;\n\t/**\n\t * Dispatches a TOGGLE_MENU action, which should cause the menu to close if it is open, or to open if it is closed.\n\t */\n\ttoggleMenu: () => void;\n\t/**\n\t * Dispatches a CLOSE_MENU action, which should cause the menu to close if it is open.\n\t */\n\tcloseMenu: () => void;\n\t/**\n\t * Dispatches a CLOSE_MENU action after a timeout (DURATION in ms). See description in useMenu comments.\n\t */\n\tblurMenu: () => void;\n\t/**\n\t * Dispatches a OPEN_MENU action, which should cause the menu to open if it is closed.\n\t */\n\topenMenu: () => void;\n\t/**\n\t * Returns true if the id of the menu matches the currently active menu\n\t * @return boolean - Returns true if the menu is active\n\t */\n\tisMenuActive: () => boolean;\n};\n\n/**\n * A hook for working with menus. It gets its implicit menu \"id\" from React context.\n * It dispatches actions to the reducer to modify menu state across MenuShell instances.\n *\n * See menuReducer.ts for \"toggle/blur\" race condition algorithm\n *\n * Setting window.FSBL.debug=true will override menu close on blur, to make it easier to debug windows\n */\nexport const useMenu = (): MenuHook => {\n\tconst DURATION: number = 120;\n\tconst dispatch = useDispatch();\n\tconst { openMenuId } = useSelector((state) => state.menu);\n\tconst { thisMenuId } = useContext(MenuContext);\n\n\tconst toggleMenu = useCallback(() => {\n\t\tdispatch(MenuActions.TOGGLE_MENU(thisMenuId));\n\t}, [dispatch, thisMenuId]);\n\n\tconst openMenu = useCallback(() => {\n\t\t// without this call, the toolbar will stay hidden behind other content, and the menus will not be visible\n\t\tFSBL.Clients.WindowClient.bringToFront();\n\t\tdispatch(MenuActions.OPEN_MENU(thisMenuId));\n\t}, [dispatch, thisMenuId]);\n\n\tconst closeMenu = useCallback(() => {\n\t\tdispatch(MenuActions.CLOSE_MENU(thisMenuId));\n\t}, [dispatch, thisMenuId]);\n\n\tconst blurMenu = useCallback(() => {\n\t\tif (FSBL?.debug) return; // If we're debugging then don't blur menus\n\n\t\t// This is a purposeful closure. There is no need to update it with new state.\n\t\tconst closeIfPending = () => {\n\t\t\tdispatch(MenuActions.CLOSE_MENU_IF_PENDING(thisMenuId));\n\t\t};\n\n\t\tdispatch(MenuActions.BLUR_MENU(thisMenuId));\n\n\t\t// See menuReducer.ts for how this timeout is used. Removing the timeout will cause a race condition.\n\t\tsetTimeout(closeIfPending, DURATION);\n\t}, [dispatch, thisMenuId]);\n\n\tconst isMenuActive = (): boolean => openMenuId === thisMenuId;\n\n\treturn {\n\t\topenMenuId,\n\t\ttoggleMenu,\n\t\tcloseMenu,\n\t\topenMenu,\n\t\tblurMenu,\n\t\tisMenuActive,\n\t};\n};\n"]}
@@ -6,19 +6,63 @@ declare type IMuteFilter = services.notification.types.IMuteFilter;
6
6
  declare type INotification = services.notification.types.INotification;
7
7
  declare type INotificationHistoryOptions = services.notification.types.INotificationHistoryOptions;
8
8
  declare type NotificationUIStatePublish = (state: NotificationServiceState) => void;
9
+ /**
10
+ * Thin wrapper around usePubSub to give us typesafety for the notification service's UI state.
11
+ * Automatically appends this client's windowName which is used by the notification service to
12
+ * display the notification center on an appropriate monitor.
13
+ */
9
14
  export declare const useNotificationUI: () => [state: services.notification.types.NotificationServiceState, setState: NotificationUIStatePublish];
10
15
  export declare const moveToToolbarMonitor: () => Promise<void>;
11
16
  export declare const getOS: () => "Windows" | "Linux" | "Mac" | undefined;
17
+ /**
18
+ * Example for setting up button clicks
19
+ *
20
+ * @param notification
21
+ * @param action
22
+ */
12
23
  export declare const doAction: (notification: INotification, action: any) => void;
24
+ /**
25
+ * Example for setting up button clicks
26
+ *
27
+ * @param filter
28
+ */
13
29
  export declare const mute: (filter: IMuteFilter) => Promise<void>;
30
+ /**
31
+ * Example for setting up button clicks
32
+ *
33
+ * @param filter
34
+ */
14
35
  export declare const unmute: (filter: IMuteFilter) => Promise<void>;
36
+ /**
37
+ * Snooze a notification
38
+ *
39
+ * @param {INotification[]} notifications
40
+ */
15
41
  export declare const snoozeNotifications: (notifications: INotification[]) => Promise<void>;
42
+ /**
43
+ * Marks a notification as read
44
+ *
45
+ * @param {INotification[]} notifications
46
+ */
16
47
  export declare const markNotificationsUnread: (notifications: INotification[]) => void;
48
+ /**
49
+ * Marks a notification as read
50
+ *
51
+ * @param {INotification[]} notifications
52
+ */
17
53
  export declare const markNotificationsRead: (notifications: INotification[]) => void;
54
+ /**
55
+ * Dismisses a notification
56
+ *
57
+ * @param {INotification[]} notifications
58
+ */
18
59
  export declare const dismissNotification: (notifications: INotification[]) => void;
19
60
  export declare const initializeCenterToggle: () => {
20
61
  toggleCenter: () => void;
21
62
  };
63
+ /**
64
+ * Get Notification's config from
65
+ */
22
66
  export declare const getNotificationConfig: () => NotificationsConfig;
23
67
  export declare const getFetchHistoryParams: (config: any, params: any) => any[];
24
68
  export default function useNotifications(params?: any): {
@@ -3,9 +3,15 @@ import { usePubSub } from "./usePubSub";
3
3
  import { NOTIFICATIONS_PUBSUB_TOPIC } from "../components/notifications/constants";
4
4
  const { WindowClient, NotificationClient } = FSBL.Clients;
5
5
  const initialState = { notifications: [] };
6
+ /*
7
+ Action Types
8
+ */
6
9
  const CREATE_MULTIPLE = "CREATE_MULTIPLE";
7
10
  const UPDATE = "UPDATE";
8
11
  const REMOVE = "REMOVE";
12
+ /*
13
+ Reducer
14
+ */
9
15
  function reducer(state, action) {
10
16
  switch (action.type) {
11
17
  case CREATE_MULTIPLE:
@@ -13,7 +19,9 @@ function reducer(state, action) {
13
19
  notifications: [...state.notifications, ...action.payload],
14
20
  };
15
21
  case UPDATE: {
22
+ // check to see if the notification exists if so update the values
16
23
  const notificationExistsInArray = state.notifications.find((notification) => notification.id === action.payload.id);
24
+ //if the notification exists then do nothing and return the current state else add the the new notification to the state
17
25
  const notifications = notificationExistsInArray
18
26
  ? state.notifications.map((notification) => notification.id === action.payload.id ? action.payload : notification)
19
27
  : [action.payload, ...state.notifications];
@@ -27,6 +35,11 @@ function reducer(state, action) {
27
35
  throw new Error();
28
36
  }
29
37
  }
38
+ /**
39
+ * Thin wrapper around usePubSub to give us typesafety for the notification service's UI state.
40
+ * Automatically appends this client's windowName which is used by the notification service to
41
+ * display the notification center on an appropriate monitor.
42
+ */
30
43
  export const useNotificationUI = () => {
31
44
  const [state, setState] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);
32
45
  const setStateAndAddWindowName = (newState) => {
@@ -60,9 +73,9 @@ export const moveToToolbarMonitor = async () => {
60
73
  const activeDescriptors = await getActiveDescriptorsByType("Toolbar");
61
74
  toolbarWindowName = (_a = activeDescriptors[0]) === null || _a === void 0 ? void 0 : _a.name;
62
75
  }
63
- const { err, data } = (await FSBL.Clients.LauncherClient.getMonitorInfo({
76
+ const { err, data } = await FSBL.Clients.LauncherClient.getMonitorInfo({
64
77
  windowIdentifier: { windowName: toolbarWindowName },
65
- }));
78
+ });
66
79
  if (err) {
67
80
  FSBL.Clients.Logger.system.error("Could not get Monitor info", err);
68
81
  reject(err);
@@ -70,9 +83,15 @@ export const moveToToolbarMonitor = async () => {
70
83
  }
71
84
  resolve(data);
72
85
  });
73
- const data = (await getToolbarMonitorData());
86
+ const data = await getToolbarMonitorData();
74
87
  const { data: bounds } = await finsembleWindow.getBounds();
75
88
  const width = ((_a = bounds === null || bounds === void 0 ? void 0 : bounds.right) !== null && _a !== void 0 ? _a : 0) - ((_b = bounds === null || bounds === void 0 ? void 0 : bounds.left) !== null && _b !== void 0 ? _b : 0);
89
+ /**
90
+ * It's been reported that on docked laptops and some curved monitors that getMonitorInfo returns undefined.
91
+ * The root cause of this has not been determined.
92
+ */
93
+ if (!data)
94
+ return;
76
95
  finsembleWindow.setBounds({
77
96
  bounds: {
78
97
  top: data["availableRect"]["top"],
@@ -97,34 +116,61 @@ export const getOS = () => {
97
116
  return "Mac";
98
117
  }
99
118
  };
119
+ /**
120
+ * Example for setting up button clicks
121
+ *
122
+ * @param notification
123
+ * @param action
124
+ */
100
125
  export const doAction = (notification, action) => {
101
126
  try {
102
127
  NotificationClient.performAction([notification], action).then(() => {
128
+ // NOTE: The request to perform the action has be sent to the notifications service successfully
129
+ // The action itself has not necessarily been perform successfully
130
+ // 1) alert user notification has been sent (action may not have completed)
103
131
  });
104
132
  }
105
133
  catch (e) {
134
+ // NOTE: The request to perform the action has failed
106
135
  console.error("could not create a notification client", e);
107
136
  FSBL.Clients.Logger.system.error("could not create a notification client", e);
108
137
  }
109
138
  };
139
+ /**
140
+ * Example for setting up button clicks
141
+ *
142
+ * @param filter
143
+ */
110
144
  export const mute = async (filter) => {
111
145
  try {
112
146
  await NotificationClient.mute(filter);
113
147
  }
114
148
  catch (e) {
149
+ // NOTE: The request to perform the action has failed
115
150
  console.error("Could not save mute preferences", e);
116
151
  FSBL.Clients.Logger.system.error("Could not save mute preferences", e);
117
152
  }
118
153
  };
154
+ /**
155
+ * Example for setting up button clicks
156
+ *
157
+ * @param filter
158
+ */
119
159
  export const unmute = async (filter) => {
120
160
  try {
121
161
  await NotificationClient.unmute(filter);
122
162
  }
123
163
  catch (e) {
164
+ // NOTE: The request to perform the action has failed
124
165
  console.error("Could not save mute preferences", e);
125
166
  FSBL.Clients.Logger.system.error("Could not save mute preferences", e);
126
167
  }
127
168
  };
169
+ /**
170
+ * Snooze a notification
171
+ *
172
+ * @param {INotification[]} notifications
173
+ */
128
174
  export const snoozeNotifications = async (notifications) => {
129
175
  const preferences = await FSBL.Clients.NotificationClient.getPreferences();
130
176
  const snoozeAction = new FSBL.Clients.NotificationClient.Action();
@@ -137,9 +183,16 @@ export const snoozeNotifications = async (notifications) => {
137
183
  doAction(notifications[i], snoozeAction);
138
184
  }
139
185
  };
186
+ /**
187
+ * Marks a notification as read
188
+ *
189
+ * @param {INotification[]} notifications
190
+ */
140
191
  export const markNotificationsUnread = (notifications) => {
141
192
  try {
142
193
  NotificationClient.markUnread(notifications).then(() => {
194
+ // NOTE: The request to perform the action has be sent to the notifications service successfully
195
+ // The action itself has not necessarily been perform successfully
143
196
  });
144
197
  }
145
198
  catch (e) {
@@ -147,9 +200,16 @@ export const markNotificationsUnread = (notifications) => {
147
200
  FSBL.Clients.Logger.system.error("Could not mark notification as unread", e);
148
201
  }
149
202
  };
203
+ /**
204
+ * Marks a notification as read
205
+ *
206
+ * @param {INotification[]} notifications
207
+ */
150
208
  export const markNotificationsRead = (notifications) => {
151
209
  try {
152
210
  NotificationClient.markRead(notifications).then(() => {
211
+ // NOTE: The request to perform the action has be sent to the notifications service successfully
212
+ // The action itself has not necessarily been perform successfully
153
213
  });
154
214
  }
155
215
  catch (e) {
@@ -157,9 +217,16 @@ export const markNotificationsRead = (notifications) => {
157
217
  FSBL.Clients.Logger.system.error("Could not mark notification as read", e);
158
218
  }
159
219
  };
220
+ /**
221
+ * Dismisses a notification
222
+ *
223
+ * @param {INotification[]} notifications
224
+ */
160
225
  export const dismissNotification = (notifications) => {
161
226
  try {
162
227
  NotificationClient.deleteNotifications(notifications).then(() => {
228
+ // NOTE: The request to perform the action has be sent to the notifications service successfully
229
+ // The action itself has not necessarily been perform successfully
163
230
  });
164
231
  }
165
232
  catch (e) {
@@ -176,6 +243,9 @@ export const initializeCenterToggle = () => {
176
243
  toggleCenter,
177
244
  };
178
245
  };
246
+ /**
247
+ * Get Notification's config from
248
+ */
179
249
  export const getNotificationConfig = () => {
180
250
  var _a, _b, _c, _d;
181
251
  const config = WindowClient.options.customData;
@@ -186,10 +256,13 @@ export const getNotificationConfig = () => {
186
256
  export const getFetchHistoryParams = (config, params) => {
187
257
  var _a, _b;
188
258
  const notificationsHistory = (config === null || config === void 0 ? void 0 : config.notificationsHistory) || ((_a = params === null || params === void 0 ? void 0 : params.config) === null || _a === void 0 ? void 0 : _a.notificationsHistory);
259
+ // Backwards compatibility - `since` replaced with `options` object
189
260
  let options = notificationsHistory.since ? notificationsHistory.since : null;
261
+ // Use options object if it's been set in the component config
190
262
  if (!options) {
191
263
  options = notificationsHistory === null || notificationsHistory === void 0 ? void 0 : notificationsHistory.options;
192
264
  }
265
+ // If no options object set and notificationsHistory is true set in config, use the params
193
266
  if (!options && typeof notificationsHistory === "boolean" && notificationsHistory) {
194
267
  options = (_b = params === null || params === void 0 ? void 0 : params.config) === null || _b === void 0 ? void 0 : _b.notificationsHistory.options;
195
268
  }
@@ -198,6 +271,9 @@ export const getFetchHistoryParams = (config, params) => {
198
271
  };
199
272
  export default function useNotifications(params = {}) {
200
273
  const [state, dispatch] = useReducer(reducer, initialState);
274
+ /*
275
+ Action Creators
276
+ */
201
277
  const removeNotification = (notification) => {
202
278
  dispatch({ type: REMOVE, payload: notification });
203
279
  };
@@ -207,6 +283,10 @@ export default function useNotifications(params = {}) {
207
283
  const addMultipleNotifications = (notifications) => {
208
284
  dispatch({ type: CREATE_MULTIPLE, payload: notifications });
209
285
  };
286
+ /**
287
+ * Group Notifications by Type
288
+ * @param notifications
289
+ */
210
290
  const groupNotificationsByType = (notifications) => {
211
291
  const groupBy = (arr) => arr
212
292
  .map((notification) => { var _a; return (_a = notification.type) !== null && _a !== void 0 ? _a : "unknown"; })
@@ -216,6 +296,12 @@ export default function useNotifications(params = {}) {
216
296
  }, {});
217
297
  return groupBy(notifications);
218
298
  };
299
+ /**
300
+ * * get the past notifications
301
+ * WARNING - The default will get all notifications all the way back from 1969!!!
302
+ * @param since
303
+ * @param filter
304
+ */
219
305
  const getNotificationHistory = (since = { sentAfter: "1969-12-31T23:59:59.999Z" }, filter = null) => NotificationClient.fetchHistory(since, filter);
220
306
  const notificationIsActive = (notification, applyMuteFilterOverride) => {
221
307
  let applyMuteFilters = applyMuteFilterOverride;
@@ -229,28 +315,29 @@ export default function useNotifications(params = {}) {
229
315
  (applyMuteFilters ? !notification.isMuted : true));
230
316
  };
231
317
  const activeNotifications = (notifications, applyMuteFilterOverride) => notifications.filter((notification) => notificationIsActive(notification, applyMuteFilterOverride));
318
+ /**
319
+ * Main init function to start the subscription
320
+ */
232
321
  async function init() {
233
- var _a;
322
+ var _a, _b, _c, _d, _e;
234
323
  try {
235
324
  const subscription = new NotificationClient.Subscription();
236
325
  const notificationConfig = getNotificationConfig();
237
326
  const filter = new NotificationClient.Filter();
327
+ // make filters from the config
238
328
  if (notificationConfig) {
239
- notificationConfig.filter &&
240
- notificationConfig.filter.include &&
241
- filter.include.push(...notificationConfig.filter.include);
242
- notificationConfig.filter &&
243
- notificationConfig.filter.exclude &&
244
- filter.exclude.push(...notificationConfig.filter.exclude);
329
+ ((_a = notificationConfig.filter) === null || _a === void 0 ? void 0 : _a.include) && ((_b = filter.include) === null || _b === void 0 ? void 0 : _b.push(...notificationConfig.filter.include));
330
+ ((_c = notificationConfig.filter) === null || _c === void 0 ? void 0 : _c.exclude) && ((_d = filter.exclude) === null || _d === void 0 ? void 0 : _d.push(...notificationConfig.filter.exclude));
245
331
  }
246
332
  subscription.filter = filter;
247
- const notificationsHistory = (notificationConfig === null || notificationConfig === void 0 ? void 0 : notificationConfig.notificationsHistory) || ((_a = params === null || params === void 0 ? void 0 : params.config) === null || _a === void 0 ? void 0 : _a.notificationsHistory);
333
+ const notificationsHistory = (notificationConfig === null || notificationConfig === void 0 ? void 0 : notificationConfig.notificationsHistory) || ((_e = params === null || params === void 0 ? void 0 : params.config) === null || _e === void 0 ? void 0 : _e.notificationsHistory);
248
334
  if (notificationsHistory) {
249
335
  const [options, historyFilter] = getFetchHistoryParams(notificationConfig, params);
250
336
  const pastNotifications = await getNotificationHistory(options, historyFilter);
251
337
  addMultipleNotifications(pastNotifications);
252
338
  }
253
339
  const onNotification = function (notification) {
340
+ // This function will be called when a notification arrives
254
341
  if (notification.isDeleted) {
255
342
  removeNotification(notification);
256
343
  }
@@ -264,6 +351,9 @@ export default function useNotifications(params = {}) {
264
351
  console.error(error);
265
352
  }
266
353
  }
354
+ /**
355
+ * Set opaque class to html element
356
+ */
267
357
  function setOpaqueClassName(isOpaque) {
268
358
  if (isOpaque) {
269
359
  const htmlElement = document.getElementsByTagName("html")[0];
@@ -272,11 +362,13 @@ export default function useNotifications(params = {}) {
272
362
  }
273
363
  }
274
364
  }
365
+ // start receiving Notifications and putting them in state
275
366
  useEffect(() => {
276
367
  const subscribe = init();
277
368
  return () => {
369
+ // Unsubscribe using the subscription ID
278
370
  (async () => {
279
- const subscribeObject = (await subscribe);
371
+ const subscribeObject = await subscribe;
280
372
  if (subscribeObject) {
281
373
  await NotificationClient.unsubscribe(subscribeObject.id);
282
374
  }
@@ -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\";\nimport { WindowConfig, NotificationsConfig } from \"../components/notifications/types\";\nimport { usePubSub } from \"./usePubSub\";\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../components/notifications/constants\";\nimport { services } from \"@finsemble/finsemble-api\";\ntype NotificationServiceState = services.notification.types.NotificationServiceState;\n\ntype IFilter = services.notification.types.IFilter;\ntype IMuteFilter = services.notification.types.IMuteFilter;\ntype INotification = services.notification.types.INotification;\ntype INotificationHistoryOptions = services.notification.types.INotificationHistoryOptions;\n\nconst { WindowClient, NotificationClient } = FSBL.Clients;\n\nconst initialState: any = { notifications: [] };\n\n/*\nAction Types\n*/\nconst CREATE_MULTIPLE = \"CREATE_MULTIPLE\";\nconst UPDATE = \"UPDATE\";\nconst REMOVE = \"REMOVE\";\n\n/*\n\tReducer\n\t*/\nfunction reducer(state: { notifications: INotification[] }, action: { type: string; payload: any }) {\n\tswitch (action.type) {\n\t\tcase CREATE_MULTIPLE:\n\t\t\treturn {\n\t\t\t\tnotifications: [...state.notifications, ...action.payload],\n\t\t\t};\n\t\tcase UPDATE: {\n\t\t\t// check to see if the notification exists if so update the values\n\t\t\tconst notificationExistsInArray = state.notifications.find(\n\t\t\t\t(notification: INotification) => notification.id === action.payload.id\n\t\t\t);\n\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\n\t\t\tconst notifications = notificationExistsInArray\n\t\t\t\t? state.notifications.map((notification: INotification) =>\n\t\t\t\t\t\tnotification.id === action.payload.id ? action.payload : notification\n\t\t\t\t )\n\t\t\t\t: [action.payload, ...state.notifications];\n\n\t\t\treturn { notifications };\n\t\t}\n\t\tcase REMOVE:\n\t\t\treturn {\n\t\t\t\tnotifications: state.notifications.filter((notification) => notification.id !== action.payload.id),\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error();\n\t}\n}\n\ntype NotificationUIStatePublish = (state: NotificationServiceState) => void;\n\n/**\n * Thin wrapper around usePubSub to give us typesafety for the notification service's UI state.\n * Automatically appends this client's windowName which is used by the notification service to\n * display the notification center on an appropriate monitor.\n */\nexport const useNotificationUI = (): [state: NotificationServiceState, setState: NotificationUIStatePublish] => {\n\tconst [state, setState] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\n\n\tconst setStateAndAddWindowName = (newState: NotificationServiceState) => {\n\t\tsetState({\n\t\t\t...newState,\n\t\t\tmostRecentWindowName: finsembleWindow.name,\n\t\t});\n\t};\n\treturn [state as NotificationServiceState, setStateAndAddWindowName];\n};\n\nconst getActiveDescriptorsByType = (componentType: string): Promise<any[]> =>\n\tnew Promise(async (resolve, reject) => {\n\t\tFSBL.Clients.LauncherClient.getActiveDescriptors((err: any, data: any) => {\n\t\t\tconst activeDescriptors: any[] = [];\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\tfor (const key in data) {\n\t\t\t\t\tif (data.hasOwnProperty(key) && data[key]?.componentType === componentType) {\n\t\t\t\t\t\tactiveDescriptors.push(data[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresolve(activeDescriptors);\n\t\t});\n\t});\n\nlet toolbarWindowName: string;\n\nexport const moveToToolbarMonitor = async () => {\n\tconst getToolbarMonitorData = async () =>\n\t\tnew Promise(async (resolve, reject) => {\n\t\t\tif (!toolbarWindowName) {\n\t\t\t\tconst activeDescriptors = await getActiveDescriptorsByType(\"Toolbar\");\n\t\t\t\ttoolbarWindowName = activeDescriptors[0]?.name;\n\t\t\t}\n\t\t\tconst { err, data } = (await FSBL.Clients.LauncherClient.getMonitorInfo({\n\t\t\t\twindowIdentifier: { windowName: toolbarWindowName },\n\t\t\t})) as any;\n\n\t\t\tif (err) {\n\t\t\t\tFSBL.Clients.Logger.system.error(\"Could not get Monitor info\", err);\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve(data);\n\t\t});\n\n\tconst data = (await getToolbarMonitorData()) as any;\n\tconst { data: bounds } = await finsembleWindow.getBounds();\n\tconst width = (bounds?.right ?? 0) - (bounds?.left ?? 0);\n\n\tfinsembleWindow.setBounds(\n\t\t{\n\t\t\tbounds: {\n\t\t\t\ttop: data[\"availableRect\"][\"top\"],\n\t\t\t\tleft: data[\"availableRect\"][\"right\"] - width,\n\t\t\t\theight: data[\"availableRect\"][\"height\"],\n\t\t\t\twidth: width,\n\t\t\t},\n\t\t},\n\t\t(err: any) => {\n\t\t\tif (err) {\n\t\t\t\tFSBL.Clients.Logger.system.error(\"Could not update position\", err);\n\t\t\t}\n\t\t}\n\t);\n};\n\nexport const getOS = () => {\n\tif (navigator.platform.indexOf(\"Win\") != -1) {\n\t\treturn \"Windows\";\n\t} else if (navigator.platform.indexOf(\"Linux\") != -1) {\n\t\treturn \"Linux\";\n\t} else if (navigator.platform.indexOf(\"Mac\") != -1) {\n\t\treturn \"Mac\";\n\t}\n};\n\n/**\n * Example for setting up button clicks\n *\n * @param notification\n * @param action\n */\nexport const doAction = (notification: INotification, action: any) => {\n\ttry {\n\t\tNotificationClient.performAction([notification], action).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t\t// 1) alert user notification has been sent (action may not have completed)\n\t\t});\n\t} catch (e) {\n\t\t// NOTE: The request to perform the action has failed\n\t\tconsole.error(\"could not create a notification client\", e);\n\t\tFSBL.Clients.Logger.system.error(\"could not create a notification client\", e);\n\t}\n};\n\n/**\n * Example for setting up button clicks\n *\n * @param filter\n */\nexport const mute = async (filter: IMuteFilter) => {\n\ttry {\n\t\tawait NotificationClient.mute(filter);\n\t} catch (e) {\n\t\t// NOTE: The request to perform the action has failed\n\t\tconsole.error(\"Could not save mute preferences\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not save mute preferences\", e);\n\t}\n};\n\n/**\n * Example for setting up button clicks\n *\n * @param filter\n */\nexport const unmute = async (filter: IMuteFilter) => {\n\ttry {\n\t\tawait NotificationClient.unmute(filter);\n\t} catch (e) {\n\t\t// NOTE: The request to perform the action has failed\n\t\tconsole.error(\"Could not save mute preferences\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not save mute preferences\", e);\n\t}\n};\n\n/**\n * Snooze a notification\n *\n * @param {INotification[]} notifications\n */\nexport const snoozeNotifications = async (notifications: INotification[]) => {\n\tconst preferences: any = await FSBL.Clients.NotificationClient.getPreferences();\n\tconst snoozeAction = new FSBL.Clients.NotificationClient.Action();\n\tsnoozeAction.type = FSBL.Clients.NotificationClient.ActionTypes.SNOOZE;\n\tif (preferences && preferences.defaultSnoozePeriodSeconds) {\n\t\tsnoozeAction.milliseconds = preferences.defaultSnoozePeriodSeconds * 1000;\n\t}\n\tsnoozeAction.buttonText = \"Snooze\";\n\n\tfor (let i = 0; i < notifications.length; i++) {\n\t\tdoAction(notifications[i], snoozeAction);\n\t}\n};\n\n/**\n * Marks a notification as read\n *\n * @param {INotification[]} notifications\n */\nexport const markNotificationsUnread = (notifications: INotification[]) => {\n\ttry {\n\t\tNotificationClient.markUnread(notifications).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Error marking messages as unread\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not mark notification as unread\", e);\n\t}\n};\n\n/**\n * Marks a notification as read\n *\n * @param {INotification[]} notifications\n */\nexport const markNotificationsRead = (notifications: INotification[]) => {\n\ttry {\n\t\tNotificationClient.markRead(notifications).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Error marking messages as read\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not mark notification as read\", e);\n\t}\n};\n\n/**\n * Dismisses a notification\n *\n * @param {INotification[]} notifications\n */\nexport const dismissNotification = (notifications: INotification[]) => {\n\ttry {\n\t\tNotificationClient.deleteNotifications(notifications).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Error marking messages as read\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not mark notification as read\", e);\n\t}\n};\n\nexport const initializeCenterToggle = () => {\n\tconst [uiState, setUIState] = useNotificationUI();\n\n\tconst toggleCenter = () => {\n\t\tsetUIState({\n\t\t\t...uiState,\n\t\t\tshowCenter: !uiState.showCenter,\n\t\t});\n\t};\n\n\treturn {\n\t\ttoggleCenter,\n\t};\n};\n\n/**\n * Get Notification's config from\n */\nexport const getNotificationConfig = (): NotificationsConfig => {\n\tconst config: WindowConfig = WindowClient.options.customData;\n\n\treturn Object.assign(config?.window?.data?.notifications || {}, {\n\t\tisTransparent: config?.window?.options?.transparent || false,\n\t});\n};\n\nexport const getFetchHistoryParams = (config: any, params: any) => {\n\tconst notificationsHistory = config?.notificationsHistory || params?.config?.notificationsHistory;\n\n\t// Backwards compatibility - `since` replaced with `options` object\n\tlet options = notificationsHistory.since ? notificationsHistory.since : null;\n\n\t// Use options object if it's been set in the component config\n\tif (!options) {\n\t\toptions = notificationsHistory?.options;\n\t}\n\n\t// If no options object set and notificationsHistory is true set in config, use the params\n\tif (!options && typeof notificationsHistory === \"boolean\" && notificationsHistory) {\n\t\toptions = params?.config?.notificationsHistory.options;\n\t}\n\n\tconst filter = notificationsHistory.filter ? notificationsHistory.filter : null;\n\n\treturn [options, filter];\n};\n\nexport default function useNotifications(params: any = {}) {\n\tconst [state, dispatch] = useReducer(reducer, initialState);\n\n\t/*\n\t\tAction Creators\n\t*/\n\tconst removeNotification = (notification: INotification) => {\n\t\tdispatch({ type: REMOVE, payload: notification });\n\t};\n\n\tconst addNotification = (notification: INotification) => {\n\t\tdispatch({ type: UPDATE, payload: notification });\n\t};\n\n\tconst addMultipleNotifications = (notifications: INotification[]) => {\n\t\tdispatch({ type: CREATE_MULTIPLE, payload: notifications });\n\t};\n\n\t/**\n\t * Group Notifications by Type\n\t * @param notifications\n\t */\n\tconst groupNotificationsByType = (notifications: INotification[]) => {\n\t\tconst groupBy = (arr: INotification[]) =>\n\t\t\tarr\n\t\t\t\t.map((notification: INotification): string => notification.type ?? \"unknown\")\n\t\t\t\t.reduce((acc: { [x: string]: any }, notificationType: string, index: number) => {\n\t\t\t\t\tacc[notificationType] = [...(acc[notificationType] || []), arr[index]];\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {});\n\n\t\treturn groupBy(notifications);\n\t};\n\n\t/**\n\t * \t * get the past notifications\n\t * WARNING - The default will get all notifications all the way back from 1969!!!\n\t * @param since\n\t * @param filter\n\t */\n\tconst getNotificationHistory = (\n\t\tsince: INotificationHistoryOptions = { sentAfter: \"1969-12-31T23:59:59.999Z\" },\n\t\tfilter: null | IFilter = null\n\t): Promise<INotification[]> => NotificationClient.fetchHistory(since, filter as IFilter);\n\n\tconst notificationIsActive = (notification: INotification, applyMuteFilterOverride?: boolean | undefined) => {\n\t\tlet applyMuteFilters = applyMuteFilterOverride;\n\n\t\tif (typeof applyMuteFilterOverride === \"undefined\") {\n\t\t\tconst config = getNotificationConfig();\n\t\t\tapplyMuteFilters = config?.applyMuteFilters ? config.applyMuteFilters : false;\n\t\t}\n\n\t\treturn (\n\t\t\t!notification.isSnoozed &&\n\t\t\t!notification.isRead &&\n\t\t\t!notification.isDeleted &&\n\t\t\t(applyMuteFilters ? !notification.isMuted : true)\n\t\t);\n\t};\n\n\tconst activeNotifications = (notifications: INotification[], applyMuteFilterOverride?: boolean | undefined) =>\n\t\tnotifications.filter((notification) => notificationIsActive(notification, applyMuteFilterOverride));\n\n\t/**\n\t * Main init function to start the subscription\n\t */\n\tasync function init() {\n\t\ttry {\n\t\t\tconst subscription = new NotificationClient.Subscription();\n\n\t\t\tconst notificationConfig: NotificationsConfig = getNotificationConfig();\n\n\t\t\tconst filter: IFilter = new NotificationClient.Filter();\n\n\t\t\t// make filters from the config\n\t\t\tif (notificationConfig) {\n\t\t\t\tnotificationConfig.filter &&\n\t\t\t\t\tnotificationConfig.filter.include &&\n\t\t\t\t\tfilter.include.push(...notificationConfig.filter.include);\n\n\t\t\t\tnotificationConfig.filter &&\n\t\t\t\t\tnotificationConfig.filter.exclude &&\n\t\t\t\t\tfilter.exclude.push(...notificationConfig.filter.exclude);\n\t\t\t}\n\n\t\t\tsubscription.filter = filter;\n\n\t\t\tconst notificationsHistory = notificationConfig?.notificationsHistory || params?.config?.notificationsHistory;\n\n\t\t\tif (notificationsHistory) {\n\t\t\t\tconst [options, historyFilter] = getFetchHistoryParams(notificationConfig, params);\n\n\t\t\t\tconst pastNotifications = await getNotificationHistory(options, historyFilter);\n\t\t\t\taddMultipleNotifications(pastNotifications);\n\t\t\t}\n\t\t\tconst onNotification = function (notification: INotification) {\n\t\t\t\t// This function will be called when a notification arrives\n\t\t\t\tif (notification.isDeleted) {\n\t\t\t\t\tremoveNotification(notification);\n\t\t\t\t} else {\n\t\t\t\t\taddNotification(notification);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn NotificationClient.subscribe(subscription, onNotification);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Set opaque class to html element\n\t */\n\tfunction setOpaqueClassName(isOpaque: boolean) {\n\t\tif (isOpaque) {\n\t\t\tconst htmlElement = document.getElementsByTagName(\"html\")[0];\n\t\t\tif (!htmlElement.className.includes(\"opaque\")) {\n\t\t\t\thtmlElement.className = `${htmlElement.className} opaque`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// start receiving Notifications and putting them in state\n\tuseEffect(() => {\n\t\tconst subscribe = init();\n\t\treturn () => {\n\t\t\t// Unsubscribe using the subscription ID\n\t\t\t(async () => {\n\t\t\t\tconst subscribeObject = (await subscribe) as any;\n\t\t\t\tif (subscribeObject) {\n\t\t\t\t\tawait NotificationClient.unsubscribe(subscribeObject.id);\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\t}, []);\n\n\treturn {\n\t\tactiveNotifications,\n\t\taddNotification,\n\t\tnotificationIsActive,\n\t\tgetNotificationHistory,\n\t\tgroupNotificationsByType,\n\t\tnotifications: state.notifications,\n\t\tremoveNotification,\n\t\tsetOpaqueClassName,\n\t};\n}\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\";\nimport { WindowConfig, NotificationsConfig } from \"../components/notifications/types\";\nimport { usePubSub } from \"./usePubSub\";\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../components/notifications/constants\";\nimport { services } from \"@finsemble/finsemble-api\";\nimport { FEA } from \"@finsemble/finsemble-api\";\ntype NotificationServiceState = services.notification.types.NotificationServiceState;\n\ntype IFilter = services.notification.types.IFilter;\ntype IMuteFilter = services.notification.types.IMuteFilter;\ntype INotification = services.notification.types.INotification;\ntype INotificationHistoryOptions = services.notification.types.INotificationHistoryOptions;\ntype MonitorInfoDetail = FEA.MonitorInfoDetail;\n\nconst { WindowClient, NotificationClient } = FSBL.Clients;\n\nconst initialState: any = { notifications: [] };\n\n/*\nAction Types\n*/\nconst CREATE_MULTIPLE = \"CREATE_MULTIPLE\";\nconst UPDATE = \"UPDATE\";\nconst REMOVE = \"REMOVE\";\n\n/*\n\tReducer\n\t*/\nfunction reducer(state: { notifications: INotification[] }, action: { type: string; payload: any }) {\n\tswitch (action.type) {\n\t\tcase CREATE_MULTIPLE:\n\t\t\treturn {\n\t\t\t\tnotifications: [...state.notifications, ...action.payload],\n\t\t\t};\n\t\tcase UPDATE: {\n\t\t\t// check to see if the notification exists if so update the values\n\t\t\tconst notificationExistsInArray = state.notifications.find(\n\t\t\t\t(notification: INotification) => notification.id === action.payload.id\n\t\t\t);\n\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\n\t\t\tconst notifications = notificationExistsInArray\n\t\t\t\t? state.notifications.map((notification: INotification) =>\n\t\t\t\t\t\tnotification.id === action.payload.id ? action.payload : notification\n\t\t\t\t )\n\t\t\t\t: [action.payload, ...state.notifications];\n\n\t\t\treturn { notifications };\n\t\t}\n\t\tcase REMOVE:\n\t\t\treturn {\n\t\t\t\tnotifications: state.notifications.filter((notification) => notification.id !== action.payload.id),\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error();\n\t}\n}\n\ntype NotificationUIStatePublish = (state: NotificationServiceState) => void;\n\n/**\n * Thin wrapper around usePubSub to give us typesafety for the notification service's UI state.\n * Automatically appends this client's windowName which is used by the notification service to\n * display the notification center on an appropriate monitor.\n */\nexport const useNotificationUI = (): [state: NotificationServiceState, setState: NotificationUIStatePublish] => {\n\tconst [state, setState] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\n\n\tconst setStateAndAddWindowName = (newState: NotificationServiceState) => {\n\t\tsetState({\n\t\t\t...newState,\n\t\t\tmostRecentWindowName: finsembleWindow.name,\n\t\t});\n\t};\n\treturn [state as NotificationServiceState, setStateAndAddWindowName];\n};\n\nconst getActiveDescriptorsByType = (componentType: string): Promise<any[]> =>\n\tnew Promise(async (resolve, reject) => {\n\t\tFSBL.Clients.LauncherClient.getActiveDescriptors((err: any, data: any) => {\n\t\t\tconst activeDescriptors: any[] = [];\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\tfor (const key in data) {\n\t\t\t\t\tif (data.hasOwnProperty(key) && data[key]?.componentType === componentType) {\n\t\t\t\t\t\tactiveDescriptors.push(data[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresolve(activeDescriptors);\n\t\t});\n\t});\n\nlet toolbarWindowName: string;\n\nexport const moveToToolbarMonitor = async () => {\n\tconst getToolbarMonitorData = async () =>\n\t\tnew Promise<MonitorInfoDetail | undefined>(async (resolve, reject) => {\n\t\t\tif (!toolbarWindowName) {\n\t\t\t\tconst activeDescriptors = await getActiveDescriptorsByType(\"Toolbar\");\n\t\t\t\ttoolbarWindowName = activeDescriptors[0]?.name;\n\t\t\t}\n\t\t\tconst { err, data } = await FSBL.Clients.LauncherClient.getMonitorInfo({\n\t\t\t\twindowIdentifier: { windowName: toolbarWindowName },\n\t\t\t});\n\n\t\t\tif (err) {\n\t\t\t\tFSBL.Clients.Logger.system.error(\"Could not get Monitor info\", err);\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve(data);\n\t\t});\n\n\tconst data = await getToolbarMonitorData();\n\tconst { data: bounds } = await finsembleWindow.getBounds();\n\tconst width = (bounds?.right ?? 0) - (bounds?.left ?? 0);\n\n\t/**\n\t * It's been reported that on docked laptops and some curved monitors that getMonitorInfo returns undefined.\n\t * The root cause of this has not been determined.\n\t */\n\tif (!data) return;\n\tfinsembleWindow.setBounds(\n\t\t{\n\t\t\tbounds: {\n\t\t\t\ttop: data[\"availableRect\"][\"top\"],\n\t\t\t\tleft: data[\"availableRect\"][\"right\"] - width,\n\t\t\t\theight: data[\"availableRect\"][\"height\"],\n\t\t\t\twidth: width,\n\t\t\t},\n\t\t},\n\t\t(err: any) => {\n\t\t\tif (err) {\n\t\t\t\tFSBL.Clients.Logger.system.error(\"Could not update position\", err);\n\t\t\t}\n\t\t}\n\t);\n};\n\nexport const getOS = () => {\n\tif (navigator.platform.indexOf(\"Win\") != -1) {\n\t\treturn \"Windows\";\n\t} else if (navigator.platform.indexOf(\"Linux\") != -1) {\n\t\treturn \"Linux\";\n\t} else if (navigator.platform.indexOf(\"Mac\") != -1) {\n\t\treturn \"Mac\";\n\t}\n};\n\n/**\n * Example for setting up button clicks\n *\n * @param notification\n * @param action\n */\nexport const doAction = (notification: INotification, action: any) => {\n\ttry {\n\t\tNotificationClient.performAction([notification], action).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t\t// 1) alert user notification has been sent (action may not have completed)\n\t\t});\n\t} catch (e) {\n\t\t// NOTE: The request to perform the action has failed\n\t\tconsole.error(\"could not create a notification client\", e);\n\t\tFSBL.Clients.Logger.system.error(\"could not create a notification client\", e);\n\t}\n};\n\n/**\n * Example for setting up button clicks\n *\n * @param filter\n */\nexport const mute = async (filter: IMuteFilter) => {\n\ttry {\n\t\tawait NotificationClient.mute(filter);\n\t} catch (e) {\n\t\t// NOTE: The request to perform the action has failed\n\t\tconsole.error(\"Could not save mute preferences\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not save mute preferences\", e);\n\t}\n};\n\n/**\n * Example for setting up button clicks\n *\n * @param filter\n */\nexport const unmute = async (filter: IMuteFilter) => {\n\ttry {\n\t\tawait NotificationClient.unmute(filter);\n\t} catch (e) {\n\t\t// NOTE: The request to perform the action has failed\n\t\tconsole.error(\"Could not save mute preferences\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not save mute preferences\", e);\n\t}\n};\n\n/**\n * Snooze a notification\n *\n * @param {INotification[]} notifications\n */\nexport const snoozeNotifications = async (notifications: INotification[]) => {\n\tconst preferences: any = await FSBL.Clients.NotificationClient.getPreferences();\n\tconst snoozeAction = new FSBL.Clients.NotificationClient.Action();\n\tsnoozeAction.type = FSBL.Clients.NotificationClient.ActionTypes.SNOOZE;\n\tif (preferences && preferences.defaultSnoozePeriodSeconds) {\n\t\tsnoozeAction.milliseconds = preferences.defaultSnoozePeriodSeconds * 1000;\n\t}\n\tsnoozeAction.buttonText = \"Snooze\";\n\n\tfor (let i = 0; i < notifications.length; i++) {\n\t\tdoAction(notifications[i], snoozeAction);\n\t}\n};\n\n/**\n * Marks a notification as read\n *\n * @param {INotification[]} notifications\n */\nexport const markNotificationsUnread = (notifications: INotification[]) => {\n\ttry {\n\t\tNotificationClient.markUnread(notifications).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Error marking messages as unread\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not mark notification as unread\", e);\n\t}\n};\n\n/**\n * Marks a notification as read\n *\n * @param {INotification[]} notifications\n */\nexport const markNotificationsRead = (notifications: INotification[]) => {\n\ttry {\n\t\tNotificationClient.markRead(notifications).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Error marking messages as read\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not mark notification as read\", e);\n\t}\n};\n\n/**\n * Dismisses a notification\n *\n * @param {INotification[]} notifications\n */\nexport const dismissNotification = (notifications: INotification[]) => {\n\ttry {\n\t\tNotificationClient.deleteNotifications(notifications).then(() => {\n\t\t\t// NOTE: The request to perform the action has be sent to the notifications service successfully\n\t\t\t// The action itself has not necessarily been perform successfully\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Error marking messages as read\", e);\n\t\tFSBL.Clients.Logger.system.error(\"Could not mark notification as read\", e);\n\t}\n};\n\nexport const initializeCenterToggle = () => {\n\tconst [uiState, setUIState] = useNotificationUI();\n\n\tconst toggleCenter = () => {\n\t\tsetUIState({\n\t\t\t...uiState,\n\t\t\tshowCenter: !uiState.showCenter,\n\t\t});\n\t};\n\n\treturn {\n\t\ttoggleCenter,\n\t};\n};\n\n/**\n * Get Notification's config from\n */\nexport const getNotificationConfig = (): NotificationsConfig => {\n\tconst config: WindowConfig = WindowClient.options.customData;\n\n\treturn Object.assign(config?.window?.data?.notifications || {}, {\n\t\tisTransparent: config?.window?.options?.transparent || false,\n\t});\n};\n\nexport const getFetchHistoryParams = (config: any, params: any) => {\n\tconst notificationsHistory = config?.notificationsHistory || params?.config?.notificationsHistory;\n\n\t// Backwards compatibility - `since` replaced with `options` object\n\tlet options = notificationsHistory.since ? notificationsHistory.since : null;\n\n\t// Use options object if it's been set in the component config\n\tif (!options) {\n\t\toptions = notificationsHistory?.options;\n\t}\n\n\t// If no options object set and notificationsHistory is true set in config, use the params\n\tif (!options && typeof notificationsHistory === \"boolean\" && notificationsHistory) {\n\t\toptions = params?.config?.notificationsHistory.options;\n\t}\n\n\tconst filter = notificationsHistory.filter ? notificationsHistory.filter : null;\n\n\treturn [options, filter];\n};\n\nexport default function useNotifications(params: any = {}) {\n\tconst [state, dispatch] = useReducer(reducer, initialState);\n\n\t/*\n\t\tAction Creators\n\t*/\n\tconst removeNotification = (notification: INotification) => {\n\t\tdispatch({ type: REMOVE, payload: notification });\n\t};\n\n\tconst addNotification = (notification: INotification) => {\n\t\tdispatch({ type: UPDATE, payload: notification });\n\t};\n\n\tconst addMultipleNotifications = (notifications: INotification[]) => {\n\t\tdispatch({ type: CREATE_MULTIPLE, payload: notifications });\n\t};\n\n\t/**\n\t * Group Notifications by Type\n\t * @param notifications\n\t */\n\tconst groupNotificationsByType = (notifications: INotification[]) => {\n\t\tconst groupBy = (arr: INotification[]) =>\n\t\t\tarr\n\t\t\t\t.map((notification: INotification): string => notification.type ?? \"unknown\")\n\t\t\t\t.reduce((acc: { [x: string]: any }, notificationType: string, index: number) => {\n\t\t\t\t\tacc[notificationType] = [...(acc[notificationType] || []), arr[index]];\n\t\t\t\t\treturn acc;\n\t\t\t\t}, {});\n\n\t\treturn groupBy(notifications);\n\t};\n\n\t/**\n\t * \t * get the past notifications\n\t * WARNING - The default will get all notifications all the way back from 1969!!!\n\t * @param since\n\t * @param filter\n\t */\n\tconst getNotificationHistory = (\n\t\tsince: INotificationHistoryOptions = { sentAfter: \"1969-12-31T23:59:59.999Z\" },\n\t\tfilter: null | IFilter = null\n\t): Promise<INotification[]> => NotificationClient.fetchHistory(since, filter as IFilter);\n\n\tconst notificationIsActive = (notification: INotification, applyMuteFilterOverride?: boolean | undefined) => {\n\t\tlet applyMuteFilters = applyMuteFilterOverride;\n\n\t\tif (typeof applyMuteFilterOverride === \"undefined\") {\n\t\t\tconst config = getNotificationConfig();\n\t\t\tapplyMuteFilters = config?.applyMuteFilters ? config.applyMuteFilters : false;\n\t\t}\n\n\t\treturn (\n\t\t\t!notification.isSnoozed &&\n\t\t\t!notification.isRead &&\n\t\t\t!notification.isDeleted &&\n\t\t\t(applyMuteFilters ? !notification.isMuted : true)\n\t\t);\n\t};\n\n\tconst activeNotifications = (notifications: INotification[], applyMuteFilterOverride?: boolean | undefined) =>\n\t\tnotifications.filter((notification) => notificationIsActive(notification, applyMuteFilterOverride));\n\n\t/**\n\t * Main init function to start the subscription\n\t */\n\tasync function init() {\n\t\ttry {\n\t\t\tconst subscription = new NotificationClient.Subscription();\n\n\t\t\tconst notificationConfig: NotificationsConfig = getNotificationConfig();\n\n\t\t\tconst filter: IFilter = new NotificationClient.Filter();\n\n\t\t\t// make filters from the config\n\t\t\tif (notificationConfig) {\n\t\t\t\tnotificationConfig.filter?.include && filter.include?.push(...notificationConfig.filter.include);\n\t\t\t\tnotificationConfig.filter?.exclude && filter.exclude?.push(...notificationConfig.filter.exclude);\n\t\t\t}\n\n\t\t\tsubscription.filter = filter;\n\n\t\t\tconst notificationsHistory = notificationConfig?.notificationsHistory || params?.config?.notificationsHistory;\n\n\t\t\tif (notificationsHistory) {\n\t\t\t\tconst [options, historyFilter] = getFetchHistoryParams(notificationConfig, params);\n\n\t\t\t\tconst pastNotifications = await getNotificationHistory(options, historyFilter);\n\t\t\t\taddMultipleNotifications(pastNotifications);\n\t\t\t}\n\t\t\tconst onNotification = function (notification: INotification) {\n\t\t\t\t// This function will be called when a notification arrives\n\t\t\t\tif (notification.isDeleted) {\n\t\t\t\t\tremoveNotification(notification);\n\t\t\t\t} else {\n\t\t\t\t\taddNotification(notification);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn NotificationClient.subscribe(subscription, onNotification);\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Set opaque class to html element\n\t */\n\tfunction setOpaqueClassName(isOpaque: boolean) {\n\t\tif (isOpaque) {\n\t\t\tconst htmlElement = document.getElementsByTagName(\"html\")[0];\n\t\t\tif (!htmlElement.className.includes(\"opaque\")) {\n\t\t\t\thtmlElement.className = `${htmlElement.className} opaque`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// start receiving Notifications and putting them in state\n\tuseEffect(() => {\n\t\tconst subscribe = init();\n\t\treturn () => {\n\t\t\t// Unsubscribe using the subscription ID\n\t\t\t(async () => {\n\t\t\t\tconst subscribeObject = await subscribe;\n\t\t\t\tif (subscribeObject) {\n\t\t\t\t\tawait NotificationClient.unsubscribe(subscribeObject.id);\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\t}, []);\n\n\treturn {\n\t\tactiveNotifications,\n\t\taddNotification,\n\t\tnotificationIsActive,\n\t\tgetNotificationHistory,\n\t\tgroupNotificationsByType,\n\t\tnotifications: state.notifications,\n\t\tremoveNotification,\n\t\tsetOpaqueClassName,\n\t};\n}\n"]}
@@ -1,2 +1,5 @@
1
1
  import { MutableRefObject } from "react";
2
+ /**
3
+ * Hook that detects clicks outside of the passed ref and executes a function
4
+ */
2
5
  export declare const useOutsideClickDetector: (ref: MutableRefObject<null | HTMLDivElement>, fn: Function) => void;
@@ -1,4 +1,7 @@
1
1
  import { useEffect } from "react";
2
+ /**
3
+ * Hook that detects clicks outside of the passed ref and executes a function
4
+ */
2
5
  export const useOutsideClickDetector = (ref, fn) => {
3
6
  useEffect(() => {
4
7
  function handleClickOutside(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"useOutsideClickDetector.js","sourceRoot":"","sources":["../../src/hooks/useOutsideClickDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAA4C,EAAE,EAAY,EAAE,EAAE;IACrG,SAAS,CAAC,GAAG,EAAE;QACd,SAAS,kBAAkB,CAAC,KAAiB;YAC5C,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC/D,EAAE,EAAE,CAAC;aACL;QACF,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC/D,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACX,CAAC,CAAC","sourcesContent":["import { MutableRefObject, useEffect } from \"react\";\n\n/**\n * Hook that detects clicks outside of the passed ref and executes a function\n */\nexport const useOutsideClickDetector = (ref: MutableRefObject<null | HTMLDivElement>, fn: Function) => {\n\tuseEffect(() => {\n\t\tfunction handleClickOutside(event: MouseEvent) {\n\t\t\tif (ref.current && !ref.current.contains(event.target as Node)) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousedown\", handleClickOutside);\n\t\t};\n\t}, [ref]);\n};\n"]}
1
+ {"version":3,"file":"useOutsideClickDetector.js","sourceRoot":"","sources":["../../src/hooks/useOutsideClickDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAA4C,EAAE,EAAY,EAAE,EAAE;IACrG,SAAS,CAAC,GAAG,EAAE;QACd,SAAS,kBAAkB,CAAC,KAAiB;YAC5C,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC/D,EAAE,EAAE,CAAC;aACL;QACF,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC/D,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACX,CAAC,CAAC","sourcesContent":["import { MutableRefObject, useEffect } from \"react\";\n\n/**\n * Hook that detects clicks outside of the passed ref and executes a function\n */\nexport const useOutsideClickDetector = (ref: MutableRefObject<null | HTMLDivElement>, fn: Function) => {\n\tuseEffect(() => {\n\t\tfunction handleClickOutside(event: MouseEvent) {\n\t\t\tif (ref.current && !ref.current.contains(event.target as Node)) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousedown\", handleClickOutside);\n\t\t};\n\t}, [ref]);\n};\n"]}
@@ -1,3 +1,20 @@
1
+ /**
2
+ * A generic effect for getting and setting state dynamically from a Router pubsub channel.
3
+ *
4
+ * @param {string} topic The pubsub topic (i.e. channel) to subscribe
5
+ * @param {object} initialMessage The initial state (defaults to empty object)
6
+ * @returns [object, function] The current state of the pubsub channel (or initialMessage if no state exists).
7
+ * The second returned array parameter is a publish function which can be used to update state.
8
+ *
9
+ * @example
10
+ * // Inside a React functional component
11
+ * const [currentState, publish] = usePubSub("topic", {});
12
+ * console.log(currentState);
13
+ *
14
+ * onClick = () => {
15
+ * publish(someNewState);
16
+ * }
17
+ */
1
18
  declare function usePubSub(topic: string, initialMessage?: object): [{
2
19
  [key: string]: any;
3
20
  }, Function];