@finsemble/finsemble-ui 6.1.1 → 6.1.5

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 (504) hide show
  1. package/README.md +28 -28
  2. package/package.json +1 -1
  3. package/react/actions/favoriteActions.js.map +1 -1
  4. package/react/actions/linkerActions.js.map +1 -1
  5. package/react/actions/menuActions.js.map +1 -1
  6. package/react/actions/rootActions.js.map +1 -1
  7. package/react/actions/searchActions.js.map +1 -1
  8. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  9. package/react/actions/toolbarActions.js.map +1 -1
  10. package/react/actions/workspaceActions.js.map +1 -1
  11. package/react/assets/css/advancedAppLauncher.css +636 -636
  12. package/react/assets/css/appCatalog.css +1069 -1069
  13. package/react/assets/css/authentication.css +78 -78
  14. package/react/assets/css/button.css +219 -219
  15. package/react/assets/css/core/formElements.css +23 -23
  16. package/react/assets/css/core/icons.css +69 -69
  17. package/react/assets/css/core/notifications.css +75 -75
  18. package/react/assets/css/core/windowFrame.css +36 -36
  19. package/react/assets/css/dashbar.css +78 -78
  20. package/react/assets/css/defaultTheme.css +356 -356
  21. package/react/assets/css/dialogs.css +158 -158
  22. package/react/assets/css/favorites.css +101 -101
  23. package/react/assets/css/finsemble.css +38 -38
  24. package/react/assets/css/focus.css +4 -4
  25. package/react/assets/css/font-finance.css +385 -385
  26. package/react/assets/css/fonts/Open_Sans/LICENSE.txt +202 -202
  27. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +118 -118
  28. package/react/assets/css/fonts/font-finance.svg +124 -124
  29. package/react/assets/css/fonts/icons-reference.html +1174 -1174
  30. package/react/assets/css/linkerWindow.css +124 -124
  31. package/react/assets/css/menus.css +195 -195
  32. package/react/assets/css/notificationsCenter.css +594 -594
  33. package/react/assets/css/processMonitor.css +213 -213
  34. package/react/assets/css/search.css +128 -128
  35. package/react/assets/css/shared/animations.css +99 -99
  36. package/react/assets/css/tags.css +136 -136
  37. package/react/assets/css/toolbar.css +413 -413
  38. package/react/assets/css/userPreferences.css +565 -565
  39. package/react/assets/css/windowTitleBar.css +619 -619
  40. package/react/assets/icons/check.svg +3 -3
  41. package/react/assets/icons/chevron-left.svg +3 -3
  42. package/react/assets/icons/chevron-right.svg +3 -3
  43. package/react/assets/icons/copy.svg +10 -10
  44. package/react/assets/icons/exclamation-circle.svg +4 -4
  45. package/react/assets/icons/external-link.svg +12 -12
  46. package/react/assets/icons/flag.svg +10 -10
  47. package/react/assets/icons/folder.svg +3 -3
  48. package/react/assets/icons/font.svg +3 -3
  49. package/react/assets/icons/globe.svg +3 -3
  50. package/react/assets/icons/hdd.svg +9 -9
  51. package/react/assets/icons/key.svg +10 -10
  52. package/react/assets/icons/life-ring.svg +3 -3
  53. package/react/assets/icons/magic.svg +15 -15
  54. package/react/assets/icons/moon.svg +10 -10
  55. package/react/assets/icons/paint-roller.svg +3 -3
  56. package/react/assets/icons/pencil.svg +10 -10
  57. package/react/assets/icons/plus.svg +3 -3
  58. package/react/assets/icons/question-circle.svg +5 -5
  59. package/react/assets/icons/search.svg +3 -3
  60. package/react/assets/icons/sun.svg +9 -9
  61. package/react/assets/icons/times.svg +3 -3
  62. package/react/assets/icons/toggle-off.svg +6 -6
  63. package/react/assets/icons/toggle-on.svg +6 -6
  64. package/react/assets/icons/tools.svg +3 -3
  65. package/react/assets/icons/trash.svg +12 -12
  66. package/react/assets/icons/upload.svg +10 -10
  67. package/react/assets/icons/window.svg +3 -3
  68. package/react/componentTemplateGenerator.js +85 -85
  69. package/react/componentTemplateGenerator.js.map +1 -1
  70. package/react/components/FinsembleProvider.js.map +1 -1
  71. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  72. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  73. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  74. package/react/components/appCatalog/components/AppList.js.map +1 -1
  75. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  76. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  77. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  78. package/react/components/appCatalog/components/Hero.js.map +1 -1
  79. package/react/components/appCatalog/components/Home.js.map +1 -1
  80. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  81. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  82. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  83. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  84. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  85. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  86. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  87. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  88. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  89. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  90. package/react/components/appCatalog/components/Showcase/defaults.js.map +1 -1
  91. package/react/components/appCatalog/components/Tag.js.map +1 -1
  92. package/react/components/appCatalog/components/Toast.js.map +1 -1
  93. package/react/components/appCatalog/components/helpers.js.map +1 -1
  94. package/react/components/appCatalog/index.js.map +1 -1
  95. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  96. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  97. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  98. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  99. package/react/components/common/Button.js.map +1 -1
  100. package/react/components/common/ButtonIcon.js.map +1 -1
  101. package/react/components/common/ButtonTile.js.map +1 -1
  102. package/react/components/common/ColorPicker.js.map +1 -1
  103. package/react/components/common/DropZone.js.map +1 -1
  104. package/react/components/common/DropdownButton.js.map +1 -1
  105. package/react/components/common/FileInput.js.map +1 -1
  106. package/react/components/common/FinsembleIcon.js.map +1 -1
  107. package/react/components/common/FinsembleSelect.js.map +1 -1
  108. package/react/components/common/FinsembleToggle.js.map +1 -1
  109. package/react/components/common/FontSizeSelector.js.map +1 -1
  110. package/react/components/common/Header.js.map +1 -1
  111. package/react/components/common/ImagePreview.js.map +1 -1
  112. package/react/components/common/LoadingSpinner.js.map +1 -1
  113. package/react/components/common/Tab.js.map +1 -1
  114. package/react/components/common/Tooltip.js.map +1 -1
  115. package/react/components/common/css/application-edit-page.css +117 -117
  116. package/react/components/common/css/application-list.css +47 -47
  117. package/react/components/common/css/button.css +164 -164
  118. package/react/components/common/css/color-picker.css +52 -52
  119. package/react/components/common/css/drop-zone.css +17 -17
  120. package/react/components/common/css/file-input.css +49 -49
  121. package/react/components/common/css/header.css +43 -43
  122. package/react/components/common/css/icon.css +13 -13
  123. package/react/components/common/css/image-preview.css +57 -57
  124. package/react/components/common/css/loading-spinner.css +39 -39
  125. package/react/components/common/css/selector.css +51 -51
  126. package/react/components/common/css/styles.css +128 -128
  127. package/react/components/common/css/tab.css +56 -56
  128. package/react/components/common/css/toggle.css +32 -32
  129. package/react/components/common/css/tooltip.css +68 -68
  130. package/react/components/common/file_helpers.js.map +1 -1
  131. package/react/components/common/fixtures/FinsembleIcon.css +4 -4
  132. package/react/components/common/helpers.js.map +1 -1
  133. package/react/components/common/stories/Button.stories.js.map +1 -1
  134. package/react/components/common/stories/ButtonIcon.stories.js.map +1 -1
  135. package/react/components/common/stories/ButtonTile.stories.js.map +1 -1
  136. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  137. package/react/components/common/stories/DropZone.stories.js.map +1 -1
  138. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  139. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  140. package/react/components/common/stories/FinsembleSelect.stories.js.map +1 -1
  141. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  142. package/react/components/common/stories/FontSizeSelector.stories.js.map +1 -1
  143. package/react/components/common/stories/Header.stories.js.map +1 -1
  144. package/react/components/common/stories/ImagePreview.stories.js.map +1 -1
  145. package/react/components/common/stories/LoadingSpinner.stories.js.map +1 -1
  146. package/react/components/common/stories/Tab.stories.js.map +1 -1
  147. package/react/components/common/stories/Tooltip.stories.js.map +1 -1
  148. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  149. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  150. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  151. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  152. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  153. package/react/components/common/tests/Header.spec.js.map +1 -1
  154. package/react/components/common/tests/ImagePreview.spec.js.map +1 -1
  155. package/react/components/common/tests/Tab.spec.js.map +1 -1
  156. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  157. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  158. package/react/components/favorites/FavoritesShell.js.map +1 -1
  159. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  160. package/react/components/favorites/FavoritesShell.stories.js.map +1 -1
  161. package/react/components/favorites/index.js.map +1 -1
  162. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  163. package/react/components/fdc3Resolver/ResolverDialog.css +125 -125
  164. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  165. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  166. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  167. package/react/components/icon/Icon.js.map +1 -1
  168. package/react/components/icon/index.js.map +1 -1
  169. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  170. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  171. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  172. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  173. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  174. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  175. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  176. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  177. package/react/components/legacyControls/stories/FinsembleDialog.stories.js.map +1 -1
  178. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js.map +1 -1
  179. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js.map +1 -1
  180. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js.map +1 -1
  181. package/react/components/legacyControls/tests/FinsembleDialog.spec.js.map +1 -1
  182. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  183. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js.map +1 -1
  184. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  185. package/react/components/linker/LinkerMenu.js.map +1 -1
  186. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  187. package/react/components/linker/index.js.map +1 -1
  188. package/react/components/linker/remoteRedux.js.map +1 -1
  189. package/react/components/menu/Menu.js.map +1 -1
  190. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  191. package/react/components/menu/MenuContent.js.map +1 -1
  192. package/react/components/menu/MenuHotKey.js.map +1 -1
  193. package/react/components/menu/MenuItem.js.map +1 -1
  194. package/react/components/menu/MenuPortal.js.map +1 -1
  195. package/react/components/menu/MenuShell.js.map +1 -1
  196. package/react/components/menu/MenuToggle.js.map +1 -1
  197. package/react/components/menu/index.js.map +1 -1
  198. package/react/components/menu/keyboardNavigation.js.map +1 -1
  199. package/react/components/menu/menuContext.js.map +1 -1
  200. package/react/components/menu/menuHelpers.js.map +1 -1
  201. package/react/components/notifications/components/NoNotifications.js.map +1 -1
  202. package/react/components/notifications/components/drawer/Drawer.js.map +1 -1
  203. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  204. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  205. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  206. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  207. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  208. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  209. package/react/components/notifications/components/shared/NotificationCardShell.js +1 -1
  210. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  211. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  212. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  213. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.js.map +1 -1
  214. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  215. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  216. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.js.map +1 -1
  217. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  218. package/react/components/notifications/components/views/CardView.js.map +1 -1
  219. package/react/components/notifications/components/views/ListView.js +1 -1
  220. package/react/components/notifications/components/views/ListView.js.map +1 -1
  221. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  222. package/react/components/notifications/constants.js.map +1 -1
  223. package/react/components/notifications/icons/Card.js.map +1 -1
  224. package/react/components/notifications/icons/Chevron.js.map +1 -1
  225. package/react/components/notifications/icons/CloseIcon.js.map +1 -1
  226. package/react/components/notifications/icons/EnvelopeClose.js.map +1 -1
  227. package/react/components/notifications/icons/EnvelopeOpen.js.map +1 -1
  228. package/react/components/notifications/icons/SnoozeIcon.js.map +1 -1
  229. package/react/components/notifications/index.js.map +1 -1
  230. package/react/components/notifications/notificationsContext.js.map +1 -1
  231. package/react/components/notifications/types.js.map +1 -1
  232. package/react/components/notifications/utils.js.map +1 -1
  233. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  234. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  235. package/react/components/processMonitor/components/ChildWindows.js.map +1 -1
  236. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  237. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  238. package/react/components/processMonitor/constants.js.map +1 -1
  239. package/react/components/processMonitor/helpers.js.map +1 -1
  240. package/react/components/processMonitor/index.js.map +1 -1
  241. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  242. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  243. package/react/components/quickComponentForm/index.js.map +1 -1
  244. package/react/components/quickComponentForm/quickComponent.css +3 -3
  245. package/react/components/search/Highlight.js.map +1 -1
  246. package/react/components/search/Highlight.spec.js.map +1 -1
  247. package/react/components/search/Highlight.stories.js.map +1 -1
  248. package/react/components/search/Search.js.map +1 -1
  249. package/react/components/search/SearchBestMatch.js.map +1 -1
  250. package/react/components/search/SearchInput.js.map +1 -1
  251. package/react/components/search/SearchProviderResults.js.map +1 -1
  252. package/react/components/search/SearchResult.js.map +1 -1
  253. package/react/components/search/SearchResults.js.map +1 -1
  254. package/react/components/search/index.js.map +1 -1
  255. package/react/components/shared/Animate.js.map +1 -1
  256. package/react/components/shared/BellIcon.js.map +1 -1
  257. package/react/components/shared/BellIconCrossed.js.map +1 -1
  258. package/react/components/shared/Button.js.map +1 -1
  259. package/react/components/shared/ConditionalWrapper.js.map +1 -1
  260. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  261. package/react/components/shared/NavigationButton.js.map +1 -1
  262. package/react/components/shared/Tag.js.map +1 -1
  263. package/react/components/shared/TagsMenu.js.map +1 -1
  264. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  265. package/react/components/shared/addProtocolToValidURL.spec.js.map +1 -1
  266. package/react/components/shared/linkerUtil.js.map +1 -1
  267. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  268. package/react/components/shared/validateURL.js.map +1 -1
  269. package/react/components/shared/validateURL.spec.js.map +1 -1
  270. package/react/components/singleInputDialog/SingleInputDialog.css +3 -3
  271. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  272. package/react/components/singleInputDialog/SingleInputDialog.spec.js.map +1 -1
  273. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  274. package/react/components/singleInputDialog/index.js.map +1 -1
  275. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  276. package/react/components/smartDesktopDesigner/Appearance.css +94 -94
  277. package/react/components/smartDesktopDesigner/Appearance.helpers.js.map +1 -1
  278. package/react/components/smartDesktopDesigner/Appearance.js.map +1 -1
  279. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  280. package/react/components/smartDesktopDesigner/ApplicationEdit.js.map +1 -1
  281. package/react/components/smartDesktopDesigner/ApplicationList.js.map +1 -1
  282. package/react/components/smartDesktopDesigner/ApplicationSetup.js.map +1 -1
  283. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  284. package/react/components/smartDesktopDesigner/AssetsPage.css +26 -26
  285. package/react/components/smartDesktopDesigner/AssetsPage.js.map +1 -1
  286. package/react/components/smartDesktopDesigner/Authentication.js.map +1 -1
  287. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js.map +1 -1
  288. package/react/components/smartDesktopDesigner/Content.js.map +1 -1
  289. package/react/components/smartDesktopDesigner/CurrentView.js.map +1 -1
  290. package/react/components/smartDesktopDesigner/Export.js.map +1 -1
  291. package/react/components/smartDesktopDesigner/ExportCloud.js.map +1 -1
  292. package/react/components/smartDesktopDesigner/ExportDeployInfo.js.map +1 -1
  293. package/react/components/smartDesktopDesigner/ExportZip.js.map +1 -1
  294. package/react/components/smartDesktopDesigner/GettingStarted.js.map +1 -1
  295. package/react/components/smartDesktopDesigner/Navigation.js.map +1 -1
  296. package/react/components/smartDesktopDesigner/ProjectErrors.js.map +1 -1
  297. package/react/components/smartDesktopDesigner/ProjectHeader.js.map +1 -1
  298. package/react/components/smartDesktopDesigner/Publish.js.map +1 -1
  299. package/react/components/smartDesktopDesigner/PublishProgress.js.map +1 -1
  300. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  301. package/react/components/smartDesktopDesigner/ThemePage.css +110 -110
  302. package/react/components/smartDesktopDesigner/ThemePage.js.map +1 -1
  303. package/react/components/smartDesktopDesigner/Themes.js.map +1 -1
  304. package/react/components/smartDesktopDesigner/View.js.map +1 -1
  305. package/react/components/smartDesktopDesigner/common/fsbl_functions.js.map +1 -1
  306. package/react/components/smartDesktopDesigner/common/getCSSVars.js.map +1 -1
  307. package/react/components/smartDesktopDesigner/common/views.js +2 -2
  308. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  309. package/react/components/smartDesktopDesigner/css/appearance.css +10 -10
  310. package/react/components/smartDesktopDesigner/css/applications.css +89 -89
  311. package/react/components/smartDesktopDesigner/css/authentication.css +125 -125
  312. package/react/components/smartDesktopDesigner/css/buttons.css +12 -12
  313. package/react/components/smartDesktopDesigner/css/export.css +163 -163
  314. package/react/components/smartDesktopDesigner/css/getting-started.css +6 -6
  315. package/react/components/smartDesktopDesigner/css/nav.css +93 -93
  316. package/react/components/smartDesktopDesigner/css/project-errors.css +15 -15
  317. package/react/components/smartDesktopDesigner/css/project-header.css +121 -121
  318. package/react/components/smartDesktopDesigner/css/styles.css +179 -179
  319. package/react/components/smartDesktopDesigner/css/views.css +16 -16
  320. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js.map +1 -1
  321. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js.map +1 -1
  322. package/react/components/smartDesktopDesigner/fixtures/applicationsProps.js.map +1 -1
  323. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  324. package/react/components/smartDesktopDesigner/fixtures/authenticationProps.js.map +1 -1
  325. package/react/components/smartDesktopDesigner/fixtures/configTemplate.js.map +1 -1
  326. package/react/components/smartDesktopDesigner/fixtures/exportProps.js.map +1 -1
  327. package/react/components/smartDesktopDesigner/fixtures/projectErrorsProps.js.map +1 -1
  328. package/react/components/smartDesktopDesigner/fixtures/publishProgress.js.map +1 -1
  329. package/react/components/smartDesktopDesigner/fixtures/themeProps.js.map +1 -1
  330. package/react/components/smartDesktopDesigner/fixtures/views.js.map +1 -1
  331. package/react/components/smartDesktopDesigner/sdd_helpers.js.map +1 -1
  332. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  333. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js.map +1 -1
  334. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js.map +1 -1
  335. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js.map +1 -1
  336. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js.map +1 -1
  337. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  338. package/react/components/smartDesktopDesigner/stories/AssetsPage.stories.js.map +1 -1
  339. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js.map +1 -1
  340. package/react/components/smartDesktopDesigner/stories/Export.stories.js.map +1 -1
  341. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js.map +1 -1
  342. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js.map +1 -1
  343. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js.map +1 -1
  344. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js.map +1 -1
  345. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js.map +1 -1
  346. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js.map +1 -1
  347. package/react/components/smartDesktopDesigner/stories/Publish.stories.js.map +1 -1
  348. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js.map +1 -1
  349. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js.map +1 -1
  350. package/react/components/smartDesktopDesigner/stories/ThemePage.stories.js.map +1 -1
  351. package/react/components/smartDesktopDesigner/stories/Themes.stories.js.map +1 -1
  352. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  353. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js.map +1 -1
  354. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js.map +1 -1
  355. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js.map +1 -1
  356. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  357. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js.map +1 -1
  358. package/react/components/smartDesktopDesigner/tests/Export.spec.js.map +1 -1
  359. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js.map +1 -1
  360. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js.map +1 -1
  361. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js.map +1 -1
  362. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js.map +1 -1
  363. package/react/components/smartDesktopDesigner/tests/Publish.spec.js.map +1 -1
  364. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js.map +1 -1
  365. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js.map +1 -1
  366. package/react/components/smartDesktopDesigner/tests/Themes.spec.js.map +1 -1
  367. package/react/components/smartDesktopDesigner/tests/a11y_helper.js +3 -3
  368. package/react/components/smartDesktopDesigner/tests/a11y_helper.js.map +1 -1
  369. package/react/components/smartDesktopDesigner/themeDefinitions.js.map +1 -1
  370. package/react/components/system/System.js.map +1 -1
  371. package/react/components/system/System.spec.js.map +1 -1
  372. package/react/components/system/System.stories.js.map +1 -1
  373. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  374. package/react/components/system/index.js.map +1 -1
  375. package/react/components/toolbar/AutoArrange.js.map +1 -1
  376. package/react/components/toolbar/DragHandle.js.map +1 -1
  377. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  378. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  379. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  380. package/react/components/toolbar/NotificationControl.js.map +1 -1
  381. package/react/components/toolbar/RevealAll.js.map +1 -1
  382. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  383. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  384. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  385. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  386. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  387. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  388. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  389. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  390. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  391. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  392. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  393. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js.map +1 -1
  394. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  395. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  396. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  397. package/react/components/toolbar/advancedAppLauncher/components/LeftNav.js.map +1 -1
  398. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  399. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js.map +1 -1
  400. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  401. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js.map +1 -1
  402. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js.map +1 -1
  403. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  404. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  405. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  406. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  407. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js.map +1 -1
  408. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  409. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  410. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  411. package/react/components/toolbar/appLauncher/DynamicAppLauncher.js.map +1 -1
  412. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  413. package/react/components/toolbar/appLauncher/appLauncher.css +30 -30
  414. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  415. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  416. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  417. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  418. package/react/components/toolbar/index.js.map +1 -1
  419. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  420. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  421. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  422. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  423. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  424. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +94 -94
  425. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  426. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  427. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  428. package/react/components/userPreferences/components/Checkbox.js.map +1 -1
  429. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  430. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  431. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  432. package/react/components/userPreferences/components/content/General.js.map +1 -1
  433. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  434. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  435. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  436. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  437. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  438. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  439. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  440. package/react/components/userPreferences/index.js.map +1 -1
  441. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  442. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  443. package/react/components/utils.js.map +1 -1
  444. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  445. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  446. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  447. package/react/components/windowTitleBar/components/center/TabRegion.js.map +1 -1
  448. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  449. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  450. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  451. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  452. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  453. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  454. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  455. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  456. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  457. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  458. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  459. package/react/components/windowTitleBar/index.js.map +1 -1
  460. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  461. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +1 -1
  462. package/react/components/windowTitleBar/windowTitleBarContext.js.map +1 -1
  463. package/react/components/yesNoDialog/Timer.spec.js.map +1 -1
  464. package/react/components/yesNoDialog/Timer.stories.js.map +1 -1
  465. package/react/components/yesNoDialog/YesNoDialog.css +3 -3
  466. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  467. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  468. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  469. package/react/components/yesNoDialog/index.js.map +1 -1
  470. package/react/components/yesNoDialog/timer.js.map +1 -1
  471. package/react/enzymeSetup.js.map +1 -1
  472. package/react/hooks/index.js.map +1 -1
  473. package/react/hooks/useAuth.js.map +1 -1
  474. package/react/hooks/useDeepEffect.js.map +1 -1
  475. package/react/hooks/useFavorites.js.map +1 -1
  476. package/react/hooks/useFavoritesShell.js.map +1 -1
  477. package/react/hooks/useHotkey.js.map +1 -1
  478. package/react/hooks/useLinker.js.map +1 -1
  479. package/react/hooks/useMenu.js.map +1 -1
  480. package/react/hooks/useNotifications.js.map +1 -1
  481. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  482. package/react/hooks/usePubSub.js.map +1 -1
  483. package/react/hooks/useSearch.js.map +1 -1
  484. package/react/hooks/useToolbar.js.map +1 -1
  485. package/react/hooks/useWorkspace.js.map +1 -1
  486. package/react/reducers/favoriteReducer.js.map +1 -1
  487. package/react/reducers/linkerReducer.js.map +1 -1
  488. package/react/reducers/menuReducer.js.map +1 -1
  489. package/react/reducers/rootReducer.js.map +1 -1
  490. package/react/reducers/searchReducer.js.map +1 -1
  491. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  492. package/react/reducers/toolbarReducer.js.map +1 -1
  493. package/react/reducers/workspaceReducer.js.map +1 -1
  494. package/react/store.js.map +1 -1
  495. package/react/types/advancedAppLauncherTypes.js.map +1 -1
  496. package/react/types/dashbarTypes.js.map +1 -1
  497. package/react/types/favoriteTypes.js.map +1 -1
  498. package/react/types/fdc3.js.map +1 -1
  499. package/react/types/hotkeyTypes.js.map +1 -1
  500. package/react/types/iconTypes.js.map +1 -1
  501. package/react/types/linkerTypes.js.map +1 -1
  502. package/react/types/searchTypes.js.map +1 -1
  503. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  504. package/react/types/workspaceTypes.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { Menu } from \"./Menu\";\r\nexport { MenuContent } from \"./MenuContent\";\r\nexport { MenuItem } from \"./MenuItem\";\r\nexport { MenuShell } from \"./MenuShell\";\r\nexport { MenuToggle } from \"./MenuToggle\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { Menu } from \"./Menu\";\nexport { MenuContent } from \"./MenuContent\";\nexport { MenuItem } from \"./MenuItem\";\nexport { MenuShell } from \"./MenuShell\";\nexport { MenuToggle } from \"./MenuToggle\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"keyboardNavigation.js","sourceRoot":"","sources":["../../../src/components/menu/keyboardNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["const { HotkeyClient }: any = FSBL.Clients;\r\n\r\n/**\r\n * Keyboard navigation allows the end user to navigate through menus using\r\n * cursor keys and to select items using the enter key.\r\n *\r\n * This is stateful. As implemented in MenuPortal, the currently selected\r\n * menu item will remain selected between menu opens and closes.\r\n *\r\n * When an element is selected then the keyboard navigation state is reset\r\n * so that the user will begin again with the first item.\r\n *\r\n * @param childWin Main window or child window reference.\r\n * @param className Selector of elements to apply navigation on.\r\n * @example\r\n * const keyboardNav = KeyboardNavigation(window, \".menu-item\");\r\n * keyboardNav.attach() // enable navigation\r\n * keyboardNav.detach() // disable navigation\r\n */\r\nexport class KeyboardNavigation {\r\n\tprivate childWin: Window;\r\n\r\n\tprivate className: string;\r\n\r\n\tprivate selectedItem: number | undefined = undefined;\r\n\r\n\tprivate selectedIcon: number = -1;\r\n\r\n\t/**\r\n\t *\r\n\t * @param childWin Main window or child window reference\r\n\t * @param className The selector string e.g .menu-item\r\n\t */\r\n\tconstructor(childWin: Window, className: string) {\r\n\t\tthis.childWin = childWin;\r\n\t\tthis.className = className;\r\n\t\tthis.onArrowDown = this.onArrowDown.bind(this);\r\n\t\tthis.onArrowUp = this.onArrowUp.bind(this);\r\n\t\tthis.onArrowRight = this.onArrowRight.bind(this);\r\n\t\tthis.onArrowLeft = this.onArrowLeft.bind(this);\r\n\t\tthis.clickOnItem = this.clickOnItem.bind(this);\r\n\t\tthis.focusOnFirst = this.focusOnFirst.bind(this);\r\n\t\tthis.focusOnLast = this.focusOnLast.bind(this);\r\n\t\tthis.resetFocusOnDOMChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * A mutation observer to watch changes in the DOM\r\n\t * and set the selectedIndex to undefined when changes\r\n\t * observed. We want to start focusing from element with index 0\r\n\t * when the elements order changes.\r\n\t */\r\n\tprivate resetFocusOnDOMChanges() {\r\n\t\tnew MutationObserver(() => {\r\n\t\t\t// Reset selectedIndex when elements added or removed\r\n\t\t\t// from the DOM. The motivation behind this was an issue\r\n\t\t\t// with Brad's search menu where the order of focus is\r\n\t\t\t// messed up when his list of result changes.\r\n\t\t\tthis.selectedItem = undefined;\r\n\t\t}).observe(this.childWin.document.body, {\r\n\t\t\tchildList: true,\r\n\t\t\tcharacterData: false,\r\n\t\t\tsubtree: true,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns list of elements\r\n\t */\r\n\tprivate getElements() {\r\n\t\treturn this.childWin.document.querySelectorAll(this.className);\r\n\t}\r\n\r\n\tprivate getMenuItemIcons(index: number) {\r\n\t\tconst menuItems = this.getElements();\r\n\t\treturn menuItems[index].querySelectorAll(\".menu-item-icon\");\r\n\t}\r\n\r\n\t/**\r\n\t * Remove all focus classes.\r\n\t */\r\n\tprivate removeAllFocus() {\r\n\t\tconst menuItems = this.getElements();\r\n\t\tmenuItems.forEach((item: Element, key: number) => {\r\n\t\t\titem.removeAttribute(\"focused\");\r\n\t\t\tconst icons = this.getMenuItemIcons(key);\r\n\t\t\ticons.forEach((icon: Element) => {\r\n\t\t\t\ticon.removeAttribute(\"focused\");\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the focus on a menu item\r\n\t * @param index The index of the menu item in the list\r\n\t */\r\n\tprivate focusOn(index: number) {\r\n\t\tthis.removeAllFocus();\r\n\r\n\t\tconst menuItems = this.getElements();\r\n\t\t// Menu could have no items\r\n\t\tif (!menuItems.length) return;\r\n\t\t// Focus on element and scroll if needed\r\n\t\tmenuItems[index].setAttribute(\"focused\", \"true\");\r\n\t\t(menuItems[index] as any).scrollIntoViewIfNeeded({\r\n\t\t\tbehavior: \"smooth\",\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the focus on a menu item's icon\r\n\t * @param index The index of the menu item in the list\r\n\t * @param iconIndex The index of the menu item's icon (-1 = menu text, not icon)\r\n\t */\r\n\tprivate focusOnIcon(index: number, iconIndex: number) {\r\n\t\tthis.removeAllFocus();\r\n\r\n\t\tconst menuItems = this.getElements();\r\n\t\t// Menu could have no items\r\n\t\tif (!menuItems.length) return;\r\n\r\n\t\tconst icons = this.getMenuItemIcons(index);\r\n\t\t// Defend against possible js runtime error\r\n\t\tif (icons.length < iconIndex) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// scroll if needed\r\n\t\t(menuItems[index] as any).scrollIntoViewIfNeeded({\r\n\t\t\tbehavior: \"smooth\",\r\n\t\t});\r\n\t\t// Focus on menu item text, if relevant\r\n\t\tif (iconIndex === -1) {\r\n\t\t\tmenuItems[index].setAttribute(\"focused\", \"true\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ticons[iconIndex].setAttribute(\"focused\", \"true\");\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates mouse events\r\n\t */\r\n\tprivate clickOnItem() {\r\n\t\tthis.removeAllFocus();\r\n\t\tif (this.selectedItem !== undefined) {\r\n\t\t\tconst elements = this.getElements();\r\n\t\t\tconst selectedItem = elements[this.selectedItem as any];\r\n\t\t\t[\"mousedown\", \"click\", \"mouseup\"].forEach((event) => {\r\n\t\t\t\tif (this.selectedIcon > -1) {\r\n\t\t\t\t\tconst icons = this.getMenuItemIcons(this.selectedItem as any);\r\n\t\t\t\t\tconst selectedIcon = icons[this.selectedIcon as any];\r\n\t\t\t\t\tif (selectedIcon) {\r\n\t\t\t\t\t\tselectedIcon.dispatchEvent(\r\n\t\t\t\t\t\t\tnew MouseEvent(event, {\r\n\t\t\t\t\t\t\t\tview: this.childWin,\r\n\t\t\t\t\t\t\t\tbubbles: true,\r\n\t\t\t\t\t\t\t\tcancelable: true,\r\n\t\t\t\t\t\t\t\tbuttons: 1,\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (selectedItem && selectedItem.dispatchEvent) {\r\n\t\t\t\t\tselectedItem.dispatchEvent(\r\n\t\t\t\t\t\tnew MouseEvent(event, {\r\n\t\t\t\t\t\t\tview: this.childWin,\r\n\t\t\t\t\t\t\tbubbles: true,\r\n\t\t\t\t\t\t\tcancelable: true,\r\n\t\t\t\t\t\t\tbuttons: 1,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t/**\r\n\t\t\t * When an element is selected we reset the menu to focus on the first item.\r\n\t\t\t * Per Dan Nicolai UX specialist.\r\n\t\t\t */\r\n\t\t\tthis.selectedItem = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when a user presses on the arrow up key\r\n\t */\r\n\tprivate onArrowUp() {\r\n\t\t// On first key up/down press, we want\r\n\t\t// the focus to be on first item\r\n\t\tif (this.selectedItem === undefined) {\r\n\t\t\tthis.selectedItem = 0;\r\n\t\t\treturn this.focusOn(0);\r\n\t\t}\r\n\t\t// Set the focus on the previous item\r\n\t\tthis.selectedItem--;\r\n\t\tif (this.selectedItem < 0) {\r\n\t\t\t// If we are back to the begining\r\n\t\t\t// set the focus on last item\r\n\t\t\tthis.selectedItem = this.getElements().length - 1;\r\n\t\t}\r\n\t\tthis.focusOn(this.selectedItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when user press the arrow down key\r\n\t */\r\n\tprivate onArrowDown() {\r\n\t\tif (this.selectedItem === undefined) {\r\n\t\t\tthis.selectedItem = 0;\r\n\t\t\treturn this.focusOn(0);\r\n\t\t}\r\n\t\t// The the focus on the next item\r\n\t\tthis.selectedItem++;\r\n\t\t// If we reached the end, then go back to first item\r\n\t\tif (this.selectedItem === this.getElements().length) {\r\n\t\t\tthis.selectedItem = 0;\r\n\t\t}\r\n\t\tthis.focusOn(this.selectedItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when user press the arrow right key\r\n\t */\r\n\tprivate onArrowRight() {\r\n\t\tif (this.selectedItem === undefined) {\r\n\t\t\tthis.selectedItem = 0;\r\n\t\t\treturn this.focusOn(0);\r\n\t\t}\r\n\r\n\t\tconst menuItems = this.getElements();\r\n\t\t// Menu could have no items\r\n\t\tif (!menuItems.length) return;\r\n\r\n\t\tconst icons = this.getMenuItemIcons(this.selectedItem);\r\n\t\tif (icons.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedIcon++;\r\n\t\tif (this.selectedIcon === icons.length) {\r\n\t\t\tthis.selectedIcon = -1;\r\n\t\t}\r\n\t\tthis.focusOnIcon(this.selectedItem, this.selectedIcon);\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when user press the arrow left key\r\n\t */\r\n\tprivate onArrowLeft() {\r\n\t\tif (this.selectedItem === undefined) {\r\n\t\t\tthis.selectedItem = 0;\r\n\t\t\treturn this.focusOn(0);\r\n\t\t}\r\n\r\n\t\tconst menuItems = this.getElements();\r\n\t\t// Menu could have no items\r\n\t\tif (!menuItems.length) return;\r\n\r\n\t\tconst icons = this.getMenuItemIcons(this.selectedItem);\r\n\t\tif (icons.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedIcon--;\r\n\t\tif (this.selectedIcon === icons.length) {\r\n\t\t\tthis.selectedIcon = -1;\r\n\t\t}\r\n\t\tthis.focusOnIcon(this.selectedItem, this.selectedIcon);\r\n\t}\r\n\r\n\tprivate focusOnFirst() {\r\n\t\tthis.selectedItem = 0;\r\n\t\tthis.selectedIcon = -1;\r\n\t\tthis.focusOn(0);\r\n\t}\r\n\r\n\tprivate focusOnLast() {\r\n\t\tthis.selectedIcon = -1;\r\n\t\tconst { length } = this.getElements();\r\n\t\tif (length) {\r\n\t\t\tthis.selectedItem = length - 1;\r\n\t\t\tthis.focusOn(length - 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds global hot keys for up/down arrow\r\n\t */\r\n\tpublic attach() {\r\n\t\t// Register hotkeys\r\n\t\tHotkeyClient.addGlobalHotkey([\"up arrow\"], this.onArrowUp);\r\n\t\tHotkeyClient.addGlobalHotkey([\"right arrow\"], this.onArrowRight);\r\n\t\tHotkeyClient.addGlobalHotkey([\"left arrow\"], this.onArrowLeft);\r\n\t\tHotkeyClient.addGlobalHotkey([\"down arrow\"], this.onArrowDown);\r\n\t\tHotkeyClient.addGlobalHotkey([\"return\"], this.clickOnItem);\r\n\t\tHotkeyClient.addGlobalHotkey([\"home\"], this.focusOnFirst);\r\n\t\tHotkeyClient.addGlobalHotkey([\"end\"], this.focusOnLast);\r\n\t}\r\n\r\n\t/**\r\n\t * Remove global got keys for up/down arrow\r\n\t */\r\n\tpublic detach() {\r\n\t\t// Remove registered hotkeys\r\n\t\tHotkeyClient.removeGlobalHotkey([\"up arrow\"], this.onArrowUp);\r\n\t\tHotkeyClient.removeGlobalHotkey([\"right arrow\"], this.onArrowRight);\r\n\t\tHotkeyClient.removeGlobalHotkey([\"left arrow\"], this.onArrowLeft);\r\n\t\tHotkeyClient.removeGlobalHotkey([\"down arrow\"], this.onArrowDown);\r\n\t\tHotkeyClient.removeGlobalHotkey([\"return\"], this.clickOnItem);\r\n\t\tHotkeyClient.removeGlobalHotkey([\"home\"], this.focusOnFirst);\r\n\t\tHotkeyClient.removeGlobalHotkey([\"end\"], this.focusOnLast);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"keyboardNavigation.js","sourceRoot":"","sources":["../../../src/components/menu/keyboardNavigation.ts"],"names":[],"mappings":"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","sourcesContent":["const { HotkeyClient }: any = FSBL.Clients;\n\n/**\n * Keyboard navigation allows the end user to navigate through menus using\n * cursor keys and to select items using the enter key.\n *\n * This is stateful. As implemented in MenuPortal, the currently selected\n * menu item will remain selected between menu opens and closes.\n *\n * When an element is selected then the keyboard navigation state is reset\n * so that the user will begin again with the first item.\n *\n * @param childWin Main window or child window reference.\n * @param className Selector of elements to apply navigation on.\n * @example\n * const keyboardNav = KeyboardNavigation(window, \".menu-item\");\n * keyboardNav.attach() // enable navigation\n * keyboardNav.detach() // disable navigation\n */\nexport class KeyboardNavigation {\n\tprivate childWin: Window;\n\n\tprivate className: string;\n\n\tprivate selectedItem: number | undefined = undefined;\n\n\tprivate selectedIcon: number = -1;\n\n\t/**\n\t *\n\t * @param childWin Main window or child window reference\n\t * @param className The selector string e.g .menu-item\n\t */\n\tconstructor(childWin: Window, className: string) {\n\t\tthis.childWin = childWin;\n\t\tthis.className = className;\n\t\tthis.onArrowDown = this.onArrowDown.bind(this);\n\t\tthis.onArrowUp = this.onArrowUp.bind(this);\n\t\tthis.onArrowRight = this.onArrowRight.bind(this);\n\t\tthis.onArrowLeft = this.onArrowLeft.bind(this);\n\t\tthis.clickOnItem = this.clickOnItem.bind(this);\n\t\tthis.focusOnFirst = this.focusOnFirst.bind(this);\n\t\tthis.focusOnLast = this.focusOnLast.bind(this);\n\t\tthis.resetFocusOnDOMChanges();\n\t}\n\n\t/**\n\t * A mutation observer to watch changes in the DOM\n\t * and set the selectedIndex to undefined when changes\n\t * observed. We want to start focusing from element with index 0\n\t * when the elements order changes.\n\t */\n\tprivate resetFocusOnDOMChanges() {\n\t\tnew MutationObserver(() => {\n\t\t\t// Reset selectedIndex when elements added or removed\n\t\t\t// from the DOM. The motivation behind this was an issue\n\t\t\t// with Brad's search menu where the order of focus is\n\t\t\t// messed up when his list of result changes.\n\t\t\tthis.selectedItem = undefined;\n\t\t}).observe(this.childWin.document.body, {\n\t\t\tchildList: true,\n\t\t\tcharacterData: false,\n\t\t\tsubtree: true,\n\t\t});\n\t}\n\n\t/**\n\t * Returns list of elements\n\t */\n\tprivate getElements() {\n\t\treturn this.childWin.document.querySelectorAll(this.className);\n\t}\n\n\tprivate getMenuItemIcons(index: number) {\n\t\tconst menuItems = this.getElements();\n\t\treturn menuItems[index].querySelectorAll(\".menu-item-icon\");\n\t}\n\n\t/**\n\t * Remove all focus classes.\n\t */\n\tprivate removeAllFocus() {\n\t\tconst menuItems = this.getElements();\n\t\tmenuItems.forEach((item: Element, key: number) => {\n\t\t\titem.removeAttribute(\"focused\");\n\t\t\tconst icons = this.getMenuItemIcons(key);\n\t\t\ticons.forEach((icon: Element) => {\n\t\t\t\ticon.removeAttribute(\"focused\");\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Sets the focus on a menu item\n\t * @param index The index of the menu item in the list\n\t */\n\tprivate focusOn(index: number) {\n\t\tthis.removeAllFocus();\n\n\t\tconst menuItems = this.getElements();\n\t\t// Menu could have no items\n\t\tif (!menuItems.length) return;\n\t\t// Focus on element and scroll if needed\n\t\tmenuItems[index].setAttribute(\"focused\", \"true\");\n\t\t(menuItems[index] as any).scrollIntoViewIfNeeded({\n\t\t\tbehavior: \"smooth\",\n\t\t});\n\t}\n\n\t/**\n\t * Sets the focus on a menu item's icon\n\t * @param index The index of the menu item in the list\n\t * @param iconIndex The index of the menu item's icon (-1 = menu text, not icon)\n\t */\n\tprivate focusOnIcon(index: number, iconIndex: number) {\n\t\tthis.removeAllFocus();\n\n\t\tconst menuItems = this.getElements();\n\t\t// Menu could have no items\n\t\tif (!menuItems.length) return;\n\n\t\tconst icons = this.getMenuItemIcons(index);\n\t\t// Defend against possible js runtime error\n\t\tif (icons.length < iconIndex) {\n\t\t\treturn;\n\t\t}\n\n\t\t// scroll if needed\n\t\t(menuItems[index] as any).scrollIntoViewIfNeeded({\n\t\t\tbehavior: \"smooth\",\n\t\t});\n\t\t// Focus on menu item text, if relevant\n\t\tif (iconIndex === -1) {\n\t\t\tmenuItems[index].setAttribute(\"focused\", \"true\");\n\t\t\treturn;\n\t\t}\n\n\t\ticons[iconIndex].setAttribute(\"focused\", \"true\");\n\t}\n\n\t/**\n\t * Simulates mouse events\n\t */\n\tprivate clickOnItem() {\n\t\tthis.removeAllFocus();\n\t\tif (this.selectedItem !== undefined) {\n\t\t\tconst elements = this.getElements();\n\t\t\tconst selectedItem = elements[this.selectedItem as any];\n\t\t\t[\"mousedown\", \"click\", \"mouseup\"].forEach((event) => {\n\t\t\t\tif (this.selectedIcon > -1) {\n\t\t\t\t\tconst icons = this.getMenuItemIcons(this.selectedItem as any);\n\t\t\t\t\tconst selectedIcon = icons[this.selectedIcon as any];\n\t\t\t\t\tif (selectedIcon) {\n\t\t\t\t\t\tselectedIcon.dispatchEvent(\n\t\t\t\t\t\t\tnew MouseEvent(event, {\n\t\t\t\t\t\t\t\tview: this.childWin,\n\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\tcancelable: true,\n\t\t\t\t\t\t\t\tbuttons: 1,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectedItem && selectedItem.dispatchEvent) {\n\t\t\t\t\tselectedItem.dispatchEvent(\n\t\t\t\t\t\tnew MouseEvent(event, {\n\t\t\t\t\t\t\tview: this.childWin,\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcancelable: true,\n\t\t\t\t\t\t\tbuttons: 1,\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t\t/**\n\t\t\t * When an element is selected we reset the menu to focus on the first item.\n\t\t\t * Per Dan Nicolai UX specialist.\n\t\t\t */\n\t\t\tthis.selectedItem = undefined;\n\t\t}\n\t}\n\n\t/**\n\t * Invoked when a user presses on the arrow up key\n\t */\n\tprivate onArrowUp() {\n\t\t// On first key up/down press, we want\n\t\t// the focus to be on first item\n\t\tif (this.selectedItem === undefined) {\n\t\t\tthis.selectedItem = 0;\n\t\t\treturn this.focusOn(0);\n\t\t}\n\t\t// Set the focus on the previous item\n\t\tthis.selectedItem--;\n\t\tif (this.selectedItem < 0) {\n\t\t\t// If we are back to the begining\n\t\t\t// set the focus on last item\n\t\t\tthis.selectedItem = this.getElements().length - 1;\n\t\t}\n\t\tthis.focusOn(this.selectedItem);\n\t}\n\n\t/**\n\t * Invoked when user press the arrow down key\n\t */\n\tprivate onArrowDown() {\n\t\tif (this.selectedItem === undefined) {\n\t\t\tthis.selectedItem = 0;\n\t\t\treturn this.focusOn(0);\n\t\t}\n\t\t// The the focus on the next item\n\t\tthis.selectedItem++;\n\t\t// If we reached the end, then go back to first item\n\t\tif (this.selectedItem === this.getElements().length) {\n\t\t\tthis.selectedItem = 0;\n\t\t}\n\t\tthis.focusOn(this.selectedItem);\n\t}\n\n\t/**\n\t * Invoked when user press the arrow right key\n\t */\n\tprivate onArrowRight() {\n\t\tif (this.selectedItem === undefined) {\n\t\t\tthis.selectedItem = 0;\n\t\t\treturn this.focusOn(0);\n\t\t}\n\n\t\tconst menuItems = this.getElements();\n\t\t// Menu could have no items\n\t\tif (!menuItems.length) return;\n\n\t\tconst icons = this.getMenuItemIcons(this.selectedItem);\n\t\tif (icons.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectedIcon++;\n\t\tif (this.selectedIcon === icons.length) {\n\t\t\tthis.selectedIcon = -1;\n\t\t}\n\t\tthis.focusOnIcon(this.selectedItem, this.selectedIcon);\n\t}\n\n\t/**\n\t * Invoked when user press the arrow left key\n\t */\n\tprivate onArrowLeft() {\n\t\tif (this.selectedItem === undefined) {\n\t\t\tthis.selectedItem = 0;\n\t\t\treturn this.focusOn(0);\n\t\t}\n\n\t\tconst menuItems = this.getElements();\n\t\t// Menu could have no items\n\t\tif (!menuItems.length) return;\n\n\t\tconst icons = this.getMenuItemIcons(this.selectedItem);\n\t\tif (icons.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectedIcon--;\n\t\tif (this.selectedIcon === icons.length) {\n\t\t\tthis.selectedIcon = -1;\n\t\t}\n\t\tthis.focusOnIcon(this.selectedItem, this.selectedIcon);\n\t}\n\n\tprivate focusOnFirst() {\n\t\tthis.selectedItem = 0;\n\t\tthis.selectedIcon = -1;\n\t\tthis.focusOn(0);\n\t}\n\n\tprivate focusOnLast() {\n\t\tthis.selectedIcon = -1;\n\t\tconst { length } = this.getElements();\n\t\tif (length) {\n\t\t\tthis.selectedItem = length - 1;\n\t\t\tthis.focusOn(length - 1);\n\t\t}\n\t}\n\n\t/**\n\t * Adds global hot keys for up/down arrow\n\t */\n\tpublic attach() {\n\t\t// Register hotkeys\n\t\tHotkeyClient.addGlobalHotkey([\"up arrow\"], this.onArrowUp);\n\t\tHotkeyClient.addGlobalHotkey([\"right arrow\"], this.onArrowRight);\n\t\tHotkeyClient.addGlobalHotkey([\"left arrow\"], this.onArrowLeft);\n\t\tHotkeyClient.addGlobalHotkey([\"down arrow\"], this.onArrowDown);\n\t\tHotkeyClient.addGlobalHotkey([\"return\"], this.clickOnItem);\n\t\tHotkeyClient.addGlobalHotkey([\"home\"], this.focusOnFirst);\n\t\tHotkeyClient.addGlobalHotkey([\"end\"], this.focusOnLast);\n\t}\n\n\t/**\n\t * Remove global got keys for up/down arrow\n\t */\n\tpublic detach() {\n\t\t// Remove registered hotkeys\n\t\tHotkeyClient.removeGlobalHotkey([\"up arrow\"], this.onArrowUp);\n\t\tHotkeyClient.removeGlobalHotkey([\"right arrow\"], this.onArrowRight);\n\t\tHotkeyClient.removeGlobalHotkey([\"left arrow\"], this.onArrowLeft);\n\t\tHotkeyClient.removeGlobalHotkey([\"down arrow\"], this.onArrowDown);\n\t\tHotkeyClient.removeGlobalHotkey([\"return\"], this.clickOnItem);\n\t\tHotkeyClient.removeGlobalHotkey([\"home\"], this.focusOnFirst);\n\t\tHotkeyClient.removeGlobalHotkey([\"end\"], this.focusOnLast);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../../src/components/menu/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAgBtC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAkB,EAAqB,CAAC,CAAC","sourcesContent":["import { createContext } from \"react\";\r\n\r\ntype MenuContextType = {\r\n\tthisMenuId: string;\r\n\tclassName: string | undefined;\r\n\tmaxHeight: number;\r\n\tmenuWidth: number;\r\n\tmenuHeight: number | undefined;\r\n};\r\n\r\n/**\r\n * We initialize our context with an empty object because we know that MenuShell will\r\n * properly initialize our context at runtime (during the first render). We cast () to MenuContextType\r\n * to avoid typescript errors for any consumers of the context object. Beware that if you get a runtime error\r\n * then someone has probably missed an initialization in MenuShell.\r\n */\r\nexport const MenuContext = createContext<MenuContextType>({} as MenuContextType);\r\n"]}
1
+ {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../../src/components/menu/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAgBtC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAkB,EAAqB,CAAC,CAAC","sourcesContent":["import { createContext } from \"react\";\n\ntype MenuContextType = {\n\tthisMenuId: string;\n\tclassName: string | undefined;\n\tmaxHeight: number;\n\tmenuWidth: number;\n\tmenuHeight: number | undefined;\n};\n\n/**\n * We initialize our context with an empty object because we know that MenuShell will\n * properly initialize our context at runtime (during the first render). We cast () to MenuContextType\n * to avoid typescript errors for any consumers of the context object. Beware that if you get a runtime error\n * then someone has probably missed an initialization in MenuShell.\n */\nexport const MenuContext = createContext<MenuContextType>({} as MenuContextType);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"menuHelpers.js","sourceRoot":"","sources":["../../../src/components/menu/menuHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Minimum portal height (chromium limitation)\r\nconst MIN_HEIGHT = 100;\r\n\r\n/**\r\n * Returns a drop down menu's position relative to the toolbar's current location and the\r\n * MenuToggle that was pressed. The dimensions returned are relative to the toolbar's\r\n * current monitor.\r\n * @param menuId The shell ID (e.g. filemenu)\r\n * @param menuContentHeight The height of menu contents.\r\n */\r\nexport const calculatePosition = async (\r\n\tmenuId: string,\r\n\tmenuContentHeight?: number\r\n): Promise<{\r\n\ttop: number;\r\n\tleft: number;\r\n}> => {\r\n\t// Rather than use window.innerHeight, we use the height of the document because Electron at times fails\r\n\t// to resize windows across monitors with different DPI scaling. We've worked around this by calling setShape()\r\n\t// to avoid a white bar at the bottom of the window, but the window DOM height is still the old height.\r\n\tconst toolbarHeight = (<HTMLElement>document.getElementsByClassName(\"finsemble-toolbar\")[0]).offsetHeight;\r\n\r\n\t// The monitor's available height and width is found in the window.screen object (just like Electron, less the space\r\n\t// taken up by the operating system toolbar)\r\n\tconst { availHeight }: Screen = window.screen;\r\n\r\n\tconst toolbarX = window.screenLeft;\r\n\tconst toolbarY = window.screenTop;\r\n\tconst spaceBelowToolbar = availHeight - toolbarY - toolbarHeight;\r\n\r\n\t/*\r\n\tGet a reference to the MenuToggle's element using querySelector to avoid having to pass\r\n\tReact ref all the way down here.\r\n\t*/\r\n\tconst selector = `#${menuId}-menu-toggle`;\r\n\tconst menuToggle = document.querySelector(selector);\r\n\tif (!menuToggle) {\r\n\t\tconsole.error(`calculatePosition() can't find selector \"${selector}\"`);\r\n\t}\r\n\r\n\t// Get the \"x\" coordinate of our toggle button *within* the toolbar\r\n\t// If for whatever reason the menuToggle can't be found, then default to an x coordinate of zero\r\n\tconst { x: menuToggleX } = menuToggle ? menuToggle.getBoundingClientRect() : { x: 0 };\r\n\r\n\tlet left = toolbarX + menuToggleX;\r\n\tlet top = toolbarY + toolbarHeight;\r\n\t/*\r\n\tCheck if we have enough space for the menu between\r\n\tthe toolbar and bottom edge of the screen. If not,\r\n\tthen reposition the menu to appear above toolbar.\r\n\t*/\r\n\tif (menuContentHeight) {\r\n\t\tconst menuHeight = Math.max(menuContentHeight, MIN_HEIGHT);\r\n\t\tif (menuHeight > spaceBelowToolbar) {\r\n\t\t\ttop = toolbarY - menuHeight;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop,\r\n\t\tleft,\r\n\t};\r\n};\r\n\r\n/**\r\n * Calculates the height and position that a window should take based on the height necessary to display\r\n * the window's DOM contents without scrollbars, but not beyond the scope of the monitor itself.\r\n *\r\n * @param childWindow Window The window to calculate\r\n * @param menuId string The id of the menu, used for a CSS selector\r\n * @param [maxHeight] Maximum height for the window\r\n * @param [fixedHeight] Optional fixed height\r\n */\r\nexport const calculateDimensions = async (\r\n\tchildWindow: Window,\r\n\tmenuId: string,\r\n\tfixedHeight: number = 0,\r\n\tmaxHeight: number = Infinity\r\n): Promise<{\r\n\ttop: number;\r\n\tleft: number;\r\n\theight: number;\r\n}> => {\r\n\t/* Content height is essentially the offsetHeight of the window's <html> element.\r\n\tThis seems more reliable than summing the heights of all body children.\r\n\t*/\r\n\tconst contentHeight = childWindow.document.documentElement.offsetHeight;\r\n\r\n\t/**\r\n\t * Calculate the actual menu height, constrained by maximum and minimum sizes.\r\n\t * Zero, null or undefined are invalid maximum heights.\r\n\t *\r\n\t * Chromium imposes a 100 pixel minimum on window height.\r\n\t */\r\n\tconst CHROMIUM_MIN_HEIGHT = 100;\r\n\tconst minimumContentHeight = Math.max(contentHeight, CHROMIUM_MIN_HEIGHT);\r\n\tconst height = fixedHeight ? fixedHeight : Math.min(minimumContentHeight, maxHeight);\r\n\r\n\tconst { left, top } = await calculatePosition(menuId, height);\r\n\r\n\t// Final step, make sure the menu isn't larger than the screen itself\r\n\tconst { availHeight }: Screen = window.screen;\r\n\tconst finalHeight = Math.min(height, availHeight);\r\n\r\n\treturn {\r\n\t\ttop,\r\n\t\tleft,\r\n\t\theight: finalHeight,\r\n\t};\r\n};\r\n\r\n/**\r\n * Copy CSS elements from parent to child window. Portals operate in a new window which doesn't automatically\r\n * have access to the CSS from the main window, so we need to clone those elements into the menu's window\r\n * when it is created.\r\n * @param childWindow Child window reference\r\n */\r\nexport const injectCSS = (childWindow: Window): void => {\r\n\tconst { children }: any = document.head;\r\n\tconst styleElements: HTMLElement[] = [];\r\n\tfor (const item in children) {\r\n\t\t/** \r\n\t\t\twebpack's style-loader creates <style> tags but some versions will create <link> tags if CSS source maps are \r\n\t\t\tenabled (sourceMap), or if `injectType: linkTag` is configured.\r\n \t*/\r\n\t\tif (children[item].tagName === \"STYLE\" || children[item].tagName === \"LINK\") {\r\n\t\t\tconst newElement = children[item].cloneNode(true);\r\n\t\t\tstyleElements.push(newElement);\r\n\t\t}\r\n\t}\r\n\tstyleElements.forEach((item) => {\r\n\t\tchildWindow.document.head.append(item);\r\n\t});\r\n};\r\n"]}
1
+ {"version":3,"file":"menuHelpers.js","sourceRoot":"","sources":["../../../src/components/menu/menuHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Minimum portal height (chromium limitation)\nconst MIN_HEIGHT = 100;\n\n/**\n * Returns a drop down menu's position relative to the toolbar's current location and the\n * MenuToggle that was pressed. The dimensions returned are relative to the toolbar's\n * current monitor.\n * @param menuId The shell ID (e.g. filemenu)\n * @param menuContentHeight The height of menu contents.\n */\nexport const calculatePosition = async (\n\tmenuId: string,\n\tmenuContentHeight?: number\n): Promise<{\n\ttop: number;\n\tleft: number;\n}> => {\n\t// Rather than use window.innerHeight, we use the height of the document because Electron at times fails\n\t// to resize windows across monitors with different DPI scaling. We've worked around this by calling setShape()\n\t// to avoid a white bar at the bottom of the window, but the window DOM height is still the old height.\n\tconst toolbarHeight = (<HTMLElement>document.getElementsByClassName(\"finsemble-toolbar\")[0]).offsetHeight;\n\n\t// The monitor's available height and width is found in the window.screen object (just like Electron, less the space\n\t// taken up by the operating system toolbar)\n\tconst { availHeight }: Screen = window.screen;\n\n\tconst toolbarX = window.screenLeft;\n\tconst toolbarY = window.screenTop;\n\tconst spaceBelowToolbar = availHeight - toolbarY - toolbarHeight;\n\n\t/*\n\tGet a reference to the MenuToggle's element using querySelector to avoid having to pass\n\tReact ref all the way down here.\n\t*/\n\tconst selector = `#${menuId}-menu-toggle`;\n\tconst menuToggle = document.querySelector(selector);\n\tif (!menuToggle) {\n\t\tconsole.error(`calculatePosition() can't find selector \"${selector}\"`);\n\t}\n\n\t// Get the \"x\" coordinate of our toggle button *within* the toolbar\n\t// If for whatever reason the menuToggle can't be found, then default to an x coordinate of zero\n\tconst { x: menuToggleX } = menuToggle ? menuToggle.getBoundingClientRect() : { x: 0 };\n\n\tlet left = toolbarX + menuToggleX;\n\tlet top = toolbarY + toolbarHeight;\n\t/*\n\tCheck if we have enough space for the menu between\n\tthe toolbar and bottom edge of the screen. If not,\n\tthen reposition the menu to appear above toolbar.\n\t*/\n\tif (menuContentHeight) {\n\t\tconst menuHeight = Math.max(menuContentHeight, MIN_HEIGHT);\n\t\tif (menuHeight > spaceBelowToolbar) {\n\t\t\ttop = toolbarY - menuHeight;\n\t\t}\n\t}\n\n\treturn {\n\t\ttop,\n\t\tleft,\n\t};\n};\n\n/**\n * Calculates the height and position that a window should take based on the height necessary to display\n * the window's DOM contents without scrollbars, but not beyond the scope of the monitor itself.\n *\n * @param childWindow Window The window to calculate\n * @param menuId string The id of the menu, used for a CSS selector\n * @param [maxHeight] Maximum height for the window\n * @param [fixedHeight] Optional fixed height\n */\nexport const calculateDimensions = async (\n\tchildWindow: Window,\n\tmenuId: string,\n\tfixedHeight: number = 0,\n\tmaxHeight: number = Infinity\n): Promise<{\n\ttop: number;\n\tleft: number;\n\theight: number;\n}> => {\n\t/* Content height is essentially the offsetHeight of the window's <html> element.\n\tThis seems more reliable than summing the heights of all body children.\n\t*/\n\tconst contentHeight = childWindow.document.documentElement.offsetHeight;\n\n\t/**\n\t * Calculate the actual menu height, constrained by maximum and minimum sizes.\n\t * Zero, null or undefined are invalid maximum heights.\n\t *\n\t * Chromium imposes a 100 pixel minimum on window height.\n\t */\n\tconst CHROMIUM_MIN_HEIGHT = 100;\n\tconst minimumContentHeight = Math.max(contentHeight, CHROMIUM_MIN_HEIGHT);\n\tconst height = fixedHeight ? fixedHeight : Math.min(minimumContentHeight, maxHeight);\n\n\tconst { left, top } = await calculatePosition(menuId, height);\n\n\t// Final step, make sure the menu isn't larger than the screen itself\n\tconst { availHeight }: Screen = window.screen;\n\tconst finalHeight = Math.min(height, availHeight);\n\n\treturn {\n\t\ttop,\n\t\tleft,\n\t\theight: finalHeight,\n\t};\n};\n\n/**\n * Copy CSS elements from parent to child window. Portals operate in a new window which doesn't automatically\n * have access to the CSS from the main window, so we need to clone those elements into the menu's window\n * when it is created.\n * @param childWindow Child window reference\n */\nexport const injectCSS = (childWindow: Window): void => {\n\tconst { children }: any = document.head;\n\tconst styleElements: HTMLElement[] = [];\n\tfor (const item in children) {\n\t\t/** \n\t\t\twebpack's style-loader creates <style> tags but some versions will create <link> tags if CSS source maps are \n\t\t\tenabled (sourceMap), or if `injectType: linkTag` is configured.\n \t*/\n\t\tif (children[item].tagName === \"STYLE\" || children[item].tagName === \"LINK\") {\n\t\t\tconst newElement = children[item].cloneNode(true);\n\t\t\tstyleElements.push(newElement);\n\t\t}\n\t}\n\tstyleElements.forEach((item) => {\n\t\tchildWindow.document.head.append(item);\n\t});\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NoNotifications.js","sourceRoot":"","sources":["../../../../src/components/notifications/components/NoNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAA4B,GAAG,EAAE;IACrD,OAAO,CACN,6BAAK,SAAS,EAAC,kBAAkB;QAChC,6DAAkC,CAC7B,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import React from \"react\";\r\n\r\nconst NoNotifications: React.FunctionComponent = () => {\r\n\treturn (\r\n\t\t<div className=\"no-notifications\">\r\n\t\t\t<p>No notifications to display</p>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default NoNotifications;\r\n"]}
1
+ {"version":3,"file":"NoNotifications.js","sourceRoot":"","sources":["../../../../src/components/notifications/components/NoNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAA4B,GAAG,EAAE;IACrD,OAAO,CACN,6BAAK,SAAS,EAAC,kBAAkB;QAChC,6DAAkC,CAC7B,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import React from \"react\";\n\nconst NoNotifications: React.FunctionComponent = () => {\n\treturn (\n\t\t<div className=\"no-notifications\">\n\t\t\t<p>No notifications to display</p>\n\t\t</div>\n\t);\n};\n\nexport default NoNotifications;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,MAAM,GAAmC,CAAC,KAAY,EAAE,EAAE;IAC/D,OAAO,CACN,6BAAK,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3C,6BAAK,SAAS,EAAC,kBAAkB,IAAE,KAAK,CAAC,QAAQ,CAAO,CACnD,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from \"react\";\r\n\r\ninterface Props {\r\n\tclassNames?: string;\r\n\tchildren?: React.ReactNode;\r\n}\r\n\r\nconst Drawer: React.FunctionComponent<Props> = (props: Props) => {\r\n\treturn (\r\n\t\t<div id=\"drawer\" className={props.classNames}>\r\n\t\t\t<div className=\"drawer-container\">{props.children}</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default Drawer;\r\n"]}
1
+ {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,MAAM,GAAmC,CAAC,KAAY,EAAE,EAAE;IAC/D,OAAO,CACN,6BAAK,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3C,6BAAK,SAAS,EAAC,kBAAkB,IAAE,KAAK,CAAC,QAAQ,CAAO,CACnD,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import React from \"react\";\n\ninterface Props {\n\tclassNames?: string;\n\tchildren?: React.ReactNode;\n}\n\nconst Drawer: React.FunctionComponent<Props> = (props: Props) => {\n\treturn (\n\t\t<div id=\"drawer\" className={props.classNames}>\n\t\t\t<div className=\"drawer-container\">{props.children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Drawer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerControls.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerControls.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext } from \"react\";\r\n\r\n// Context\r\nimport { NotificationsContext } from \"../../notificationsContext\";\r\n\r\n// Types & Constants\r\nimport { Control } from \"../../types\";\r\nimport { ViewMode, SelectionMode } from \"../../constants\";\r\n\r\n// Hooks\r\nimport {\r\n\tmarkNotificationsRead,\r\n\tmarkNotificationsUnread,\r\n\tdismissNotification,\r\n\tsnoozeNotifications,\r\n} from \"../../../../hooks/useNotifications\";\r\n\r\n// Components\r\nimport IconButton from \"../shared/IconButton\";\r\n\r\nconst DrawerControls: React.FunctionComponent = () => {\r\n\tconst notificationsContext = useContext(NotificationsContext);\r\n\tconst {\r\n\t\tviewMode,\r\n\t\tsetViewMode,\r\n\t\tdrawerControlProps,\r\n\t\tsetDrawerControlProps,\r\n\t\tselectionMode,\r\n\t\tsetSelectionMode,\r\n\t\tcheckedNotifications,\r\n\t} = notificationsContext;\r\n\r\n\tconst toggleControl = (clickedControl: Control) => {\r\n\t\t// If we click on the control aready active, then there's nothing to toggle and we bail out.\r\n\t\tif (clickedControl.action === drawerControlProps.active) return;\r\n\t\tdrawerControlProps.controls.map((control: Control) => {\r\n\t\t\tif (control.action === clickedControl.action) {\r\n\t\t\t\tif (drawerControlProps.active === control.action) {\r\n\t\t\t\t\tdelete drawerControlProps.active;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdrawerControlProps.active = control.action;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tsetDrawerControlProps({ ...drawerControlProps });\r\n\t};\r\n\r\n\tconst renderControls = () => {\r\n\t\tlet className = \"notifications-center-controls__filter-btn\";\r\n\t\treturn drawerControlProps.controls.map((control: Control) => {\r\n\t\t\treturn (\r\n\t\t\t\t<div\r\n\t\t\t\t\tkey={control.action}\r\n\t\t\t\t\tclassName={`${className} ${drawerControlProps.active === control.action ? \"active\" : \"\"}`}\r\n\t\t\t\t\tonClick={() => toggleControl(control)}\r\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { pointerEvents: \"none\", opacity: \"0.4\" } : {}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{control.label}\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\t});\r\n\t};\r\n\r\n\tconst toggleSelect = () => {\r\n\t\tsetSelectionMode(\r\n\t\t\tselectionMode === SelectionMode.NO_SELECTION ? SelectionMode.SELECTION : SelectionMode.NO_SELECTION\r\n\t\t);\r\n\t};\r\n\r\n\tconst readChecked = () => {\r\n\t\tmarkNotificationsRead(checkedNotifications);\r\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\r\n\t};\r\n\r\n\tconst unreadChecked = () => {\r\n\t\tmarkNotificationsUnread(checkedNotifications);\r\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\r\n\t};\r\n\r\n\tconst hideChecked = () => {\r\n\t\tdismissNotification(checkedNotifications);\r\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\r\n\t};\r\n\r\n\tconst snoozeChecked = () => {\r\n\t\tsnoozeNotifications(checkedNotifications);\r\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div id=\"notifications-center-controls\">\r\n\t\t\t<div className=\"notifications-center-controls__row\">{renderControls()}</div>\r\n\t\t\t<div className=\"notifications-center-controls__row\">\r\n\t\t\t\t<div className=\"notifications-center-controls__filter-btn\" onClick={() => toggleSelect()}>\r\n\t\t\t\t\t<i\r\n\t\t\t\t\t\tclassName={selectionMode === SelectionMode.NO_SELECTION ? \"ff-check-mark\" : \"ff-close\"}\r\n\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\tpaddingRight: \"5px\",\r\n\t\t\t\t\t\t\tcolor: selectionMode === SelectionMode.NO_SELECTION ? \"var(--accent-positive)\" : \"\",\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\tSelect\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\r\n\t\t\t\t\tonClick={() => readChecked()}\r\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\tMark Read\r\n\t\t\t\t</div>\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\r\n\t\t\t\t\tonClick={() => unreadChecked()}\r\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\tMark Unread\r\n\t\t\t\t</div>\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\r\n\t\t\t\t\tonClick={() => hideChecked()}\r\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\tHide\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\r\n\t\t\t\t\tonClick={() => snoozeChecked()}\r\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\tSnooze\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div className=\"notifications-center-controls__view_mode\">\r\n\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\ticonName=\"ff-chart-alt-2\"\r\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.CARD ? \"active\" : \"\"}\r\n\t\t\t\t\t\tclickHandler={() => {\r\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\r\n\t\t\t\t\t\t\tsetViewMode(ViewMode.CARD);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\ticonName=\"ff-adp-hamburger\"\r\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.LIST ? \"active\" : \"\"}\r\n\t\t\t\t\t\tclickHandler={() => {\r\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\r\n\t\t\t\t\t\t\tsetViewMode(ViewMode.LIST);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default DrawerControls;\r\n"]}
1
+ {"version":3,"file":"DrawerControls.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerControls.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext } from \"react\";\n\n// Context\nimport { NotificationsContext } from \"../../notificationsContext\";\n\n// Types & Constants\nimport { Control } from \"../../types\";\nimport { ViewMode, SelectionMode } from \"../../constants\";\n\n// Hooks\nimport {\n\tmarkNotificationsRead,\n\tmarkNotificationsUnread,\n\tdismissNotification,\n\tsnoozeNotifications,\n} from \"../../../../hooks/useNotifications\";\n\n// Components\nimport IconButton from \"../shared/IconButton\";\n\nconst DrawerControls: React.FunctionComponent = () => {\n\tconst notificationsContext = useContext(NotificationsContext);\n\tconst {\n\t\tviewMode,\n\t\tsetViewMode,\n\t\tdrawerControlProps,\n\t\tsetDrawerControlProps,\n\t\tselectionMode,\n\t\tsetSelectionMode,\n\t\tcheckedNotifications,\n\t} = notificationsContext;\n\n\tconst toggleControl = (clickedControl: Control) => {\n\t\t// If we click on the control aready active, then there's nothing to toggle and we bail out.\n\t\tif (clickedControl.action === drawerControlProps.active) return;\n\t\tdrawerControlProps.controls.map((control: Control) => {\n\t\t\tif (control.action === clickedControl.action) {\n\t\t\t\tif (drawerControlProps.active === control.action) {\n\t\t\t\t\tdelete drawerControlProps.active;\n\t\t\t\t} else {\n\t\t\t\t\tdrawerControlProps.active = control.action;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsetDrawerControlProps({ ...drawerControlProps });\n\t};\n\n\tconst renderControls = () => {\n\t\tlet className = \"notifications-center-controls__filter-btn\";\n\t\treturn drawerControlProps.controls.map((control: Control) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={control.action}\n\t\t\t\t\tclassName={`${className} ${drawerControlProps.active === control.action ? \"active\" : \"\"}`}\n\t\t\t\t\tonClick={() => toggleControl(control)}\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { pointerEvents: \"none\", opacity: \"0.4\" } : {}}\n\t\t\t\t>\n\t\t\t\t\t{control.label}\n\t\t\t\t</div>\n\t\t\t);\n\t\t});\n\t};\n\n\tconst toggleSelect = () => {\n\t\tsetSelectionMode(\n\t\t\tselectionMode === SelectionMode.NO_SELECTION ? SelectionMode.SELECTION : SelectionMode.NO_SELECTION\n\t\t);\n\t};\n\n\tconst readChecked = () => {\n\t\tmarkNotificationsRead(checkedNotifications);\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t};\n\n\tconst unreadChecked = () => {\n\t\tmarkNotificationsUnread(checkedNotifications);\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t};\n\n\tconst hideChecked = () => {\n\t\tdismissNotification(checkedNotifications);\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t};\n\n\tconst snoozeChecked = () => {\n\t\tsnoozeNotifications(checkedNotifications);\n\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t};\n\n\treturn (\n\t\t<div id=\"notifications-center-controls\">\n\t\t\t<div className=\"notifications-center-controls__row\">{renderControls()}</div>\n\t\t\t<div className=\"notifications-center-controls__row\">\n\t\t\t\t<div className=\"notifications-center-controls__filter-btn\" onClick={() => toggleSelect()}>\n\t\t\t\t\t<i\n\t\t\t\t\t\tclassName={selectionMode === SelectionMode.NO_SELECTION ? \"ff-check-mark\" : \"ff-close\"}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tpaddingRight: \"5px\",\n\t\t\t\t\t\t\tcolor: selectionMode === SelectionMode.NO_SELECTION ? \"var(--accent-positive)\" : \"\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\tSelect\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\n\t\t\t\t\tonClick={() => readChecked()}\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\n\t\t\t\t>\n\t\t\t\t\tMark Read\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\n\t\t\t\t\tonClick={() => unreadChecked()}\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\n\t\t\t\t>\n\t\t\t\t\tMark Unread\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\n\t\t\t\t\tonClick={() => hideChecked()}\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\n\t\t\t\t>\n\t\t\t\t\tHide\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn active\"\n\t\t\t\t\tonClick={() => snoozeChecked()}\n\t\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { visibility: \"visible\" } : { visibility: \"hidden\" }}\n\t\t\t\t>\n\t\t\t\t\tSnooze\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"notifications-center-controls__view_mode\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName=\"ff-chart-alt-2\"\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.CARD ? \"active\" : \"\"}\n\t\t\t\t\t\tclickHandler={() => {\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t\t\t\t\t\t\tsetViewMode(ViewMode.CARD);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName=\"ff-adp-hamburger\"\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.LIST ? \"active\" : \"\"}\n\t\t\t\t\t\tclickHandler={() => {\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t\t\t\t\t\t\tsetViewMode(ViewMode.LIST);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default DrawerControls;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerHeader.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useContext } from \"react\";\r\nimport debounce from \"lodash/debounce\";\r\n\r\n// Types\r\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../../constants\";\r\n\r\n// Hooks\r\nimport { usePubSub } from \"../../../../hooks/usePubSub\";\r\n\r\n// Components\r\nimport IconButton from \"../shared/IconButton\";\r\nimport { NotificationsContext } from \"../../notificationsContext\";\r\n\r\nconst NotificationsCenterMenu = ({ poppedOutStatus, popOutToggle }: any) => {\r\n\tconst goToSettings = () => {\r\n\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\r\n\t\t\tpreferencesTab: \"Notifications\",\r\n\t\t});\r\n\t\tFSBL.Clients.LauncherClient.showWindow(\r\n\t\t\t{\r\n\t\t\t\tcomponentType: \"UserPreferences\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tmonitor: \"mine\",\r\n\t\t\t\tleft: \"center\",\r\n\t\t\t\ttop: \"center\",\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div className=\"overflow-menu__container\">\r\n\t\t\t<div className=\"overflow-menu__action\" onClick={popOutToggle}>\r\n\t\t\t\t<div className=\"finsemble-icon\">\r\n\t\t\t\t\t<i className={`ff-${poppedOutStatus ? \"share\" : \"chat-popout\"}`} />\r\n\t\t\t\t</div>\r\n\t\t\t\t<span className=\"btn-label\">{poppedOutStatus ? \"Pop-in\" : \"Pop-out\"}</span>\r\n\t\t\t</div>\r\n\t\t\t<div className=\"overflow-menu__action\" onClick={goToSettings}>\r\n\t\t\t\t<div className=\"finsemble-icon\">\r\n\t\t\t\t\t<i className=\"ff-settings\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<span className=\"btn-label\">Settings</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst DrawerHeader: React.FunctionComponent<{\r\n\tpoppedOutStatus: boolean;\r\n\tpopOutToggle: Function;\r\n}> = ({ poppedOutStatus, popOutToggle }) => {\r\n\tconst [notificationSubscribeMessage, notificationsPublish] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\r\n\tconst notificationsContext = useContext(NotificationsContext);\r\n\tconst { searchString, setSearchString } = notificationsContext;\r\n\r\n\tconst [searchInputValue, setSearchInputValue] = useState(searchString);\r\n\r\n\tconst [showMenu, setShowMenu] = useState(false);\r\n\r\n\tconst closeDrawerClick = () => {\r\n\t\tconst publishValue = { ...notificationSubscribeMessage };\r\n\t\tpublishValue[\"showCenter\"] = false;\r\n\t\tnotificationsPublish(publishValue);\r\n\t};\r\n\r\n\tconst toggleMenu = () => {\r\n\t\tsetShowMenu(!showMenu);\r\n\t};\r\n\r\n\t// This is unchanged across renders\r\n\tconst handleSearchTerm = useRef(\r\n\t\tdebounce((nextValue: string) => {\r\n\t\t\tconst regex = /^(title|details|source):/gi;\r\n\t\t\tnextValue = nextValue.trim();\r\n\r\n\t\t\tconst isFilter = regex.test(nextValue);\r\n\t\t\tlet parsedSearchTerm = \"\";\r\n\r\n\t\t\tif (isFilter) {\r\n\t\t\t\tparsedSearchTerm = nextValue.split(\":\")[1].trim();\r\n\t\t\t} else {\r\n\t\t\t\tparsedSearchTerm = nextValue;\r\n\t\t\t}\r\n\r\n\t\t\tif (parsedSearchTerm.length > 2) {\r\n\t\t\t\tsetSearchString(nextValue);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log(\"search string is too short\");\r\n\t\t\t\tsetSearchString(\"\");\r\n\t\t\t}\r\n\t\t}, 400)\r\n\t).current;\r\n\r\n\tconst handleChange = (ev: any) => {\r\n\t\tconst { value: nextValue } = ev.target;\r\n\t\tsetSearchInputValue(nextValue);\r\n\t\t// Even though handleChange is created on each render and executed\r\n\t\t// it references the same handleSearchTerm that was created initially\r\n\t\thandleSearchTerm(nextValue);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div id=\"notifications-center__header\">\r\n\t\t\t<IconButton iconName=\"ff-search\" classNames=\"no-hover\" />\r\n\t\t\t<input\r\n\t\t\t\tclassName=\"search-notifications__input\"\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tplaceholder={\"Search Notifications\"}\r\n\t\t\t\tvalue={searchInputValue}\r\n\t\t\t\tonChange={handleChange}\r\n\t\t\t/>\r\n\t\t\t<IconButton iconName=\"ff-dots-vert\" tooltip=\"Options\" classNames=\"center-menu\" clickHandler={() => toggleMenu()}>\r\n\t\t\t\t{showMenu ? <NotificationsCenterMenu poppedOutStatus={poppedOutStatus} popOutToggle={popOutToggle} /> : null}\r\n\t\t\t</IconButton>\r\n\t\t\t<IconButton iconName=\"ff-adp-chevron-right\" clickHandler={() => closeDrawerClick()} />\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default DrawerHeader;\r\n"]}
1
+ {"version":3,"file":"DrawerHeader.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAGvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAG7D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,uBAAuB,GAAG,CAAC,EAAE,eAAe,EAAE,YAAY,EAAO,EAAE,EAAE;IAC1E,MAAM,YAAY,GAAG,GAAG,EAAE;QACzB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,iCAAiC,EAAE;YACrE,cAAc,EAAE,eAAe;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CACrC;YACC,aAAa,EAAE,iBAAiB;SAChC,EACD;YACC,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,QAAQ;SACb,CACD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAC,0BAA0B;QACxC,6BAAK,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,YAAY;YAC3D,6BAAK,SAAS,EAAC,gBAAgB;gBAC9B,2BAAG,SAAS,EAAE,MAAM,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,GAAI,CAC9D;YACN,8BAAM,SAAS,EAAC,WAAW,IAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAQ,CACtE;QACN,6BAAK,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,YAAY;YAC3D,6BAAK,SAAS,EAAC,gBAAgB;gBAC9B,2BAAG,SAAS,EAAC,aAAa,GAAG,CACxB;YACN,8BAAM,SAAS,EAAC,WAAW,eAAgB,CACtC,CACD,CACN,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAGb,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE;IAC1C,MAAM,CAAC,4BAA4B,EAAE,oBAAoB,CAAC,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACnG,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC9D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAAC;IAE/D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEvE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,MAAM,YAAY,GAAG,EAAE,GAAG,4BAA4B,EAAE,CAAC;QACzD,YAAY,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QACnC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC,CAAC;IAGF,MAAM,gBAAgB,GAAG,MAAM,CAC9B,QAAQ,CAAC,CAAC,SAAiB,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,4BAA4B,CAAC;QAC3C,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAE7B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,IAAI,QAAQ,EAAE;YACb,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClD;aAAM;YACN,gBAAgB,GAAG,SAAS,CAAC;SAC7B;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,eAAe,CAAC,SAAS,CAAC,CAAC;SAC3B;aAAM;YACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,eAAe,CAAC,EAAE,CAAC,CAAC;SACpB;IACF,CAAC,EAAE,GAAG,CAAC,CACP,CAAC,OAAO,CAAC;IAEV,MAAM,YAAY,GAAG,CAAC,EAAO,EAAE,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;QACvC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAG/B,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,EAAE,EAAC,8BAA8B;QACrC,oBAAC,UAAU,IAAC,QAAQ,EAAC,WAAW,EAAC,UAAU,EAAC,UAAU,GAAG;QACzD,+BACC,SAAS,EAAC,6BAA6B,EACvC,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,sBAAsB,EACnC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,YAAY,GACrB;QACF,oBAAC,UAAU,IAAC,QAAQ,EAAC,cAAc,EAAC,OAAO,EAAC,SAAS,EAAC,UAAU,EAAC,aAAa,EAAC,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,IAC7G,QAAQ,CAAC,CAAC,CAAC,oBAAC,uBAAuB,IAAC,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,GAAI,CAAC,CAAC,CAAC,IAAI,CAChG;QACb,oBAAC,UAAU,IAAC,QAAQ,EAAC,sBAAsB,EAAC,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,GAAI,CACjF,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import React, { useState, useRef, useContext } from \"react\";\nimport debounce from \"lodash/debounce\";\n\n// Types\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../../constants\";\n\n// Hooks\nimport { usePubSub } from \"../../../../hooks/usePubSub\";\n\n// Components\nimport IconButton from \"../shared/IconButton\";\nimport { NotificationsContext } from \"../../notificationsContext\";\n\nconst NotificationsCenterMenu = ({ poppedOutStatus, popOutToggle }: any) => {\n\tconst goToSettings = () => {\n\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\n\t\t\tpreferencesTab: \"Notifications\",\n\t\t});\n\t\tFSBL.Clients.LauncherClient.showWindow(\n\t\t\t{\n\t\t\t\tcomponentType: \"UserPreferences\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmonitor: \"mine\",\n\t\t\t\tleft: \"center\",\n\t\t\t\ttop: \"center\",\n\t\t\t}\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"overflow-menu__container\">\n\t\t\t<div className=\"overflow-menu__action\" onClick={popOutToggle}>\n\t\t\t\t<div className=\"finsemble-icon\">\n\t\t\t\t\t<i className={`ff-${poppedOutStatus ? \"share\" : \"chat-popout\"}`} />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"btn-label\">{poppedOutStatus ? \"Pop-in\" : \"Pop-out\"}</span>\n\t\t\t</div>\n\t\t\t<div className=\"overflow-menu__action\" onClick={goToSettings}>\n\t\t\t\t<div className=\"finsemble-icon\">\n\t\t\t\t\t<i className=\"ff-settings\" />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"btn-label\">Settings</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst DrawerHeader: React.FunctionComponent<{\n\tpoppedOutStatus: boolean;\n\tpopOutToggle: Function;\n}> = ({ poppedOutStatus, popOutToggle }) => {\n\tconst [notificationSubscribeMessage, notificationsPublish] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\n\tconst notificationsContext = useContext(NotificationsContext);\n\tconst { searchString, setSearchString } = notificationsContext;\n\n\tconst [searchInputValue, setSearchInputValue] = useState(searchString);\n\n\tconst [showMenu, setShowMenu] = useState(false);\n\n\tconst closeDrawerClick = () => {\n\t\tconst publishValue = { ...notificationSubscribeMessage };\n\t\tpublishValue[\"showCenter\"] = false;\n\t\tnotificationsPublish(publishValue);\n\t};\n\n\tconst toggleMenu = () => {\n\t\tsetShowMenu(!showMenu);\n\t};\n\n\t// This is unchanged across renders\n\tconst handleSearchTerm = useRef(\n\t\tdebounce((nextValue: string) => {\n\t\t\tconst regex = /^(title|details|source):/gi;\n\t\t\tnextValue = nextValue.trim();\n\n\t\t\tconst isFilter = regex.test(nextValue);\n\t\t\tlet parsedSearchTerm = \"\";\n\n\t\t\tif (isFilter) {\n\t\t\t\tparsedSearchTerm = nextValue.split(\":\")[1].trim();\n\t\t\t} else {\n\t\t\t\tparsedSearchTerm = nextValue;\n\t\t\t}\n\n\t\t\tif (parsedSearchTerm.length > 2) {\n\t\t\t\tsetSearchString(nextValue);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"search string is too short\");\n\t\t\t\tsetSearchString(\"\");\n\t\t\t}\n\t\t}, 400)\n\t).current;\n\n\tconst handleChange = (ev: any) => {\n\t\tconst { value: nextValue } = ev.target;\n\t\tsetSearchInputValue(nextValue);\n\t\t// Even though handleChange is created on each render and executed\n\t\t// it references the same handleSearchTerm that was created initially\n\t\thandleSearchTerm(nextValue);\n\t};\n\n\treturn (\n\t\t<div id=\"notifications-center__header\">\n\t\t\t<IconButton iconName=\"ff-search\" classNames=\"no-hover\" />\n\t\t\t<input\n\t\t\t\tclassName=\"search-notifications__input\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tplaceholder={\"Search Notifications\"}\n\t\t\t\tvalue={searchInputValue}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<IconButton iconName=\"ff-dots-vert\" tooltip=\"Options\" classNames=\"center-menu\" clickHandler={() => toggleMenu()}>\n\t\t\t\t{showMenu ? <NotificationsCenterMenu poppedOutStatus={poppedOutStatus} popOutToggle={popOutToggle} /> : null}\n\t\t\t</IconButton>\n\t\t\t<IconButton iconName=\"ff-adp-chevron-right\" clickHandler={() => closeDrawerClick()} />\n\t\t</div>\n\t);\n};\n\nexport default DrawerHeader;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationsCenter.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/notificationsCenter/NotificationsCenter.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\r\nimport { CSSTransition } from \"react-transition-group\";\r\nimport ConditionalWrapper from \"../../../shared/ConditionalWrapper\";\r\n\r\nimport { NOTIFICATIONS_PUBSUB_TOPIC, ViewMode, SelectionMode } from \"../../constants\";\r\n\r\nimport \"../../../../assets/css/notificationsCenter.css\";\r\n\r\n// Hooks\r\nimport { usePubSub } from \"../../../../hooks/usePubSub\";\r\nimport useNotifications, {\r\n\tgetNotificationConfig,\r\n\tmoveToToolbarMonitor,\r\n\tgetOS,\r\n\tgetFetchHistoryParams,\r\n} from \"../../../../hooks/useNotifications\";\r\n\r\n// Context\r\nimport { NotificationsContext } from \"../../notificationsContext\";\r\n\r\n// Types\r\nimport { INotificationCenterProps, NotificationCenterControlsProps, NotificationsContextType } from \"../../types\";\r\nimport { INotification } from \"common/notifications/definitions/INotification\";\r\nimport IMuteFilter from \"common/notifications/definitions/IMuteFilter\";\r\n\r\n// Components\r\nimport CardView from \"../views/CardView\";\r\nimport Drawer from \"../drawer/Drawer\";\r\nimport DrawerControls from \"../drawer/DrawerControls\";\r\nimport DrawerHeader from \"../drawer/DrawerHeader\";\r\nimport ListView from \"../views/ListView\";\r\nimport NotificationDetailsView from \"../views/NotificationDetailsView\";\r\n\r\nconst defaultControls: NotificationCenterControlsProps = {\r\n\tcontrols: [\r\n\t\t{\r\n\t\t\taction: \"all\",\r\n\t\t\tlabel: \"All\",\r\n\t\t\trun: (notifications: INotification[]) => {\r\n\t\t\t\treturn notifications;\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\taction: \"unread\",\r\n\t\t\tlabel: \"Unread\",\r\n\t\t\trun: (notifications: INotification[]) => {\r\n\t\t\t\treturn notifications.filter((notification: INotification) => !notification.isRead);\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\taction: \"read\",\r\n\t\t\tlabel: \"Read\",\r\n\t\t\trun: (notifications: INotification[]) => {\r\n\t\t\t\treturn notifications.filter((notification: INotification) => notification.isRead);\r\n\t\t\t},\r\n\t\t},\r\n\t\t{\r\n\t\t\taction: \"snoozed\",\r\n\t\t\tlabel: \"Snoozed\",\r\n\t\t\trun: (notifications: INotification[]) => {\r\n\t\t\t\treturn notifications.filter((notification: INotification) => notification.isSnoozed);\r\n\t\t\t},\r\n\t\t},\r\n\t],\r\n\tactive: \"all\",\r\n};\r\n\r\nconst addPoppedInClasses = () => {\r\n\tdocument.getElementById(\"notifications-center-container\")?.classList.add(\"notifications-popped-in\");\r\n\tdocument.getElementById(\"FSBLHeader\")?.classList.add(\"notifications-popped-in\");\r\n};\r\n\r\nconst removePoppedInClasses = () => {\r\n\tdocument.getElementById(\"notifications-center-container\")?.classList.remove(\"notifications-popped-in\");\r\n\tdocument.getElementById(\"FSBLHeader\")?.classList.remove(\"notifications-popped-in\");\r\n};\r\n\r\nconst storeNotificationsCenterWindowPosition = ({ showCenter, poppedOut, position }: any) => {\r\n\tFSBL.Clients.StorageClient.save({\r\n\t\ttopic: \"finsemble.notifications\",\r\n\t\tkey: \"last.position\",\r\n\t\tvalue: {\r\n\t\t\tshowCenter,\r\n\t\t\tpoppedOut,\r\n\t\t\tposition,\r\n\t\t},\r\n\t});\r\n};\r\n\r\nconst setShowWindowForState = (centerState: any) => {\r\n\tif (centerState.showCenter) {\r\n\t\tfinsembleWindow.show({}, () => {\r\n\t\t\tfinsembleWindow.bringToFront();\r\n\t\t});\r\n\t}\r\n\r\n\tif (centerState.position) {\r\n\t\tfinsembleWindow.setBounds(centerState.position);\r\n\t}\r\n\r\n\t// Always on top when popped in\r\n\tFSBL.Clients.WindowClient.setAlwaysOnTop(!centerState.poppedOut);\r\n\tstoreNotificationsCenterWindowPosition(centerState);\r\n};\r\n\r\nconst isValidPosition = (bounds: any): boolean => {\r\n\treturn (\r\n\t\tbounds &&\r\n\t\ttypeof bounds.left !== \"undefined\" &&\r\n\t\ttypeof bounds.top !== \"undefined\" &&\r\n\t\ttypeof bounds.height !== \"undefined\" &&\r\n\t\ttypeof bounds.width !== \"undefined\"\r\n\t);\r\n};\r\n\r\nconst LAZY_LOAD_NO_MORE_PAGES = -1;\r\n\r\nexport const NotificationsCenter: React.FunctionComponent<INotificationCenterProps> = (props) => {\r\n\tconst params = { config: { notificationsHistory: { options: { pageSize: 10 } } } };\r\n\tconst { notifications, setOpaqueClassName, addNotification } = useNotifications(params);\r\n\tconst [notificationSubscribeMessage, notificationsPublish] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\r\n\r\n\tconst config = getNotificationConfig();\r\n\tconst [isInitialized, setInitialized] = useState(false);\r\n\tconst [isMac] = useState(getOS() === \"Mac\");\r\n\tconst nextPageToFetch = useRef(1);\r\n\r\n\t// Set up references for use in callbacks to FSBL functions\r\n\tconst showCenterRef = useRef(false);\r\n\tconst poppedOutRef = useRef(false);\r\n\tconst subscriptionMessageRef = useRef<any>({});\r\n\tconst applicationState = useRef(null);\r\n\r\n\tconst checkedNotifications: INotification[] = [];\r\n\r\n\tconst [searchString, setSearchString] = useState(\"\");\r\n\tconst [filteredNotifications, setFilteredNotifications] = useState([...notifications]);\r\n\tconst [viewMode, setViewMode] = useState<ViewMode>(ViewMode.CARD);\r\n\tconst [selectionMode, setSelectionMode] = useState<SelectionMode>(SelectionMode.NO_SELECTION);\r\n\tconst [selectedNotification, setSelectedNotification] = useState<INotification | null>(null);\r\n\tconst [muteFilters, setMuteFilters] = useState<IMuteFilter[]>([]);\r\n\tconst [reloadMuteFilters, setReloadMuteFilters] = useState(true);\r\n\r\n\tconst dcp: NotificationCenterControlsProps = props.controls ? props.controls : defaultControls;\r\n\r\n\tconst [drawerControlProps, setDrawerControlProps] = useState(dcp);\r\n\tconst notificationsContextValues: NotificationsContextType = {\r\n\t\tviewMode,\r\n\t\tsetViewMode,\r\n\t\tselectionMode,\r\n\t\tsetSelectionMode,\r\n\t\tdrawerControlProps,\r\n\t\tsetDrawerControlProps,\r\n\t\tselectedNotification,\r\n\t\tsetSelectedNotification,\r\n\t\tsearchString,\r\n\t\tsetSearchString,\r\n\t\tfilteredNotifications,\r\n\t\tcheckedNotifications,\r\n\t\tsetFilteredNotifications,\r\n\t\tmuteFilters,\r\n\t\tsetMuteFilters,\r\n\t};\r\n\r\n\tconst togglePoppedStatus = () => {\r\n\t\tconst publishValue = { ...notificationSubscribeMessage };\r\n\t\tpublishValue[\"poppedOut\"] = !notificationSubscribeMessage.poppedOut;\r\n\t\tpoppedOutRef.current = publishValue[\"poppedOut\"];\r\n\t\tnotificationsPublish(publishValue);\r\n\t};\r\n\r\n\tconst setFullHeight = async (monitorInfo?: any) => {\r\n\t\tif (!monitorInfo) {\r\n\t\t\tawait new Promise<void>((resolve) => {\r\n\t\t\t\tfinsembleWindow.getMonitor((monitor: any) => {\r\n\t\t\t\t\tmonitorInfo = monitor;\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst { data } = await finsembleWindow.getBounds();\r\n\t\tconst centerWindowPosition = {\r\n\t\t\tleft: monitorInfo.availableRect.right - data.width,\r\n\t\t\ttop: monitorInfo.availableRect.top,\r\n\t\t\theight: monitorInfo.availableRect.height,\r\n\t\t\twidth: data.width,\r\n\t\t};\r\n\r\n\t\tsetShowWindowForState({\r\n\t\t\tshowCenter: notificationSubscribeMessage.showCenter,\r\n\t\t\tpoppedOut: poppedOutRef.current,\r\n\t\t\tposition: centerWindowPosition,\r\n\t\t});\r\n\r\n\t\tFSBL.Clients.WindowClient.setShape([]);\r\n\t};\r\n\r\n\tconst boundsChangeListener = (event: any) => {\r\n\t\tif (showCenterRef?.current && !poppedOutRef.current) {\r\n\t\t\t// Bounds Changed fires when Windows Taskbar + Finsemble Toolbar docking changes\r\n\t\t\tsetFullHeight();\r\n\t\t}\r\n\t\tconst position = {\r\n\t\t\ttop: event.data.top,\r\n\t\t\tleft: event.data.left,\r\n\t\t\theight: event.data.height,\r\n\t\t\twidth: event.data.width,\r\n\t\t};\r\n\r\n\t\tstoreNotificationsCenterWindowPosition({\r\n\t\t\tshowCenter: showCenterRef?.current ? showCenterRef.current : false,\r\n\t\t\tpoppedOut: poppedOutRef.current,\r\n\t\t\tposition,\r\n\t\t});\r\n\t};\r\n\r\n\tconst getScrollPercentage = () => {\r\n\t\tconst maxScroll = document.body.scrollHeight;\r\n\t\tconst currentScroll = window.innerHeight + window.scrollY;\r\n\t\treturn currentScroll / maxScroll;\r\n\t};\r\n\r\n\tconst lazyLoadNextPage = async () =>\r\n\t\tnew Promise<void>(async (resolve) => {\r\n\t\t\tif (nextPageToFetch.current > 0) {\r\n\t\t\t\tconst [options, filter] = getFetchHistoryParams(config, params);\r\n\t\t\t\toptions.pageNumber = nextPageToFetch.current;\r\n\t\t\t\tconst notificationList = await FSBL.Clients.NotificationClient.fetchHistory(options, filter);\r\n\t\t\t\tif (notificationList.length) {\r\n\t\t\t\t\tnextPageToFetch.current = nextPageToFetch.current + 1;\r\n\t\t\t\t\tfor (const notification of notificationList) {\r\n\t\t\t\t\t\taddNotification(notification);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Stop fetching after this one\r\n\t\t\t\t\tnextPageToFetch.current = LAZY_LOAD_NO_MORE_PAGES;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresolve();\r\n\t\t});\r\n\r\n\tconst toggleCenter = async (show: boolean, isTransparent: boolean, poppedOut: boolean) => {\r\n\t\tif (isTransparent && !isMac) {\r\n\t\t\tif (poppedOut) {\r\n\t\t\t\tif (show) {\r\n\t\t\t\t\tfinsembleWindow.show({}, () => {\r\n\t\t\t\t\t\tfinsembleWindow.bringToFront();\r\n\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([]);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfinsembleWindow.hide();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (show) {\r\n\t\t\t\t\tif (!poppedOut) {\r\n\t\t\t\t\t\tawait moveToToolbarMonitor();\r\n\t\t\t\t\t\tawait setFullHeight();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfinsembleWindow.show({}, () => {\r\n\t\t\t\t\t\t\tfinsembleWindow.bringToFront();\r\n\t\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([]);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\t\t\ty: 0,\r\n\t\t\t\t\t\t\t\twidth: 1,\r\n\t\t\t\t\t\t\t\theight: 1,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t\tfinsembleWindow.hide();\r\n\t\t\t\t\t}, 500);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (show) {\r\n\t\t\t\tif (!poppedOut) {\r\n\t\t\t\t\tawait moveToToolbarMonitor();\r\n\t\t\t\t\tawait setFullHeight();\r\n\t\t\t\t}\r\n\t\t\t\tfinsembleWindow.show({}, () => {\r\n\t\t\t\t\tfinsembleWindow.bringToFront();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfinsembleWindow.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// When popped out we want to prevent the center to be closed when the close button is clicked (or alt +)\r\n\tuseEffect(() => {\r\n\t\tsetOpaqueClassName(!config.isTransparent);\r\n\r\n\t\tconst subscriptionId = FSBL.Clients.RouterClient.subscribe(\"Finsemble.Application.State\", (err, response) => {\r\n\t\t\tapplicationState.current = response.data.state;\r\n\t\t});\r\n\r\n\t\tconst hide = (event: any) => {\r\n\t\t\tconst publishValue = { ...subscriptionMessageRef.current };\r\n\t\t\tpublishValue[\"showCenter\"] = false;\r\n\t\t\tnotificationsPublish(publishValue);\r\n\t\t\tif (applicationState?.current !== \"closing\") {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tevent.cancel();\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tFSBL.Clients.Logger.system.error(\"Error cancelling the window close event\", error);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst scrollHandler = () => {\r\n\t\t\tif (getScrollPercentage() > 0.9) {\r\n\t\t\t\tlazyLoadNextPage();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfinsembleWindow.addEventListener(\"close-requested\", hide);\r\n\t\tfinsembleWindow.addEventListener(\"bounds-change-end\", boundsChangeListener);\r\n\t\twindow.addEventListener(\"scroll\", scrollHandler);\r\n\t\treturn () => {\r\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(subscriptionId);\r\n\t\t\tfinsembleWindow.removeEventListener(\"close-requested\", hide);\r\n\t\t\tfinsembleWindow.removeEventListener(\"bounds-change-end\", boundsChangeListener);\r\n\t\t\twindow.removeEventListener(\"scroll\", scrollHandler);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst recursiveLoad = async () => {\r\n\t\t\t// Cater for the case where there is no scroll bar to trigger lazy load - keep loading until scrollbar or no pages\r\n\t\t\tawait lazyLoadNextPage();\r\n\t\t\tif (getScrollPercentage() === 1 && nextPageToFetch.current != LAZY_LOAD_NO_MORE_PAGES) {\r\n\t\t\t\trecursiveLoad();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\trecursiveLoad();\r\n\t}, [viewMode, drawerControlProps.active]);\r\n\r\n\t// Hook to set up the center state from service data on component start\r\n\tuseEffect(() => {\r\n\t\tsubscriptionMessageRef.current = notificationSubscribeMessage;\r\n\t\t// Hook can execute before initial pubsub response - waiting for actual values\r\n\t\tif (!isInitialized && typeof notificationSubscribeMessage.showCenter !== \"undefined\") {\r\n\t\t\tif (notificationSubscribeMessage.poppedOut) {\r\n\t\t\t\tremovePoppedInClasses();\r\n\t\t\t} else {\r\n\t\t\t\taddPoppedInClasses();\r\n\t\t\t}\r\n\r\n\t\t\tif (isValidPosition(notificationSubscribeMessage.position)) {\r\n\t\t\t\tsetShowWindowForState({\r\n\t\t\t\t\tshowCenter: notificationSubscribeMessage.showCenter,\r\n\t\t\t\t\tpoppedOut: notificationSubscribeMessage.poppedOut,\r\n\t\t\t\t\tposition: notificationSubscribeMessage.position,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Setup references\r\n\t\t\tshowCenterRef.current = notificationSubscribeMessage.showCenter;\r\n\t\t\tpoppedOutRef.current = notificationSubscribeMessage.poppedOut;\r\n\r\n\t\t\tsetInitialized(true);\r\n\t\t}\r\n\t}, [notificationSubscribeMessage]);\r\n\r\n\t// Effect to run when we pop-in or pop-out the notification center\r\n\tuseEffect(() => {\r\n\t\tif (isInitialized) {\r\n\t\t\tpoppedOutRef.current = notificationSubscribeMessage.poppedOut;\r\n\t\t\tfinsembleWindow.getMonitor(async (monitorInfo: any) => {\r\n\t\t\t\tif (notificationSubscribeMessage.poppedOut) {\r\n\t\t\t\t\tconst { data } = await finsembleWindow.getBounds({});\r\n\t\t\t\t\tremovePoppedInClasses();\r\n\r\n\t\t\t\t\tconst centerWindowPosition = {\r\n\t\t\t\t\t\tleft: data.left - 25,\r\n\t\t\t\t\t\ttop: data.top + 25,\r\n\t\t\t\t\t\theight: Math.round(monitorInfo.availableRect.height * 0.8),\r\n\t\t\t\t\t\twidth: data.width,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsetShowWindowForState({\r\n\t\t\t\t\t\tshowCenter: notificationSubscribeMessage.showCenter,\r\n\t\t\t\t\t\tpoppedOut: notificationSubscribeMessage.poppedOut,\r\n\t\t\t\t\t\tposition: centerWindowPosition,\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\taddPoppedInClasses();\r\n\t\t\t\t\tsetFullHeight(monitorInfo);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}, [notificationSubscribeMessage.poppedOut]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (isInitialized) {\r\n\t\t\tshowCenterRef.current = notificationSubscribeMessage.showCenter;\r\n\t\t\ttoggleCenter(notificationSubscribeMessage.showCenter, config.isTransparent as boolean, poppedOutRef.current);\r\n\t\t}\r\n\t}, [notificationSubscribeMessage.showCenter]);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetFilteredNotifications([...notifications]);\r\n\t}, [notifications]);\r\n\r\n\tuseEffect(() => {\r\n\t\tfunction listenMuteStateChanged(error: any, response: any) {\r\n\t\t\tif (error) {\r\n\t\t\t\tconsole.error(\"FinsembleNotificationsMuteStateChannel: \", error);\r\n\t\t\t} else {\r\n\t\t\t\tsetReloadMuteFilters(true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\r\n\t\treturn () => {\r\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\r\n\t\t};\r\n\t}, []);\r\n\r\n\t// Sets the current active mute filters\r\n\tuseEffect(() => {\r\n\t\tasync function loadMuteFilter() {\r\n\t\t\treturn await FSBL.Clients.NotificationClient.getMuteFilters();\r\n\t\t}\r\n\r\n\t\tloadMuteFilter().then((muteFilters: IMuteFilter[]) => {\r\n\t\t\tsetMuteFilters(muteFilters);\r\n\t\t\tsetReloadMuteFilters(false);\r\n\t\t});\r\n\t}, [reloadMuteFilters]);\r\n\r\n\tconst notificationsMainView = () => {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t<DrawerHeader poppedOutStatus={notificationSubscribeMessage.poppedOut} popOutToggle={togglePoppedStatus} />\r\n\t\t\t\t<DrawerControls />\r\n\t\t\t\t<div className=\"cards-container\">\r\n\t\t\t\t\t{viewMode === ViewMode.CARD ? (\r\n\t\t\t\t\t\t<CardView notifications={notifications} notificationCard={props.notificationCard} />\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<ListView\r\n\t\t\t\t\t\t\tnotifications={notifications}\r\n\t\t\t\t\t\t\tnotificationHeaderRow={props.notificationHeaderRow}\r\n\t\t\t\t\t\t\tnotificationListRow={props.notificationListRow}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t</>\r\n\t\t);\r\n\t};\r\n\r\n\tconst notificationDetailsViewComponent = () => {\r\n\t\treturn <NotificationDetailsView notification={selectedNotification} />;\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ConditionalWrapper\r\n\t\t\tcondition={(config.isTransparent as boolean) && !notificationSubscribeMessage.poppedOut && !isMac}\r\n\t\t\twrapper={(children) => (\r\n\t\t\t\t<CSSTransition in={notificationSubscribeMessage.showCenter} timeout={500} classNames=\"drawer\" unmountOnExit>\r\n\t\t\t\t\t{children}\r\n\t\t\t\t</CSSTransition>\r\n\t\t\t)}\r\n\t\t>\r\n\t\t\t<NotificationsContext.Provider value={notificationsContextValues}>\r\n\t\t\t\t<Drawer classNames={notificationSubscribeMessage.poppedOut ? \"popped-out\" : \"\"}>\r\n\t\t\t\t\t{selectedNotification ? notificationDetailsViewComponent() : notificationsMainView()}\r\n\t\t\t\t</Drawer>\r\n\t\t\t</NotificationsContext.Provider>\r\n\t\t</ConditionalWrapper>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"NotificationsCenter.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/notificationsCenter/NotificationsCenter.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport ConditionalWrapper from \"../../../shared/ConditionalWrapper\";\n\nimport { NOTIFICATIONS_PUBSUB_TOPIC, ViewMode, SelectionMode } from \"../../constants\";\n\nimport \"../../../../assets/css/notificationsCenter.css\";\n\n// Hooks\nimport { usePubSub } from \"../../../../hooks/usePubSub\";\nimport useNotifications, {\n\tgetNotificationConfig,\n\tmoveToToolbarMonitor,\n\tgetOS,\n\tgetFetchHistoryParams,\n} from \"../../../../hooks/useNotifications\";\n\n// Context\nimport { NotificationsContext } from \"../../notificationsContext\";\n\n// Types\nimport { INotificationCenterProps, NotificationCenterControlsProps, NotificationsContextType } from \"../../types\";\nimport { INotification } from \"common/notifications/definitions/INotification\";\nimport IMuteFilter from \"common/notifications/definitions/IMuteFilter\";\n\n// Components\nimport CardView from \"../views/CardView\";\nimport Drawer from \"../drawer/Drawer\";\nimport DrawerControls from \"../drawer/DrawerControls\";\nimport DrawerHeader from \"../drawer/DrawerHeader\";\nimport ListView from \"../views/ListView\";\nimport NotificationDetailsView from \"../views/NotificationDetailsView\";\n\nconst defaultControls: NotificationCenterControlsProps = {\n\tcontrols: [\n\t\t{\n\t\t\taction: \"all\",\n\t\t\tlabel: \"All\",\n\t\t\trun: (notifications: INotification[]) => {\n\t\t\t\treturn notifications;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\taction: \"unread\",\n\t\t\tlabel: \"Unread\",\n\t\t\trun: (notifications: INotification[]) => {\n\t\t\t\treturn notifications.filter((notification: INotification) => !notification.isRead);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\taction: \"read\",\n\t\t\tlabel: \"Read\",\n\t\t\trun: (notifications: INotification[]) => {\n\t\t\t\treturn notifications.filter((notification: INotification) => notification.isRead);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\taction: \"snoozed\",\n\t\t\tlabel: \"Snoozed\",\n\t\t\trun: (notifications: INotification[]) => {\n\t\t\t\treturn notifications.filter((notification: INotification) => notification.isSnoozed);\n\t\t\t},\n\t\t},\n\t],\n\tactive: \"all\",\n};\n\nconst addPoppedInClasses = () => {\n\tdocument.getElementById(\"notifications-center-container\")?.classList.add(\"notifications-popped-in\");\n\tdocument.getElementById(\"FSBLHeader\")?.classList.add(\"notifications-popped-in\");\n};\n\nconst removePoppedInClasses = () => {\n\tdocument.getElementById(\"notifications-center-container\")?.classList.remove(\"notifications-popped-in\");\n\tdocument.getElementById(\"FSBLHeader\")?.classList.remove(\"notifications-popped-in\");\n};\n\nconst storeNotificationsCenterWindowPosition = ({ showCenter, poppedOut, position }: any) => {\n\tFSBL.Clients.StorageClient.save({\n\t\ttopic: \"finsemble.notifications\",\n\t\tkey: \"last.position\",\n\t\tvalue: {\n\t\t\tshowCenter,\n\t\t\tpoppedOut,\n\t\t\tposition,\n\t\t},\n\t});\n};\n\nconst setShowWindowForState = (centerState: any) => {\n\tif (centerState.showCenter) {\n\t\tfinsembleWindow.show({}, () => {\n\t\t\tfinsembleWindow.bringToFront();\n\t\t});\n\t}\n\n\tif (centerState.position) {\n\t\tfinsembleWindow.setBounds(centerState.position);\n\t}\n\n\t// Always on top when popped in\n\tFSBL.Clients.WindowClient.setAlwaysOnTop(!centerState.poppedOut);\n\tstoreNotificationsCenterWindowPosition(centerState);\n};\n\nconst isValidPosition = (bounds: any): boolean => {\n\treturn (\n\t\tbounds &&\n\t\ttypeof bounds.left !== \"undefined\" &&\n\t\ttypeof bounds.top !== \"undefined\" &&\n\t\ttypeof bounds.height !== \"undefined\" &&\n\t\ttypeof bounds.width !== \"undefined\"\n\t);\n};\n\nconst LAZY_LOAD_NO_MORE_PAGES = -1;\n\nexport const NotificationsCenter: React.FunctionComponent<INotificationCenterProps> = (props) => {\n\tconst params = { config: { notificationsHistory: { options: { pageSize: 10 } } } };\n\tconst { notifications, setOpaqueClassName, addNotification } = useNotifications(params);\n\tconst [notificationSubscribeMessage, notificationsPublish] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\n\n\tconst config = getNotificationConfig();\n\tconst [isInitialized, setInitialized] = useState(false);\n\tconst [isMac] = useState(getOS() === \"Mac\");\n\tconst nextPageToFetch = useRef(1);\n\n\t// Set up references for use in callbacks to FSBL functions\n\tconst showCenterRef = useRef(false);\n\tconst poppedOutRef = useRef(false);\n\tconst subscriptionMessageRef = useRef<any>({});\n\tconst applicationState = useRef(null);\n\n\tconst checkedNotifications: INotification[] = [];\n\n\tconst [searchString, setSearchString] = useState(\"\");\n\tconst [filteredNotifications, setFilteredNotifications] = useState([...notifications]);\n\tconst [viewMode, setViewMode] = useState<ViewMode>(ViewMode.CARD);\n\tconst [selectionMode, setSelectionMode] = useState<SelectionMode>(SelectionMode.NO_SELECTION);\n\tconst [selectedNotification, setSelectedNotification] = useState<INotification | null>(null);\n\tconst [muteFilters, setMuteFilters] = useState<IMuteFilter[]>([]);\n\tconst [reloadMuteFilters, setReloadMuteFilters] = useState(true);\n\n\tconst dcp: NotificationCenterControlsProps = props.controls ? props.controls : defaultControls;\n\n\tconst [drawerControlProps, setDrawerControlProps] = useState(dcp);\n\tconst notificationsContextValues: NotificationsContextType = {\n\t\tviewMode,\n\t\tsetViewMode,\n\t\tselectionMode,\n\t\tsetSelectionMode,\n\t\tdrawerControlProps,\n\t\tsetDrawerControlProps,\n\t\tselectedNotification,\n\t\tsetSelectedNotification,\n\t\tsearchString,\n\t\tsetSearchString,\n\t\tfilteredNotifications,\n\t\tcheckedNotifications,\n\t\tsetFilteredNotifications,\n\t\tmuteFilters,\n\t\tsetMuteFilters,\n\t};\n\n\tconst togglePoppedStatus = () => {\n\t\tconst publishValue = { ...notificationSubscribeMessage };\n\t\tpublishValue[\"poppedOut\"] = !notificationSubscribeMessage.poppedOut;\n\t\tpoppedOutRef.current = publishValue[\"poppedOut\"];\n\t\tnotificationsPublish(publishValue);\n\t};\n\n\tconst setFullHeight = async (monitorInfo?: any) => {\n\t\tif (!monitorInfo) {\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tfinsembleWindow.getMonitor((monitor: any) => {\n\t\t\t\t\tmonitorInfo = monitor;\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tconst { data } = await finsembleWindow.getBounds();\n\t\tconst centerWindowPosition = {\n\t\t\tleft: monitorInfo.availableRect.right - data.width,\n\t\t\ttop: monitorInfo.availableRect.top,\n\t\t\theight: monitorInfo.availableRect.height,\n\t\t\twidth: data.width,\n\t\t};\n\n\t\tsetShowWindowForState({\n\t\t\tshowCenter: notificationSubscribeMessage.showCenter,\n\t\t\tpoppedOut: poppedOutRef.current,\n\t\t\tposition: centerWindowPosition,\n\t\t});\n\n\t\tFSBL.Clients.WindowClient.setShape([]);\n\t};\n\n\tconst boundsChangeListener = (event: any) => {\n\t\tif (showCenterRef?.current && !poppedOutRef.current) {\n\t\t\t// Bounds Changed fires when Windows Taskbar + Finsemble Toolbar docking changes\n\t\t\tsetFullHeight();\n\t\t}\n\t\tconst position = {\n\t\t\ttop: event.data.top,\n\t\t\tleft: event.data.left,\n\t\t\theight: event.data.height,\n\t\t\twidth: event.data.width,\n\t\t};\n\n\t\tstoreNotificationsCenterWindowPosition({\n\t\t\tshowCenter: showCenterRef?.current ? showCenterRef.current : false,\n\t\t\tpoppedOut: poppedOutRef.current,\n\t\t\tposition,\n\t\t});\n\t};\n\n\tconst getScrollPercentage = () => {\n\t\tconst maxScroll = document.body.scrollHeight;\n\t\tconst currentScroll = window.innerHeight + window.scrollY;\n\t\treturn currentScroll / maxScroll;\n\t};\n\n\tconst lazyLoadNextPage = async () =>\n\t\tnew Promise<void>(async (resolve) => {\n\t\t\tif (nextPageToFetch.current > 0) {\n\t\t\t\tconst [options, filter] = getFetchHistoryParams(config, params);\n\t\t\t\toptions.pageNumber = nextPageToFetch.current;\n\t\t\t\tconst notificationList = await FSBL.Clients.NotificationClient.fetchHistory(options, filter);\n\t\t\t\tif (notificationList.length) {\n\t\t\t\t\tnextPageToFetch.current = nextPageToFetch.current + 1;\n\t\t\t\t\tfor (const notification of notificationList) {\n\t\t\t\t\t\taddNotification(notification);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Stop fetching after this one\n\t\t\t\t\tnextPageToFetch.current = LAZY_LOAD_NO_MORE_PAGES;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresolve();\n\t\t});\n\n\tconst toggleCenter = async (show: boolean, isTransparent: boolean, poppedOut: boolean) => {\n\t\tif (isTransparent && !isMac) {\n\t\t\tif (poppedOut) {\n\t\t\t\tif (show) {\n\t\t\t\t\tfinsembleWindow.show({}, () => {\n\t\t\t\t\t\tfinsembleWindow.bringToFront();\n\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([]);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfinsembleWindow.hide();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (show) {\n\t\t\t\t\tif (!poppedOut) {\n\t\t\t\t\t\tawait moveToToolbarMonitor();\n\t\t\t\t\t\tawait setFullHeight();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinsembleWindow.show({}, () => {\n\t\t\t\t\t\t\tfinsembleWindow.bringToFront();\n\t\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([]);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tfinsembleWindow.hide();\n\t\t\t\t\t}, 500);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (show) {\n\t\t\t\tif (!poppedOut) {\n\t\t\t\t\tawait moveToToolbarMonitor();\n\t\t\t\t\tawait setFullHeight();\n\t\t\t\t}\n\t\t\t\tfinsembleWindow.show({}, () => {\n\t\t\t\t\tfinsembleWindow.bringToFront();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfinsembleWindow.hide();\n\t\t\t}\n\t\t}\n\t};\n\n\t// When popped out we want to prevent the center to be closed when the close button is clicked (or alt +)\n\tuseEffect(() => {\n\t\tsetOpaqueClassName(!config.isTransparent);\n\n\t\tconst subscriptionId = FSBL.Clients.RouterClient.subscribe(\"Finsemble.Application.State\", (err, response) => {\n\t\t\tapplicationState.current = response.data.state;\n\t\t});\n\n\t\tconst hide = (event: any) => {\n\t\t\tconst publishValue = { ...subscriptionMessageRef.current };\n\t\t\tpublishValue[\"showCenter\"] = false;\n\t\t\tnotificationsPublish(publishValue);\n\t\t\tif (applicationState?.current !== \"closing\") {\n\t\t\t\ttry {\n\t\t\t\t\tevent.cancel();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tFSBL.Clients.Logger.system.error(\"Error cancelling the window close event\", error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst scrollHandler = () => {\n\t\t\tif (getScrollPercentage() > 0.9) {\n\t\t\t\tlazyLoadNextPage();\n\t\t\t}\n\t\t};\n\n\t\tfinsembleWindow.addEventListener(\"close-requested\", hide);\n\t\tfinsembleWindow.addEventListener(\"bounds-change-end\", boundsChangeListener);\n\t\twindow.addEventListener(\"scroll\", scrollHandler);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(subscriptionId);\n\t\t\tfinsembleWindow.removeEventListener(\"close-requested\", hide);\n\t\t\tfinsembleWindow.removeEventListener(\"bounds-change-end\", boundsChangeListener);\n\t\t\twindow.removeEventListener(\"scroll\", scrollHandler);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tconst recursiveLoad = async () => {\n\t\t\t// Cater for the case where there is no scroll bar to trigger lazy load - keep loading until scrollbar or no pages\n\t\t\tawait lazyLoadNextPage();\n\t\t\tif (getScrollPercentage() === 1 && nextPageToFetch.current != LAZY_LOAD_NO_MORE_PAGES) {\n\t\t\t\trecursiveLoad();\n\t\t\t}\n\t\t};\n\n\t\trecursiveLoad();\n\t}, [viewMode, drawerControlProps.active]);\n\n\t// Hook to set up the center state from service data on component start\n\tuseEffect(() => {\n\t\tsubscriptionMessageRef.current = notificationSubscribeMessage;\n\t\t// Hook can execute before initial pubsub response - waiting for actual values\n\t\tif (!isInitialized && typeof notificationSubscribeMessage.showCenter !== \"undefined\") {\n\t\t\tif (notificationSubscribeMessage.poppedOut) {\n\t\t\t\tremovePoppedInClasses();\n\t\t\t} else {\n\t\t\t\taddPoppedInClasses();\n\t\t\t}\n\n\t\t\tif (isValidPosition(notificationSubscribeMessage.position)) {\n\t\t\t\tsetShowWindowForState({\n\t\t\t\t\tshowCenter: notificationSubscribeMessage.showCenter,\n\t\t\t\t\tpoppedOut: notificationSubscribeMessage.poppedOut,\n\t\t\t\t\tposition: notificationSubscribeMessage.position,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Setup references\n\t\t\tshowCenterRef.current = notificationSubscribeMessage.showCenter;\n\t\t\tpoppedOutRef.current = notificationSubscribeMessage.poppedOut;\n\n\t\t\tsetInitialized(true);\n\t\t}\n\t}, [notificationSubscribeMessage]);\n\n\t// Effect to run when we pop-in or pop-out the notification center\n\tuseEffect(() => {\n\t\tif (isInitialized) {\n\t\t\tpoppedOutRef.current = notificationSubscribeMessage.poppedOut;\n\t\t\tfinsembleWindow.getMonitor(async (monitorInfo: any) => {\n\t\t\t\tif (notificationSubscribeMessage.poppedOut) {\n\t\t\t\t\tconst { data } = await finsembleWindow.getBounds({});\n\t\t\t\t\tremovePoppedInClasses();\n\n\t\t\t\t\tconst centerWindowPosition = {\n\t\t\t\t\t\tleft: data.left - 25,\n\t\t\t\t\t\ttop: data.top + 25,\n\t\t\t\t\t\theight: Math.round(monitorInfo.availableRect.height * 0.8),\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t};\n\n\t\t\t\t\tsetShowWindowForState({\n\t\t\t\t\t\tshowCenter: notificationSubscribeMessage.showCenter,\n\t\t\t\t\t\tpoppedOut: notificationSubscribeMessage.poppedOut,\n\t\t\t\t\t\tposition: centerWindowPosition,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\taddPoppedInClasses();\n\t\t\t\t\tsetFullHeight(monitorInfo);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}, [notificationSubscribeMessage.poppedOut]);\n\n\tuseEffect(() => {\n\t\tif (isInitialized) {\n\t\t\tshowCenterRef.current = notificationSubscribeMessage.showCenter;\n\t\t\ttoggleCenter(notificationSubscribeMessage.showCenter, config.isTransparent as boolean, poppedOutRef.current);\n\t\t}\n\t}, [notificationSubscribeMessage.showCenter]);\n\n\tuseEffect(() => {\n\t\tsetFilteredNotifications([...notifications]);\n\t}, [notifications]);\n\n\tuseEffect(() => {\n\t\tfunction listenMuteStateChanged(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleNotificationsMuteStateChannel: \", error);\n\t\t\t} else {\n\t\t\t\tsetReloadMuteFilters(true);\n\t\t\t}\n\t\t}\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleNotificationsMuteStateChannel\", listenMuteStateChanged);\n\t\t};\n\t}, []);\n\n\t// Sets the current active mute filters\n\tuseEffect(() => {\n\t\tasync function loadMuteFilter() {\n\t\t\treturn await FSBL.Clients.NotificationClient.getMuteFilters();\n\t\t}\n\n\t\tloadMuteFilter().then((muteFilters: IMuteFilter[]) => {\n\t\t\tsetMuteFilters(muteFilters);\n\t\t\tsetReloadMuteFilters(false);\n\t\t});\n\t}, [reloadMuteFilters]);\n\n\tconst notificationsMainView = () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<DrawerHeader poppedOutStatus={notificationSubscribeMessage.poppedOut} popOutToggle={togglePoppedStatus} />\n\t\t\t\t<DrawerControls />\n\t\t\t\t<div className=\"cards-container\">\n\t\t\t\t\t{viewMode === ViewMode.CARD ? (\n\t\t\t\t\t\t<CardView notifications={notifications} notificationCard={props.notificationCard} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ListView\n\t\t\t\t\t\t\tnotifications={notifications}\n\t\t\t\t\t\t\tnotificationHeaderRow={props.notificationHeaderRow}\n\t\t\t\t\t\t\tnotificationListRow={props.notificationListRow}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t};\n\n\tconst notificationDetailsViewComponent = () => {\n\t\treturn <NotificationDetailsView notification={selectedNotification} />;\n\t};\n\n\treturn (\n\t\t<ConditionalWrapper\n\t\t\tcondition={(config.isTransparent as boolean) && !notificationSubscribeMessage.poppedOut && !isMac}\n\t\t\twrapper={(children) => (\n\t\t\t\t<CSSTransition in={notificationSubscribeMessage.showCenter} timeout={500} classNames=\"drawer\" unmountOnExit>\n\t\t\t\t\t{children}\n\t\t\t\t</CSSTransition>\n\t\t\t)}\n\t\t>\n\t\t\t<NotificationsContext.Provider value={notificationsContextValues}>\n\t\t\t\t<Drawer classNames={notificationSubscribeMessage.poppedOut ? \"popped-out\" : \"\"}>\n\t\t\t\t\t{selectedNotification ? notificationDetailsViewComponent() : notificationsMainView()}\n\t\t\t\t</Drawer>\n\t\t\t</NotificationsContext.Provider>\n\t\t</ConditionalWrapper>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationsToasts.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/notificationsToasts/NotificationsToasts.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\r\nimport useNotifications, {\r\n\tmoveToToolbarMonitor,\r\n\tgetNotificationConfig,\r\n\tgetOS,\r\n} from \"../../../../hooks/useNotifications\";\r\nimport { usePubSub } from \"../../../../hooks/usePubSub\";\r\nimport { INotification } from \"common/notifications/definitions/INotification\";\r\nimport { NotificationCardShell } from \"../shared/NotificationCardShell\";\r\nimport { CSSTransition } from \"react-transition-group\";\r\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../../constants\";\r\nimport { INotificationToastsProps } from \"../../types\";\r\n\r\nimport \"../../../../assets/css/notificationsCenter.css\";\r\n\r\ntype ToastCardProps = {\r\n\tnotification: INotification;\r\n\tremoveFunction: Function;\r\n\tisActiveFunction: Function;\r\n\tinformationalNotificationTimeout: number | false;\r\n\tactionableTimeoutEnabled: boolean;\r\n\tnotificationCard?: React.ComponentType<any>;\r\n};\r\n\r\nconst ToastCard = (props: ToastCardProps) => {\r\n\tconst notificationRef = useRef<INotification>();\r\n\tconst { notification, informationalNotificationTimeout, removeFunction, isActiveFunction, actionableTimeoutEnabled } =\r\n\t\tprops;\r\n\tconst [slideIn, setSlideIn] = useState(isActiveFunction(notification));\r\n\tconst [showNotification] = useState(isActiveFunction(notification));\r\n\r\n\tuseEffect(() => {\r\n\t\tnotificationRef.current = notification;\r\n\t\tlet timeoutId: any;\r\n\r\n\t\tif (!notification.actions || notification.actions.length == 0 || actionableTimeoutEnabled) {\r\n\t\t\t// Is an informational notification or timeout enabled actionable notifications\r\n\t\t\tlet timeoutLength;\r\n\r\n\t\t\tif (informationalNotificationTimeout !== false) {\r\n\t\t\t\t// Convert to milliseconds\r\n\t\t\t\ttimeoutLength = informationalNotificationTimeout * 1000;\r\n\t\t\t\tif (notification.timeout && Number.isInteger(notification.timeout)) {\r\n\t\t\t\t\ttimeoutLength = notification.timeout;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (timeoutLength) {\r\n\t\t\t\ttimeoutId = setTimeout(() => {\r\n\t\t\t\t\tsetSlideIn(false);\r\n\t\t\t\t}, timeoutLength);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\tclearInterval(timeoutId);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!isActiveFunction(notificationRef.current)) {\r\n\t\t\tremoveFunction(notification);\r\n\t\t}\r\n\t\tsetSlideIn(isActiveFunction(notification));\r\n\t}, [notification]);\r\n\r\n\tconst onExited = () => {\r\n\t\tremoveFunction(notification);\r\n\t};\r\n\r\n\tconst Card = props.notificationCard ? props.notificationCard : NotificationCardShell;\r\n\r\n\treturn (\r\n\t\tshowNotification && (\r\n\t\t\t<CSSTransition in={slideIn} timeout={500} onExited={onExited} classNames=\"notifications-toast\">\r\n\t\t\t\t<div className=\"notifications-toast__offscreen\">\r\n\t\t\t\t\t<Card\r\n\t\t\t\t\t\tnotification={notification}\r\n\t\t\t\t\t\tuiContext=\"toasts\"\r\n\t\t\t\t\t\tremoveNotification={() => {\r\n\t\t\t\t\t\t\tsetSlideIn(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<div className=\"divider\">&nbsp;</div>\r\n\t\t\t\t</div>\r\n\t\t\t</CSSTransition>\r\n\t\t)\r\n\t);\r\n};\r\n\r\nexport const NotificationsToasts: React.FunctionComponent<INotificationToastsProps> = (props) => {\r\n\tconst { notifications, notificationIsActive, setOpaqueClassName, removeNotification, activeNotifications } =\r\n\t\tuseNotifications({ config: { notificationsHistory: { options: { sentAfter: \"startup\" } } } });\r\n\tconst notificationsRef = useRef<INotification[]>(notifications);\r\n\tconst [notificationSubscribeMessage] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\r\n\r\n\tconst isNotificationActive = (notification: INotification) => {\r\n\t\treturn (\r\n\t\t\tnotificationIsActive(notification) &&\r\n\t\t\t// Only treat notification as active (show it) if the center not shown or popped out\r\n\t\t\t(!notificationSubscribeMessage.showCenter || notificationSubscribeMessage.poppedOut)\r\n\t\t);\r\n\t};\r\n\r\n\tconst config = getNotificationConfig();\r\n\tconst [isMac] = useState(getOS() === \"Mac\");\r\n\r\n\tconst [informationalTimeout, setInformationalTimeout] = useState<number | false>(false);\r\n\tconst [actionableTimeoutEnabled, setActionableTimeoutEnabled] = useState<boolean>(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function listenForPreferenceChange(error: any, response: any) {\r\n\t\t\tif (error) {\r\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\r\n\t\t\t} else {\r\n\t\t\t\tconst { data } = response;\r\n\t\t\t\tif (data.notificationPreferences) {\r\n\t\t\t\t\tconst { informationalNotificationToastPeriodSeconds, toastTimeoutOnActionableNotifications } =\r\n\t\t\t\t\t\tdata.notificationPreferences;\r\n\r\n\t\t\t\t\tif (informationalNotificationToastPeriodSeconds) {\r\n\t\t\t\t\t\tsetInformationalTimeout(informationalNotificationToastPeriodSeconds);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (typeof toastTimeoutOnActionableNotifications !== \"undefined\") {\r\n\t\t\t\t\t\tsetActionableTimeoutEnabled(toastTimeoutOnActionableNotifications);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\r\n\t\treturn () => {\r\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst transparencySupported = config.isTransparent;\r\n\r\n\t\tsetOpaqueClassName(!transparencySupported);\r\n\r\n\t\tif (transparencySupported) {\r\n\t\t\tfinsembleWindow.show();\r\n\t\t}\r\n\r\n\t\tasync function getNotificationsPreferences() {\r\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\r\n\t\t}\r\n\r\n\t\tgetNotificationsPreferences().then((preferences: any) => {\r\n\t\t\tsetInformationalTimeout(preferences.informationalNotificationToastPeriodSeconds);\r\n\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tmoveToToolbarMonitor().then(() => {\r\n\t\t\tlet forceHide = false;\r\n\t\t\tif (\r\n\t\t\t\tactiveNotifications(notifications).length === 0 &&\r\n\t\t\t\tactiveNotifications(notificationsRef.current).length === 0\r\n\t\t\t) {\r\n\t\t\t\t// Bug fix: Toasts flash when inActive components (partially caused by allowing notifications to animate out)\r\n\t\t\t\tforceHide = true;\r\n\t\t\t}\r\n\r\n\t\t\tnotificationsRef.current = notifications;\r\n\t\t\tconst rect = document.getElementById(\"notifications-toasts\")?.getBoundingClientRect();\r\n\t\t\tif (notifications.length === 0 || forceHide) {\r\n\t\t\t\tif (config.isTransparent && !isMac) {\r\n\t\t\t\t\tconst roundedRect = {\r\n\t\t\t\t\t\tx: Math.round(rect?.x as number),\r\n\t\t\t\t\t\ty: Math.round(rect?.y as number),\r\n\t\t\t\t\t\twidth: 1,\r\n\t\t\t\t\t\theight: 1,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tFSBL.Clients.WindowClient.setShape([roundedRect]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfinsembleWindow.hide();\r\n\t\t\t} else {\r\n\t\t\t\tfinsembleWindow.bringToFront();\r\n\t\t\t\tif (config.isTransparent && !isMac) {\r\n\t\t\t\t\tconst roundedRect = {\r\n\t\t\t\t\t\tx: Math.round(rect?.x as number),\r\n\t\t\t\t\t\ty: Math.round(rect?.y as number),\r\n\t\t\t\t\t\twidth: Math.round(rect?.width as number),\r\n\t\t\t\t\t\theight: Math.round(rect?.height as number),\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfinsembleWindow.show({}, () => {\r\n\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([roundedRect]);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfinsembleWindow.show({}, async () => {\r\n\t\t\t\t\t\tconst { err, data } = (await FSBL.Clients.LauncherClient.getMonitorInfo({ monitor: \"mine\" })) as any;\r\n\t\t\t\t\t\tif (err) {\r\n\t\t\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst bounds = (await finsembleWindow.getBounds({})) as any;\r\n\t\t\t\t\t\tconst width = bounds.data.right - bounds.data.left;\r\n\t\t\t\t\t\tconst height = Math.round(rect?.height as number) + 6;\r\n\r\n\t\t\t\t\t\tfinsembleWindow.setBounds(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tbounds: {\r\n\t\t\t\t\t\t\t\t\ttop: data[\"availableRect\"][\"top\"],\r\n\t\t\t\t\t\t\t\t\tleft: data[\"availableRect\"][\"right\"] - width,\r\n\t\t\t\t\t\t\t\t\theight: height + 10,\r\n\t\t\t\t\t\t\t\t\twidth: width,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t(error: any) => {\r\n\t\t\t\t\t\t\t\tif (error) {\r\n\t\t\t\t\t\t\t\t\tconsole.error(error);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}, [notifications]);\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t{notifications.map((notification: INotification) => (\r\n\t\t\t\t<ToastCard\r\n\t\t\t\t\tkey={`toast-card-${notification.id}`}\r\n\t\t\t\t\tnotification={notification}\r\n\t\t\t\t\tinformationalNotificationTimeout={informationalTimeout}\r\n\t\t\t\t\tactionableTimeoutEnabled={actionableTimeoutEnabled}\r\n\t\t\t\t\tremoveFunction={removeNotification}\r\n\t\t\t\t\tisActiveFunction={isNotificationActive}\r\n\t\t\t\t\t{...props}\r\n\t\t\t\t/>\r\n\t\t\t))}\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"NotificationsToasts.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/notificationsToasts/NotificationsToasts.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport useNotifications, {\n\tmoveToToolbarMonitor,\n\tgetNotificationConfig,\n\tgetOS,\n} from \"../../../../hooks/useNotifications\";\nimport { usePubSub } from \"../../../../hooks/usePubSub\";\nimport { INotification } from \"common/notifications/definitions/INotification\";\nimport { NotificationCardShell } from \"../shared/NotificationCardShell\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { NOTIFICATIONS_PUBSUB_TOPIC } from \"../../constants\";\nimport { INotificationToastsProps } from \"../../types\";\n\nimport \"../../../../assets/css/notificationsCenter.css\";\n\ntype ToastCardProps = {\n\tnotification: INotification;\n\tremoveFunction: Function;\n\tisActiveFunction: Function;\n\tinformationalNotificationTimeout: number | false;\n\tactionableTimeoutEnabled: boolean;\n\tnotificationCard?: React.ComponentType<any>;\n};\n\nconst ToastCard = (props: ToastCardProps) => {\n\tconst notificationRef = useRef<INotification>();\n\tconst { notification, informationalNotificationTimeout, removeFunction, isActiveFunction, actionableTimeoutEnabled } =\n\t\tprops;\n\tconst [slideIn, setSlideIn] = useState(isActiveFunction(notification));\n\tconst [showNotification] = useState(isActiveFunction(notification));\n\n\tuseEffect(() => {\n\t\tnotificationRef.current = notification;\n\t\tlet timeoutId: any;\n\n\t\tif (!notification.actions || notification.actions.length == 0 || actionableTimeoutEnabled) {\n\t\t\t// Is an informational notification or timeout enabled actionable notifications\n\t\t\tlet timeoutLength;\n\n\t\t\tif (informationalNotificationTimeout !== false) {\n\t\t\t\t// Convert to milliseconds\n\t\t\t\ttimeoutLength = informationalNotificationTimeout * 1000;\n\t\t\t\tif (notification.timeout && Number.isInteger(notification.timeout)) {\n\t\t\t\t\ttimeoutLength = notification.timeout;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (timeoutLength) {\n\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\tsetSlideIn(false);\n\t\t\t\t}, timeoutLength);\n\t\t\t}\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearInterval(timeoutId);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!isActiveFunction(notificationRef.current)) {\n\t\t\tremoveFunction(notification);\n\t\t}\n\t\tsetSlideIn(isActiveFunction(notification));\n\t}, [notification]);\n\n\tconst onExited = () => {\n\t\tremoveFunction(notification);\n\t};\n\n\tconst Card = props.notificationCard ? props.notificationCard : NotificationCardShell;\n\n\treturn (\n\t\tshowNotification && (\n\t\t\t<CSSTransition in={slideIn} timeout={500} onExited={onExited} classNames=\"notifications-toast\">\n\t\t\t\t<div className=\"notifications-toast__offscreen\">\n\t\t\t\t\t<Card\n\t\t\t\t\t\tnotification={notification}\n\t\t\t\t\t\tuiContext=\"toasts\"\n\t\t\t\t\t\tremoveNotification={() => {\n\t\t\t\t\t\t\tsetSlideIn(false);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"divider\">&nbsp;</div>\n\t\t\t\t</div>\n\t\t\t</CSSTransition>\n\t\t)\n\t);\n};\n\nexport const NotificationsToasts: React.FunctionComponent<INotificationToastsProps> = (props) => {\n\tconst { notifications, notificationIsActive, setOpaqueClassName, removeNotification, activeNotifications } =\n\t\tuseNotifications({ config: { notificationsHistory: { options: { sentAfter: \"startup\" } } } });\n\tconst notificationsRef = useRef<INotification[]>(notifications);\n\tconst [notificationSubscribeMessage] = usePubSub(NOTIFICATIONS_PUBSUB_TOPIC);\n\n\tconst isNotificationActive = (notification: INotification) => {\n\t\treturn (\n\t\t\tnotificationIsActive(notification) &&\n\t\t\t// Only treat notification as active (show it) if the center not shown or popped out\n\t\t\t(!notificationSubscribeMessage.showCenter || notificationSubscribeMessage.poppedOut)\n\t\t);\n\t};\n\n\tconst config = getNotificationConfig();\n\tconst [isMac] = useState(getOS() === \"Mac\");\n\n\tconst [informationalTimeout, setInformationalTimeout] = useState<number | false>(false);\n\tconst [actionableTimeoutEnabled, setActionableTimeoutEnabled] = useState<boolean>(true);\n\n\tuseEffect(() => {\n\t\tasync function listenForPreferenceChange(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (data.notificationPreferences) {\n\t\t\t\t\tconst { informationalNotificationToastPeriodSeconds, toastTimeoutOnActionableNotifications } =\n\t\t\t\t\t\tdata.notificationPreferences;\n\n\t\t\t\t\tif (informationalNotificationToastPeriodSeconds) {\n\t\t\t\t\t\tsetInformationalTimeout(informationalNotificationToastPeriodSeconds);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof toastTimeoutOnActionableNotifications !== \"undefined\") {\n\t\t\t\t\t\tsetActionableTimeoutEnabled(toastTimeoutOnActionableNotifications);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tconst transparencySupported = config.isTransparent;\n\n\t\tsetOpaqueClassName(!transparencySupported);\n\n\t\tif (transparencySupported) {\n\t\t\tfinsembleWindow.show();\n\t\t}\n\n\t\tasync function getNotificationsPreferences() {\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\n\t\t}\n\n\t\tgetNotificationsPreferences().then((preferences: any) => {\n\t\t\tsetInformationalTimeout(preferences.informationalNotificationToastPeriodSeconds);\n\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tmoveToToolbarMonitor().then(() => {\n\t\t\tlet forceHide = false;\n\t\t\tif (\n\t\t\t\tactiveNotifications(notifications).length === 0 &&\n\t\t\t\tactiveNotifications(notificationsRef.current).length === 0\n\t\t\t) {\n\t\t\t\t// Bug fix: Toasts flash when inActive components (partially caused by allowing notifications to animate out)\n\t\t\t\tforceHide = true;\n\t\t\t}\n\n\t\t\tnotificationsRef.current = notifications;\n\t\t\tconst rect = document.getElementById(\"notifications-toasts\")?.getBoundingClientRect();\n\t\t\tif (notifications.length === 0 || forceHide) {\n\t\t\t\tif (config.isTransparent && !isMac) {\n\t\t\t\t\tconst roundedRect = {\n\t\t\t\t\t\tx: Math.round(rect?.x as number),\n\t\t\t\t\t\ty: Math.round(rect?.y as number),\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t};\n\n\t\t\t\t\tFSBL.Clients.WindowClient.setShape([roundedRect]);\n\t\t\t\t}\n\n\t\t\t\tfinsembleWindow.hide();\n\t\t\t} else {\n\t\t\t\tfinsembleWindow.bringToFront();\n\t\t\t\tif (config.isTransparent && !isMac) {\n\t\t\t\t\tconst roundedRect = {\n\t\t\t\t\t\tx: Math.round(rect?.x as number),\n\t\t\t\t\t\ty: Math.round(rect?.y as number),\n\t\t\t\t\t\twidth: Math.round(rect?.width as number),\n\t\t\t\t\t\theight: Math.round(rect?.height as number),\n\t\t\t\t\t};\n\n\t\t\t\t\tfinsembleWindow.show({}, () => {\n\t\t\t\t\t\tFSBL.Clients.WindowClient.setShape([roundedRect]);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfinsembleWindow.show({}, async () => {\n\t\t\t\t\t\tconst { err, data } = (await FSBL.Clients.LauncherClient.getMonitorInfo({ monitor: \"mine\" })) as any;\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst bounds = (await finsembleWindow.getBounds({})) as any;\n\t\t\t\t\t\tconst width = bounds.data.right - bounds.data.left;\n\t\t\t\t\t\tconst height = Math.round(rect?.height as number) + 6;\n\n\t\t\t\t\t\tfinsembleWindow.setBounds(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbounds: {\n\t\t\t\t\t\t\t\t\ttop: data[\"availableRect\"][\"top\"],\n\t\t\t\t\t\t\t\t\tleft: data[\"availableRect\"][\"right\"] - width,\n\t\t\t\t\t\t\t\t\theight: height + 10,\n\t\t\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t(error: any) => {\n\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\tconsole.error(error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}, [notifications]);\n\n\treturn (\n\t\t<div>\n\t\t\t{notifications.map((notification: INotification) => (\n\t\t\t\t<ToastCard\n\t\t\t\t\tkey={`toast-card-${notification.id}`}\n\t\t\t\t\tnotification={notification}\n\t\t\t\t\tinformationalNotificationTimeout={informationalTimeout}\n\t\t\t\t\tactionableTimeoutEnabled={actionableTimeoutEnabled}\n\t\t\t\t\tremoveFunction={removeNotification}\n\t\t\t\t\tisActiveFunction={isNotificationActive}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CheckButton.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/shared/CheckButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,CAAC,MAAM,WAAW,GAEnB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IACzB,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC9D,MAAM,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAGlD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,oBAAoB,EAAE;YACzB,YAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC/D;IACF,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,SAAS,EAAE;YACf,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC;aAAM;YACN,IAAI,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACjB,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACtC;SACD;QACD,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAC,sBAAsB,EAAC,OAAO,EAAE,iBAAiB;QAC/D,2BAAG,SAAS,EAAE,mCAAmC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,GAAI,CAC5E,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import React, { useState, useContext, useEffect } from \"react\";\r\n\r\nimport { INotification } from \"common/notifications/definitions/INotification\";\r\nimport { NotificationsContext } from \"../../notificationsContext\";\r\n\r\nexport const CheckButton: React.FunctionComponent<{\r\n\tnotification: INotification;\r\n}> = ({ notification }) => {\r\n\tconst notificationsContext = useContext(NotificationsContext);\r\n\tconst { checkedNotifications } = notificationsContext;\r\n\tconst [isChecked, setIsChecked] = useState(false);\r\n\r\n\t// update isChecked value on action\r\n\tuseEffect(() => {\r\n\t\tif (checkedNotifications) {\r\n\t\t\tsetIsChecked(checkedNotifications.indexOf(notification) != -1);\r\n\t\t}\r\n\t}, [checkedNotifications]);\r\n\r\n\tconst checkNotification = () => {\r\n\t\tif (!isChecked) {\r\n\t\t\tcheckedNotifications.push(notification);\r\n\t\t} else {\r\n\t\t\tvar index = checkedNotifications.indexOf(notification);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tcheckedNotifications.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetIsChecked(!isChecked);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div className=\"check_icon_container\" onClick={checkNotification}>\r\n\t\t\t<i className={`ff-check-mark default-img large ${isChecked ? \"checked\" : \"\"}`} />\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default CheckButton;\r\n"]}
1
+ {"version":3,"file":"CheckButton.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/shared/CheckButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,CAAC,MAAM,WAAW,GAEnB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IACzB,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAC9D,MAAM,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAGlD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,oBAAoB,EAAE;YACzB,YAAY,CAAC,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC/D;IACF,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,SAAS,EAAE;YACf,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC;aAAM;YACN,IAAI,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACjB,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACtC;SACD;QACD,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAC,sBAAsB,EAAC,OAAO,EAAE,iBAAiB;QAC/D,2BAAG,SAAS,EAAE,mCAAmC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,GAAI,CAC5E,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import React, { useState, useContext, useEffect } from \"react\";\n\nimport { INotification } from \"common/notifications/definitions/INotification\";\nimport { NotificationsContext } from \"../../notificationsContext\";\n\nexport const CheckButton: React.FunctionComponent<{\n\tnotification: INotification;\n}> = ({ notification }) => {\n\tconst notificationsContext = useContext(NotificationsContext);\n\tconst { checkedNotifications } = notificationsContext;\n\tconst [isChecked, setIsChecked] = useState(false);\n\n\t// update isChecked value on action\n\tuseEffect(() => {\n\t\tif (checkedNotifications) {\n\t\t\tsetIsChecked(checkedNotifications.indexOf(notification) != -1);\n\t\t}\n\t}, [checkedNotifications]);\n\n\tconst checkNotification = () => {\n\t\tif (!isChecked) {\n\t\t\tcheckedNotifications.push(notification);\n\t\t} else {\n\t\t\tvar index = checkedNotifications.indexOf(notification);\n\t\t\tif (index !== -1) {\n\t\t\t\tcheckedNotifications.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\tsetIsChecked(!isChecked);\n\t};\n\n\treturn (\n\t\t<div className=\"check_icon_container\" onClick={checkNotification}>\n\t\t\t<i className={`ff-check-mark default-img large ${isChecked ? \"checked\" : \"\"}`} />\n\t\t</div>\n\t);\n};\n\nexport default CheckButton;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/shared/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,UAAU,GAAuD,CAAC,EACvE,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,EACvB,OAAO,EACP,QAAQ,GAAG,cAAc,EACzB,UAAU,EACV,QAAQ,GACmB,EAAE,EAAE;IAC/B,OAAO,CACN,6BACC,SAAS,EAAE,uBAAuB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAChE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;QAE7B,2BAAG,SAAS,EAAE,QAAQ,GAAI;QACzB,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import React from \"react\";\r\n\r\nexport interface IFinsembleIconButtonProps {\r\n\ttooltip?: string;\r\n\tclickHandler?: Function;\r\n\ticonName?: string;\r\n\tclassNames?: string;\r\n\tchildren?: React.ReactNode;\r\n}\r\n\r\nconst IconButton: React.FunctionComponent<IFinsembleIconButtonProps> = ({\r\n\tclickHandler = () => {},\r\n\ttooltip,\r\n\ticonName = \"ff-finsemble\",\r\n\tclassNames,\r\n\tchildren,\r\n}: IFinsembleIconButtonProps) => {\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={`finsemble-icon__btn ${classNames ? classNames : \"\"}`}\r\n\t\t\ttitle={tooltip ? tooltip : \"\"}\r\n\t\t\tonClick={() => clickHandler()}\r\n\t\t>\r\n\t\t\t<i className={iconName} />\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport default IconButton;\r\n"]}
1
+ {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/shared/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,UAAU,GAAuD,CAAC,EACvE,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,EACvB,OAAO,EACP,QAAQ,GAAG,cAAc,EACzB,UAAU,EACV,QAAQ,GACmB,EAAE,EAAE;IAC/B,OAAO,CACN,6BACC,SAAS,EAAE,uBAAuB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAChE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;QAE7B,2BAAG,SAAS,EAAE,QAAQ,GAAI;QACzB,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import React from \"react\";\n\nexport interface IFinsembleIconButtonProps {\n\ttooltip?: string;\n\tclickHandler?: Function;\n\ticonName?: string;\n\tclassNames?: string;\n\tchildren?: React.ReactNode;\n}\n\nconst IconButton: React.FunctionComponent<IFinsembleIconButtonProps> = ({\n\tclickHandler = () => {},\n\ttooltip,\n\ticonName = \"ff-finsemble\",\n\tclassNames,\n\tchildren,\n}: IFinsembleIconButtonProps) => {\n\treturn (\n\t\t<div\n\t\t\tclassName={`finsemble-icon__btn ${classNames ? classNames : \"\"}`}\n\t\t\ttitle={tooltip ? tooltip : \"\"}\n\t\t\tonClick={() => clickHandler()}\n\t\t>\n\t\t\t<i className={iconName} />\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport default IconButton;\n"]}
@@ -71,7 +71,7 @@ export const NotificationCardShell = ({ notification, uiContext, removeNotificat
71
71
  clearTimeout(isRenotificationTimerId);
72
72
  };
73
73
  }, [newNotificationHaloPeriodSeconds, notification]);
74
- return (React.createElement("div", { className: `notification-card ${isRead ? "read" : ""} ${isNew || wokeFromSnooze ? "new" : ""}
74
+ return (React.createElement("div", { className: `notification-card ${isRead ? "read" : ""} ${isNew || wokeFromSnooze ? "new" : ""}
75
75
  ${notification.cssClassName ? notification.cssClassName : ""}` }, children ? (children) : (React.createElement(React.Fragment, null,
76
76
  React.createElement(NotificationCardHeaderShell, { notification: notification, removeNotification: removeNotification, uiContext: uiContext }),
77
77
  React.createElement(NotificationCardBodyShell, { notification: notification })))));
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationCardShell.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/shared/NotificationCardShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\r\nimport { parseISO, differenceInMilliseconds, addSeconds } from \"date-fns\";\r\n\r\n// Types\r\nimport IPerformedAction from \"common/notifications/definitions/IPerformedAction\";\r\nimport { INotification } from \"common/notifications/definitions/INotification\";\r\n// Components\r\n\r\n// Utils\r\nimport { isNewNotification, isReNotification, getMostRecentAction } from \"../../utils\";\r\nimport { NotificationCardHeaderShell } from \"./notificationCard/NotificationCardHeaderShell\";\r\nimport { NotificationCardBodyShell } from \"./notificationCard/NotificationCardBodyShell\";\r\n\r\nexport type NotificationCardPropType = {\r\n\t/**\r\n\t * The Notification to be displayed\r\n\t */\r\n\tnotification: INotification;\r\n\r\n\t/**\r\n\t * Which UI context the Card is being used in\r\n\t */\r\n\tuiContext: \"toasts\" | \"center\";\r\n\r\n\t/**\r\n\t * The internal function that will be called on toasts when dismissed or marked as read\r\n\t */\r\n\tremoveNotification: Function;\r\n};\r\n\r\nexport const NotificationCardShell: React.FunctionComponent<NotificationCardPropType> = ({\r\n\tnotification,\r\n\tuiContext,\r\n\tremoveNotification,\r\n\tchildren,\r\n}) => {\r\n\tconst { isRead } = notification;\r\n\r\n\tconst [newNotificationHaloPeriodSeconds, setNotificationHaloPeriodSeconds] = useState(0);\r\n\r\n\tconst [isNew, setIsNew] = useState(isNewNotification(notification, newNotificationHaloPeriodSeconds));\r\n\tconst [wokeFromSnooze, setWokeFromSnooze] = useState(\r\n\t\tisReNotification(notification, newNotificationHaloPeriodSeconds)\r\n\t);\r\n\r\n\t// Sets the current default preference\r\n\tuseEffect(() => {\r\n\t\tasync function getNotificationsPreferences() {\r\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\r\n\t\t}\r\n\r\n\t\tgetNotificationsPreferences().then((preferences: any) => {\r\n\t\t\tsetNotificationHaloPeriodSeconds(preferences.newNotificationHaloPeriodSeconds);\r\n\t\t\tsetIsNew(isNewNotification(notification, preferences.newNotificationHaloPeriodSeconds));\r\n\t\t});\r\n\t}, []);\r\n\r\n\t// Listens for preferences change\r\n\tuseEffect(() => {\r\n\t\tasync function listenForPreferenceChange(error: any, response: any) {\r\n\t\t\tif (error) {\r\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\r\n\t\t\t} else {\r\n\t\t\t\tconst { data } = response;\r\n\t\t\t\tif (\r\n\t\t\t\t\tdata.notificationPreferences &&\r\n\t\t\t\t\tdata.notificationPreferences.hasOwnProperty(\"newNotificationHaloPeriodSeconds\")\r\n\t\t\t\t) {\r\n\t\t\t\t\tsetNotificationHaloPeriodSeconds(data.notificationPreferences.newNotificationHaloPeriodSeconds);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\r\n\t\treturn () => {\r\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet isNewTimerId: any;\r\n\t\tif (isNew) {\r\n\t\t\tif (notification.isRead) {\r\n\t\t\t\tsetIsNew(false);\r\n\t\t\t\tclearTimeout(isNewTimerId);\r\n\t\t\t} else {\r\n\t\t\t\tisNewTimerId = setTimeout(() => {\r\n\t\t\t\t\tsetIsNew(false);\r\n\t\t\t\t}, differenceInMilliseconds(addSeconds(parseISO(notification.issuedAt), newNotificationHaloPeriodSeconds), Date.now()));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn () => {\r\n\t\t\tclearTimeout(isNewTimerId);\r\n\t\t};\r\n\t}, [isNew, notification]);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet isRenotificationTimerId: any;\r\n\t\tif (isReNotification(notification, newNotificationHaloPeriodSeconds)) {\r\n\t\t\tconst mostRecentAction: IPerformedAction | null = getMostRecentAction(notification);\r\n\t\t\tif (mostRecentAction) {\r\n\t\t\t\tsetWokeFromSnooze(true);\r\n\t\t\t\tisRenotificationTimerId = setTimeout(() => {\r\n\t\t\t\t\tsetWokeFromSnooze(false);\r\n\t\t\t\t}, differenceInMilliseconds(addSeconds(parseISO(mostRecentAction.datePerformed), newNotificationHaloPeriodSeconds), Date.now()));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetWokeFromSnooze(false);\r\n\t\t\tclearTimeout(isRenotificationTimerId);\r\n\t\t}\r\n\t\treturn () => {\r\n\t\t\tclearTimeout(isRenotificationTimerId);\r\n\t\t};\r\n\t}, [newNotificationHaloPeriodSeconds, notification]);\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={`notification-card ${isRead ? \"read\" : \"\"} ${isNew || wokeFromSnooze ? \"new\" : \"\"} \r\n\t\t\t${notification.cssClassName ? notification.cssClassName : \"\"}`}\r\n\t\t>\r\n\t\t\t{children ? (\r\n\t\t\t\tchildren\r\n\t\t\t) : (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<NotificationCardHeaderShell\r\n\t\t\t\t\t\tnotification={notification}\r\n\t\t\t\t\t\tremoveNotification={removeNotification}\r\n\t\t\t\t\t\tuiContext={uiContext}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<NotificationCardBodyShell notification={notification} />\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"NotificationCardShell.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/shared/NotificationCardShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { parseISO, differenceInMilliseconds, addSeconds } from \"date-fns\";\n\n// Types\nimport IPerformedAction from \"common/notifications/definitions/IPerformedAction\";\nimport { INotification } from \"common/notifications/definitions/INotification\";\n// Components\n\n// Utils\nimport { isNewNotification, isReNotification, getMostRecentAction } from \"../../utils\";\nimport { NotificationCardHeaderShell } from \"./notificationCard/NotificationCardHeaderShell\";\nimport { NotificationCardBodyShell } from \"./notificationCard/NotificationCardBodyShell\";\n\nexport type NotificationCardPropType = {\n\t/**\n\t * The Notification to be displayed\n\t */\n\tnotification: INotification;\n\n\t/**\n\t * Which UI context the Card is being used in\n\t */\n\tuiContext: \"toasts\" | \"center\";\n\n\t/**\n\t * The internal function that will be called on toasts when dismissed or marked as read\n\t */\n\tremoveNotification: Function;\n};\n\nexport const NotificationCardShell: React.FunctionComponent<NotificationCardPropType> = ({\n\tnotification,\n\tuiContext,\n\tremoveNotification,\n\tchildren,\n}) => {\n\tconst { isRead } = notification;\n\n\tconst [newNotificationHaloPeriodSeconds, setNotificationHaloPeriodSeconds] = useState(0);\n\n\tconst [isNew, setIsNew] = useState(isNewNotification(notification, newNotificationHaloPeriodSeconds));\n\tconst [wokeFromSnooze, setWokeFromSnooze] = useState(\n\t\tisReNotification(notification, newNotificationHaloPeriodSeconds)\n\t);\n\n\t// Sets the current default preference\n\tuseEffect(() => {\n\t\tasync function getNotificationsPreferences() {\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\n\t\t}\n\n\t\tgetNotificationsPreferences().then((preferences: any) => {\n\t\t\tsetNotificationHaloPeriodSeconds(preferences.newNotificationHaloPeriodSeconds);\n\t\t\tsetIsNew(isNewNotification(notification, preferences.newNotificationHaloPeriodSeconds));\n\t\t});\n\t}, []);\n\n\t// Listens for preferences change\n\tuseEffect(() => {\n\t\tasync function listenForPreferenceChange(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (\n\t\t\t\t\tdata.notificationPreferences &&\n\t\t\t\t\tdata.notificationPreferences.hasOwnProperty(\"newNotificationHaloPeriodSeconds\")\n\t\t\t\t) {\n\t\t\t\t\tsetNotificationHaloPeriodSeconds(data.notificationPreferences.newNotificationHaloPeriodSeconds);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", listenForPreferenceChange);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tlet isNewTimerId: any;\n\t\tif (isNew) {\n\t\t\tif (notification.isRead) {\n\t\t\t\tsetIsNew(false);\n\t\t\t\tclearTimeout(isNewTimerId);\n\t\t\t} else {\n\t\t\t\tisNewTimerId = setTimeout(() => {\n\t\t\t\t\tsetIsNew(false);\n\t\t\t\t}, differenceInMilliseconds(addSeconds(parseISO(notification.issuedAt), newNotificationHaloPeriodSeconds), Date.now()));\n\t\t\t}\n\t\t}\n\t\treturn () => {\n\t\t\tclearTimeout(isNewTimerId);\n\t\t};\n\t}, [isNew, notification]);\n\n\tuseEffect(() => {\n\t\tlet isRenotificationTimerId: any;\n\t\tif (isReNotification(notification, newNotificationHaloPeriodSeconds)) {\n\t\t\tconst mostRecentAction: IPerformedAction | null = getMostRecentAction(notification);\n\t\t\tif (mostRecentAction) {\n\t\t\t\tsetWokeFromSnooze(true);\n\t\t\t\tisRenotificationTimerId = setTimeout(() => {\n\t\t\t\t\tsetWokeFromSnooze(false);\n\t\t\t\t}, differenceInMilliseconds(addSeconds(parseISO(mostRecentAction.datePerformed), newNotificationHaloPeriodSeconds), Date.now()));\n\t\t\t}\n\t\t} else {\n\t\t\tsetWokeFromSnooze(false);\n\t\t\tclearTimeout(isRenotificationTimerId);\n\t\t}\n\t\treturn () => {\n\t\t\tclearTimeout(isRenotificationTimerId);\n\t\t};\n\t}, [newNotificationHaloPeriodSeconds, notification]);\n\treturn (\n\t\t<div\n\t\t\tclassName={`notification-card ${isRead ? \"read\" : \"\"} ${isNew || wokeFromSnooze ? \"new\" : \"\"} \n\t\t\t${notification.cssClassName ? notification.cssClassName : \"\"}`}\n\t\t>\n\t\t\t{children ? (\n\t\t\t\tchildren\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<NotificationCardHeaderShell\n\t\t\t\t\t\tnotification={notification}\n\t\t\t\t\t\tremoveNotification={removeNotification}\n\t\t\t\t\t\tuiContext={uiContext}\n\t\t\t\t\t/>\n\t\t\t\t\t<NotificationCardBodyShell notification={notification} />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n"]}