@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":"ProcessMonitor.js","sourceRoot":"","sources":["../../../src/components/processMonitor/ProcessMonitor.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport { Store, Actions } from \"./stores/ProcessMonitorStore\";\r\nimport ListHeader from \"./components/ListHeader\";\r\nimport ProcessStatistics from \"./components/ProcessStatistics\";\r\nimport ChildWindows from \"./components/ChildWindows\";\r\nimport { EMPTY_TOTALS, SIMPLE_MODE_STATISTICS, ADVANCED_MODE_STATISTICS } from \"./constants.js\";\r\nimport { statReducer, round, bytesToSize } from \"./helpers.js\";\r\nimport \"../../assets/css/processMonitor.css\";\r\nclass ProcessMonitorBase extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tprocessList: [],\r\n\t\t\tviewMode: \"simple\",\r\n\t\t};\r\n\t\tthis.bindCorrectContext();\r\n\t}\r\n\r\n\tbindCorrectContext() {\r\n\t\tthis.onProcessListChanged = this.onProcessListChanged.bind(this);\r\n\t\tthis.onViewModeChanged = this.onViewModeChanged.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when we go from simple to advanced mode, or the opposite.\r\n\t * @param {} err\r\n\t * @param {*} response\r\n\t */\r\n\tonViewModeChanged(err, response) {\r\n\t\tlet { value } = response;\r\n\t\tthis.setState({\r\n\t\t\tviewMode: value,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked at minimum, once per second. This listener handles updates that we receive from the system.\r\n\t * @param {*} err\r\n\t * @param {*} response\r\n\t */\r\n\tonProcessListChanged(err, response) {\r\n\t\tlet { value } = response;\r\n\t\tthis.setState({\r\n\t\t\tprocessList: value,\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tActions.initialize(() => {\r\n\t\t\tStore.addListener({ field: \"processList\" }, this.onProcessListChanged);\r\n\t\t\tStore.addListener({ field: \"viewMode\" }, this.onViewModeChanged);\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tStore.removeListener({ field: \"processList\" }, this.onProcessListChanged);\r\n\t\tStore.removeListener({ field: \"viewMode\" }, this.onViewModeChanged);\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (!Store) return null;\r\n\t\t// simple mode: CPU, memory\r\n\t\t// Advanced mode: add more.\r\n\t\t// Use helpers.bytesToSize.\r\n\t\t// Array of process components.\r\n\t\t// statReducer is an array.reduce function that will sum all of the CPU/memory usage across the app.\r\n\t\tlet totals = this.state.processList.length ? this.state.processList.reduce(statReducer) : EMPTY_TOTALS;\r\n\t\treturn (\r\n\t\t\t<div>\r\n\t\t\t\t<div className=\"process-list-wrapper\">\r\n\t\t\t\t\t<ListHeader fields={this.state.viewMode === \"simple\" ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS} />\r\n\t\t\t\t\t<div className=\"process-list\">\r\n\t\t\t\t\t\t{/* Filter will remove the hidden processes. Afterwards, map will render the remaining processes in turn. */}\r\n\t\t\t\t\t\t{this.state.processList\r\n\t\t\t\t\t\t\t.filter((proc) => proc.visible)\r\n\t\t\t\t\t\t\t.map((proc, i) => (\r\n\t\t\t\t\t\t\t\t<div key={i} className=\"process\">\r\n\t\t\t\t\t\t\t\t\t{/* Process statistics is the meat of this component. It's the statistics and the child windows. */}\r\n\t\t\t\t\t\t\t\t\t<ProcessStatistics\r\n\t\t\t\t\t\t\t\t\t\tmode={this.state.viewMode}\r\n\t\t\t\t\t\t\t\t\t\tfields={this.state.viewMode === \"simple\" ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS}\r\n\t\t\t\t\t\t\t\t\t\tstats={proc.statistics}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t<ChildWindows viewMode={this.state.viewMode} childWindows={proc.childWindows} />\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div className=\"bottom-section\">\r\n\t\t\t\t\t<div className=\"summary-statistics-wrapper\">\r\n\t\t\t\t\t\t<div className=\"summary-statistics-header\">Finsemble Total Usage</div>\r\n\t\t\t\t\t\t<div className=\"summary-statistics\">\r\n\t\t\t\t\t\t\t{typeof totals.statistics.cpuUsage !== \"undefined\" && (\r\n\t\t\t\t\t\t\t\t<div className=\"summary-statistic\">\r\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-label\">CPU</div>\r\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-number\">{`${round(totals.statistics.cpuUsage, 2)}%`}</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{typeof totals.statistics.workingSetSize !== \"undefined\" && (\r\n\t\t\t\t\t\t\t\t<div className=\"summary-statistic\">\r\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-label\">Memory</div>\r\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-number\">{bytesToSize(totals.statistics.workingSetSize)}</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div className=\"advanced-button-wrapper\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclassName=\"fsbl-button advanced-button\"\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tActions.toggleViewMode();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{this.state.viewMode === \"advanced\" ? \"Simple\" : \"Advanced\"}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * The window that shows performance data for applications running in Finsemble, such as CPU and memory usage.\r\n */\r\nexport const ProcessMonitor = () => <ProcessMonitorBase />;\r\n"]}
1
+ {"version":3,"file":"ProcessMonitor.js","sourceRoot":"","sources":["../../../src/components/processMonitor/ProcessMonitor.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { Store, Actions } from \"./stores/ProcessMonitorStore\";\nimport ListHeader from \"./components/ListHeader\";\nimport ProcessStatistics from \"./components/ProcessStatistics\";\nimport ChildWindows from \"./components/ChildWindows\";\nimport { EMPTY_TOTALS, SIMPLE_MODE_STATISTICS, ADVANCED_MODE_STATISTICS } from \"./constants.js\";\nimport { statReducer, round, bytesToSize } from \"./helpers.js\";\nimport \"../../assets/css/processMonitor.css\";\nclass ProcessMonitorBase extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tprocessList: [],\n\t\t\tviewMode: \"simple\",\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.onProcessListChanged = this.onProcessListChanged.bind(this);\n\t\tthis.onViewModeChanged = this.onViewModeChanged.bind(this);\n\t}\n\n\t/**\n\t * Handler for when we go from simple to advanced mode, or the opposite.\n\t * @param {} err\n\t * @param {*} response\n\t */\n\tonViewModeChanged(err, response) {\n\t\tlet { value } = response;\n\t\tthis.setState({\n\t\t\tviewMode: value,\n\t\t});\n\t}\n\n\t/**\n\t * Invoked at minimum, once per second. This listener handles updates that we receive from the system.\n\t * @param {*} err\n\t * @param {*} response\n\t */\n\tonProcessListChanged(err, response) {\n\t\tlet { value } = response;\n\t\tthis.setState({\n\t\t\tprocessList: value,\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tActions.initialize(() => {\n\t\t\tStore.addListener({ field: \"processList\" }, this.onProcessListChanged);\n\t\t\tStore.addListener({ field: \"viewMode\" }, this.onViewModeChanged);\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tStore.removeListener({ field: \"processList\" }, this.onProcessListChanged);\n\t\tStore.removeListener({ field: \"viewMode\" }, this.onViewModeChanged);\n\t}\n\n\trender() {\n\t\tif (!Store) return null;\n\t\t// simple mode: CPU, memory\n\t\t// Advanced mode: add more.\n\t\t// Use helpers.bytesToSize.\n\t\t// Array of process components.\n\t\t// statReducer is an array.reduce function that will sum all of the CPU/memory usage across the app.\n\t\tlet totals = this.state.processList.length ? this.state.processList.reduce(statReducer) : EMPTY_TOTALS;\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"process-list-wrapper\">\n\t\t\t\t\t<ListHeader fields={this.state.viewMode === \"simple\" ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS} />\n\t\t\t\t\t<div className=\"process-list\">\n\t\t\t\t\t\t{/* Filter will remove the hidden processes. Afterwards, map will render the remaining processes in turn. */}\n\t\t\t\t\t\t{this.state.processList\n\t\t\t\t\t\t\t.filter((proc) => proc.visible)\n\t\t\t\t\t\t\t.map((proc, i) => (\n\t\t\t\t\t\t\t\t<div key={i} className=\"process\">\n\t\t\t\t\t\t\t\t\t{/* Process statistics is the meat of this component. It's the statistics and the child windows. */}\n\t\t\t\t\t\t\t\t\t<ProcessStatistics\n\t\t\t\t\t\t\t\t\t\tmode={this.state.viewMode}\n\t\t\t\t\t\t\t\t\t\tfields={this.state.viewMode === \"simple\" ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS}\n\t\t\t\t\t\t\t\t\t\tstats={proc.statistics}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<ChildWindows viewMode={this.state.viewMode} childWindows={proc.childWindows} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"bottom-section\">\n\t\t\t\t\t<div className=\"summary-statistics-wrapper\">\n\t\t\t\t\t\t<div className=\"summary-statistics-header\">Finsemble Total Usage</div>\n\t\t\t\t\t\t<div className=\"summary-statistics\">\n\t\t\t\t\t\t\t{typeof totals.statistics.cpuUsage !== \"undefined\" && (\n\t\t\t\t\t\t\t\t<div className=\"summary-statistic\">\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-label\">CPU</div>\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-number\">{`${round(totals.statistics.cpuUsage, 2)}%`}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{typeof totals.statistics.workingSetSize !== \"undefined\" && (\n\t\t\t\t\t\t\t\t<div className=\"summary-statistic\">\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-label\">Memory</div>\n\t\t\t\t\t\t\t\t\t<div className=\"summary-statistic-number\">{bytesToSize(totals.statistics.workingSetSize)}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"advanced-button-wrapper\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"fsbl-button advanced-button\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tActions.toggleViewMode();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this.state.viewMode === \"advanced\" ? \"Simple\" : \"Advanced\"}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n/**\n * The window that shows performance data for applications running in Finsemble, such as CPU and memory usage.\n */\nexport const ProcessMonitor = () => <ProcessMonitorBase />;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChildWindow.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ChildWindow.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAIxD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAS;IACvD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QAEL,IAAI,cAAc,GACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAC/B,CAAC,CAAC,QAAQ,CAAC,SAAS;YACpB,CAAC,CAAC,GAAG,EAAE;gBACL,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC;QACN,IAAI,kBAAkB,GAAG,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/D,OAAO,CACN,6BAAK,SAAS,EAAE,kBAAkB;YACjC,6BAAK,SAAS,EAAC,sBAAsB,IACnC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAClC,2BACC,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,GAAG,EAAE;oBACb,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,CAAC,GACG,CACL,CAAC,CAAC,CAAC,IAAI,CACH;YACN,6BAAK,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,cAAc,IACxD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CACd,CACD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport { Actions } from \"../stores/ProcessMonitorStore\";\r\n/**\r\n * This file is the react component for an individual window beneath a process. It allows the user to close the window.\r\n */\r\nexport default class ChildWindow extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\t//If we're in simple mode, onClick does nothing. In advanced mode, we'll identify the window by making it flash.\r\n\t\tlet cwClickHandler =\r\n\t\t\tthis.props.viewMode === \"simple\"\r\n\t\t\t\t? Function.prototype\r\n\t\t\t\t: () => {\r\n\t\t\t\t\t\tActions.identifyWindow(this.props.cw);\r\n\t\t\t\t };\r\n\t\tlet childWindowClasses = `child-window ${this.props.viewMode}`;\r\n\t\treturn (\r\n\t\t\t<div className={childWindowClasses}>\r\n\t\t\t\t<div className=\"child-window-actions\">\r\n\t\t\t\t\t{this.props.cw.type === \"window\" ? (\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\tclassName=\"close-window ff-close\"\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tActions.closeWindow(this.props.cw);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t></i>\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div className=\"child-window-name\" onClick={cwClickHandler}>\r\n\t\t\t\t\t{this.props.cw.name}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"ChildWindow.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ChildWindow.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAIxD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAS;IACvD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QAEL,IAAI,cAAc,GACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAC/B,CAAC,CAAC,QAAQ,CAAC,SAAS;YACpB,CAAC,CAAC,GAAG,EAAE;gBACL,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC;QACN,IAAI,kBAAkB,GAAG,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/D,OAAO,CACN,6BAAK,SAAS,EAAE,kBAAkB;YACjC,6BAAK,SAAS,EAAC,sBAAsB,IACnC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAClC,2BACC,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,GAAG,EAAE;oBACb,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,CAAC,GACG,CACL,CAAC,CAAC,CAAC,IAAI,CACH;YACN,6BAAK,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,cAAc,IACxD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CACd,CACD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport { Actions } from \"../stores/ProcessMonitorStore\";\n/**\n * This file is the react component for an individual window beneath a process. It allows the user to close the window.\n */\nexport default class ChildWindow extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t}\n\n\trender() {\n\t\t//If we're in simple mode, onClick does nothing. In advanced mode, we'll identify the window by making it flash.\n\t\tlet cwClickHandler =\n\t\t\tthis.props.viewMode === \"simple\"\n\t\t\t\t? Function.prototype\n\t\t\t\t: () => {\n\t\t\t\t\t\tActions.identifyWindow(this.props.cw);\n\t\t\t\t };\n\t\tlet childWindowClasses = `child-window ${this.props.viewMode}`;\n\t\treturn (\n\t\t\t<div className={childWindowClasses}>\n\t\t\t\t<div className=\"child-window-actions\">\n\t\t\t\t\t{this.props.cw.type === \"window\" ? (\n\t\t\t\t\t\t<i\n\t\t\t\t\t\t\tclassName=\"close-window ff-close\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tActions.closeWindow(this.props.cw);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t></i>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"child-window-name\" onClick={cwClickHandler}>\n\t\t\t\t\t{this.props.cw.name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChildWindows.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ChildWindows.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAS;IACxD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACL,OAAO,CACN,iCACE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CACvC,oBAAC,WAAW,IAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAI,CAC9D,CAAC,CACG,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport ChildWindow from \"./ChildWindow\";\r\n/** This component could _probably_ be removed. It's just an array of child windows. */\r\nexport default class ChildWindows extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div>\r\n\t\t\t\t{this.props.childWindows.map((cw, i) => (\r\n\t\t\t\t\t<ChildWindow key={i} viewMode={this.props.viewMode} cw={cw} />\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"ChildWindows.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ChildWindows.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAS;IACxD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACL,OAAO,CACN,iCACE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CACvC,oBAAC,WAAW,IAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAI,CAC9D,CAAC,CACG,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport ChildWindow from \"./ChildWindow\";\n/** This component could _probably_ be removed. It's just an array of child windows. */\nexport default class ChildWindows extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t{this.props.childWindows.map((cw, i) => (\n\t\t\t\t\t<ChildWindow key={i} viewMode={this.props.viewMode} cw={cw} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ListHeader.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ListHeader.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAM/D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS;IACtD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACvC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAGD,aAAa,CAAC,GAAG,EAAE,QAAQ;QAC1B,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,KAAK;SACX,CAAC,CAAC;IACJ,CAAC;IAED,yBAAyB;QACxB,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED,oBAAoB;QACnB,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM;QAEL,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAE3B,6BACC,SAAS,EAAC,8CAA8C,EACxD,OAAO,EAAE,GAAG,EAAE;oBACb,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;;gBAIA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAC3C,2BAAG,SAAS,EAAC,4BAA4B,GAAK,CAC9C,CAAC,CAAC,CAAC,CACH,2BAAG,SAAS,EAAC,8BAA8B,GAAK,CAChD,CACD,CAAC,CAAC,CAAC,IAAI,CACH;YACN,6BAAK,SAAS,EAAC,8BAA8B;gBAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,6BACC,GAAG,EAAE,CAAC,EACN,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,GAAG,EAAE;wBACb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBAEA,KAAK,CAAC,KAAK;oBAEX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAC3C,2BAAG,SAAS,EAAC,4BAA4B,GAAK,CAC9C,CAAC,CAAC,CAAC,CACH,2BAAG,SAAS,EAAC,8BAA8B,GAAK,CAChD,CACD,CAAC,CAAC,CAAC,IAAI,CACH,CACN,CAAC;gBACF,6BAAK,SAAS,EAAC,6BAA6B,GAAO,CAC9C,CACD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport { Store, Actions } from \"../stores/ProcessMonitorStore\";\r\n/**\r\n * This is the \"table header\" that shows which columns are visible.\r\n * Since we aren't using an HTML table, this component exists.\r\n * It handles column display and sorting.\r\n **/\r\nexport default class ListHeader extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tsort: Store.getValue({ field: \"sort\" }),\r\n\t\t};\r\n\t\tthis.onSortChanged = this.onSortChanged.bind(this);\r\n\t}\r\n\r\n\t//When the sort value changes in the store, change it locally, and re-render the direction arrow.\r\n\tonSortChanged(err, response) {\r\n\t\tlet { value } = response;\r\n\t\tthis.setState({\r\n\t\t\tsort: value,\r\n\t\t});\r\n\t}\r\n\r\n\tUNSAFE_componentWillMount() {\r\n\t\tStore.addListener({ field: \"sort\" }, this.onSortChanged);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tStore.removeListener({ field: \"sort\" }, this.onSortChanged);\r\n\t}\r\n\r\n\trender() {\r\n\t\t//Just a list of the things beneath it. name, CPU, mem, etc. drive from store.\r\n\t\treturn (\r\n\t\t\t<div className=\"list-header\">\r\n\t\t\t\t{/* The name is separate because it isn't a statistic, per se. So I split it out. */}\r\n\t\t\t\t<div\r\n\t\t\t\t\tclassName=\"list-header-statistic-label list-header-name\"\r\n\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\tActions.setSort(\"name\");\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tName\r\n\t\t\t\t\t{/* If this field is the one being sorted, render the direction of the sort. Otherwise return null. */}\r\n\t\t\t\t\t{this.state.sort.field === \"name\" ? (\r\n\t\t\t\t\t\tthis.state.sort.direction === \"ascending\" ? (\r\n\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-up\"></i>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-down\"></i>\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div className=\"list-header-statistic-labels\">\r\n\t\t\t\t\t{this.props.fields.map((field, i) => (\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tkey={i}\r\n\t\t\t\t\t\t\tclassName=\"list-header-statistic-label\"\r\n\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\tActions.setSort(field.value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{field.label}\r\n\t\t\t\t\t\t\t{/* If this field is the one being sorted, render the direction of the sort. Otherwise return null. */}\r\n\t\t\t\t\t\t\t{this.state.sort.field === field.value ? (\r\n\t\t\t\t\t\t\t\tthis.state.sort.direction === \"ascending\" ? (\r\n\t\t\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-up\"></i>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-down\"></i>\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t))}\r\n\t\t\t\t\t<div className=\"list-header-statistic-label\"></div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"ListHeader.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ListHeader.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAM/D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS;IACtD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACvC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAGD,aAAa,CAAC,GAAG,EAAE,QAAQ;QAC1B,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,KAAK;SACX,CAAC,CAAC;IACJ,CAAC;IAED,yBAAyB;QACxB,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAED,oBAAoB;QACnB,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM;QAEL,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAE3B,6BACC,SAAS,EAAC,8CAA8C,EACxD,OAAO,EAAE,GAAG,EAAE;oBACb,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;;gBAIA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAC3C,2BAAG,SAAS,EAAC,4BAA4B,GAAK,CAC9C,CAAC,CAAC,CAAC,CACH,2BAAG,SAAS,EAAC,8BAA8B,GAAK,CAChD,CACD,CAAC,CAAC,CAAC,IAAI,CACH;YACN,6BAAK,SAAS,EAAC,8BAA8B;gBAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,6BACC,GAAG,EAAE,CAAC,EACN,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,GAAG,EAAE;wBACb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBAEA,KAAK,CAAC,KAAK;oBAEX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAC3C,2BAAG,SAAS,EAAC,4BAA4B,GAAK,CAC9C,CAAC,CAAC,CAAC,CACH,2BAAG,SAAS,EAAC,8BAA8B,GAAK,CAChD,CACD,CAAC,CAAC,CAAC,IAAI,CACH,CACN,CAAC;gBACF,6BAAK,SAAS,EAAC,6BAA6B,GAAO,CAC9C,CACD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport { Store, Actions } from \"../stores/ProcessMonitorStore\";\n/**\n * This is the \"table header\" that shows which columns are visible.\n * Since we aren't using an HTML table, this component exists.\n * It handles column display and sorting.\n **/\nexport default class ListHeader extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tsort: Store.getValue({ field: \"sort\" }),\n\t\t};\n\t\tthis.onSortChanged = this.onSortChanged.bind(this);\n\t}\n\n\t//When the sort value changes in the store, change it locally, and re-render the direction arrow.\n\tonSortChanged(err, response) {\n\t\tlet { value } = response;\n\t\tthis.setState({\n\t\t\tsort: value,\n\t\t});\n\t}\n\n\tUNSAFE_componentWillMount() {\n\t\tStore.addListener({ field: \"sort\" }, this.onSortChanged);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tStore.removeListener({ field: \"sort\" }, this.onSortChanged);\n\t}\n\n\trender() {\n\t\t//Just a list of the things beneath it. name, CPU, mem, etc. drive from store.\n\t\treturn (\n\t\t\t<div className=\"list-header\">\n\t\t\t\t{/* The name is separate because it isn't a statistic, per se. So I split it out. */}\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"list-header-statistic-label list-header-name\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tActions.setSort(\"name\");\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tName\n\t\t\t\t\t{/* If this field is the one being sorted, render the direction of the sort. Otherwise return null. */}\n\t\t\t\t\t{this.state.sort.field === \"name\" ? (\n\t\t\t\t\t\tthis.state.sort.direction === \"ascending\" ? (\n\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-up\"></i>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-down\"></i>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"list-header-statistic-labels\">\n\t\t\t\t\t{this.props.fields.map((field, i) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName=\"list-header-statistic-label\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tActions.setSort(field.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{field.label}\n\t\t\t\t\t\t\t{/* If this field is the one being sorted, render the direction of the sort. Otherwise return null. */}\n\t\t\t\t\t\t\t{this.state.sort.field === field.value ? (\n\t\t\t\t\t\t\t\tthis.state.sort.direction === \"ascending\" ? (\n\t\t\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-up\"></i>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<i className=\"sort-direction ff-arrow-down\"></i>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t\t<div className=\"list-header-statistic-label\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessStatistics.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ProcessStatistics.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAS;IAC7D,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QAGL,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAC3B,6BAAK,SAAS,EAAC,cAAc,IAE3B,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAClE;YACN,6BAAK,SAAS,EAAC,oBAAoB;gBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,6BAAK,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IACnF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CACnD,CACN,CAAC;gBACF,6BAAK,SAAS,EAAC,2BAA2B,IACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAClC,6BACC,SAAS,EAAC,gDAAgD,EAC1D,OAAO,EAAE,GAAG,EAAE;wBACb,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC5C,CAAC,gBAGI,CACN,CAAC,CAAC,CAAC,IAAI,CACH,CACD,CACD,CACN,CAAC;IACH,CAAC;CACD;AAOD,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ;IAC1C,IAAI,OAAO,GAAG,WAAW,EACxB,eAAe,GAAG,iBAAiB,GAAG,KAAK,EAC3C,mBAAmB,GAAG,qBAAqB,GAAG,KAAK,CAAC;IAErD,IAAI,QAAQ,KAAK,KAAK,EAAE;QACvB,CAAC,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,CAAC;KACzE;IACD,IAAI,MAAM,GAAG,eAAe,EAAE;QAC7B,OAAO,IAAI,aAAa,CAAC;KACzB;SAAM,IAAI,MAAM,GAAG,mBAAmB,EAAE;QACxC,OAAO,IAAI,iBAAiB,CAAC;KAC7B;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAQD,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ;IACpC,IAAI,QAAQ,KAAK,KAAK,EAAE;QAEvB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;KAC9B;SAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;QAC9B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;KAC3B;SAAM;QACN,OAAO,MAAM,CAAC;KACd;AACF,CAAC","sourcesContent":["import React from \"react\";\r\nimport { Actions } from \"../stores/ProcessMonitorStore\";\r\nimport { HIGH_CPU, HIGH_MEMORY_USAGE, MODERATE_CPU_USAGE, MODERATE_MEMORY_USAGE, TO_MB } from \"../constants\";\r\nimport { bytesToSize, round } from \"../helpers\";\r\n//Not used right now. Currently using alerts. This is for the future.\r\nexport default class ProcessStatistics extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\t//simple mode: CPU, memory\r\n\t\t//Advanced mode: add Peak Memory.\r\n\t\treturn (\r\n\t\t\t<div className=\"process-row\">\r\n\t\t\t\t<div className=\"process-name\">\r\n\t\t\t\t\t{/* In simple mode, we print out \"Group 1\", \"Group 2\", etc. The belief is that end users don't care about our wonderful process names (\"e.g., Default-Agent-62-4421). In advanced mode, you get the actual name of the process. */}\r\n\t\t\t\t\t{this.props.mode === \"simple\" ? \"Process Group\" : this.props.stats.name}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div className=\"process-statistics\">\r\n\t\t\t\t\t{this.props.fields.map((field, i) => (\r\n\t\t\t\t\t\t<div key={i} className={getClassesForStat(this.props.stats[field.value], field.label)}>\r\n\t\t\t\t\t\t\t{prettyPrint(this.props.stats[field.value], field.label)}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t))}\r\n\t\t\t\t\t<div className=\"statistic process-actions\">\r\n\t\t\t\t\t\t{this.props.stats.type === \"Tab\" ? (\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclassName=\" terminate fsbl-button-negative process-action\"\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tActions.terminateProcess(this.props.stats);\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\tTerminate\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * Given a number, will return modifier classes that change the background. High usage === red. Moderate === orange.\r\n * @param {number} number\r\n * @param {string} statType\r\n */\r\nfunction getClassesForStat(number, statType) {\r\n\tlet classes = \"statistic\",\r\n\t\thigh_comparison = HIGH_MEMORY_USAGE * TO_MB,\r\n\t\tmoderate_comparison = MODERATE_MEMORY_USAGE * TO_MB;\r\n\r\n\tif (statType === \"CPU\") {\r\n\t\t(high_comparison = HIGH_CPU), (moderate_comparison = MODERATE_CPU_USAGE);\r\n\t}\r\n\tif (number > high_comparison) {\r\n\t\tclasses += \" high-usage\";\r\n\t} else if (number > moderate_comparison) {\r\n\t\tclasses += \" moderate-usage\";\r\n\t}\r\n\treturn classes;\r\n}\r\n\r\n/**\r\n * Outputs something nice,. 102423465243 outputs whatever that number is in KB/MB/GB.\r\n * 0.035123 will output 0.35% for CPU.\r\n * @param {number} number\r\n * @param {string} statType\r\n */\r\nfunction prettyPrint(number, statType) {\r\n\tif (statType === \"CPU\") {\r\n\t\t//make it a percent.\r\n\t\treturn round(number, 2) + \"%\";\r\n\t} else if (statType !== \"PID\") {\r\n\t\treturn bytesToSize(number);\r\n\t} else {\r\n\t\treturn number;\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"ProcessStatistics.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ProcessStatistics.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAS;IAC7D,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QAGL,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAC3B,6BAAK,SAAS,EAAC,cAAc,IAE3B,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAClE;YACN,6BAAK,SAAS,EAAC,oBAAoB;gBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACpC,6BAAK,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IACnF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CACnD,CACN,CAAC;gBACF,6BAAK,SAAS,EAAC,2BAA2B,IACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAClC,6BACC,SAAS,EAAC,gDAAgD,EAC1D,OAAO,EAAE,GAAG,EAAE;wBACb,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC5C,CAAC,gBAGI,CACN,CAAC,CAAC,CAAC,IAAI,CACH,CACD,CACD,CACN,CAAC;IACH,CAAC;CACD;AAOD,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ;IAC1C,IAAI,OAAO,GAAG,WAAW,EACxB,eAAe,GAAG,iBAAiB,GAAG,KAAK,EAC3C,mBAAmB,GAAG,qBAAqB,GAAG,KAAK,CAAC;IAErD,IAAI,QAAQ,KAAK,KAAK,EAAE;QACvB,CAAC,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,CAAC;KACzE;IACD,IAAI,MAAM,GAAG,eAAe,EAAE;QAC7B,OAAO,IAAI,aAAa,CAAC;KACzB;SAAM,IAAI,MAAM,GAAG,mBAAmB,EAAE;QACxC,OAAO,IAAI,iBAAiB,CAAC;KAC7B;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAQD,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ;IACpC,IAAI,QAAQ,KAAK,KAAK,EAAE;QAEvB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;KAC9B;SAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;QAC9B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;KAC3B;SAAM;QACN,OAAO,MAAM,CAAC;KACd;AACF,CAAC","sourcesContent":["import React from \"react\";\nimport { Actions } from \"../stores/ProcessMonitorStore\";\nimport { HIGH_CPU, HIGH_MEMORY_USAGE, MODERATE_CPU_USAGE, MODERATE_MEMORY_USAGE, TO_MB } from \"../constants\";\nimport { bytesToSize, round } from \"../helpers\";\n//Not used right now. Currently using alerts. This is for the future.\nexport default class ProcessStatistics extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t}\n\n\trender() {\n\t\t//simple mode: CPU, memory\n\t\t//Advanced mode: add Peak Memory.\n\t\treturn (\n\t\t\t<div className=\"process-row\">\n\t\t\t\t<div className=\"process-name\">\n\t\t\t\t\t{/* In simple mode, we print out \"Group 1\", \"Group 2\", etc. The belief is that end users don't care about our wonderful process names (\"e.g., Default-Agent-62-4421). In advanced mode, you get the actual name of the process. */}\n\t\t\t\t\t{this.props.mode === \"simple\" ? \"Process Group\" : this.props.stats.name}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"process-statistics\">\n\t\t\t\t\t{this.props.fields.map((field, i) => (\n\t\t\t\t\t\t<div key={i} className={getClassesForStat(this.props.stats[field.value], field.label)}>\n\t\t\t\t\t\t\t{prettyPrint(this.props.stats[field.value], field.label)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t\t<div className=\"statistic process-actions\">\n\t\t\t\t\t\t{this.props.stats.type === \"Tab\" ? (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\" terminate fsbl-button-negative process-action\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tActions.terminateProcess(this.props.stats);\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\tTerminate\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n/**\n * Given a number, will return modifier classes that change the background. High usage === red. Moderate === orange.\n * @param {number} number\n * @param {string} statType\n */\nfunction getClassesForStat(number, statType) {\n\tlet classes = \"statistic\",\n\t\thigh_comparison = HIGH_MEMORY_USAGE * TO_MB,\n\t\tmoderate_comparison = MODERATE_MEMORY_USAGE * TO_MB;\n\n\tif (statType === \"CPU\") {\n\t\t(high_comparison = HIGH_CPU), (moderate_comparison = MODERATE_CPU_USAGE);\n\t}\n\tif (number > high_comparison) {\n\t\tclasses += \" high-usage\";\n\t} else if (number > moderate_comparison) {\n\t\tclasses += \" moderate-usage\";\n\t}\n\treturn classes;\n}\n\n/**\n * Outputs something nice,. 102423465243 outputs whatever that number is in KB/MB/GB.\n * 0.035123 will output 0.35% for CPU.\n * @param {number} number\n * @param {string} statType\n */\nfunction prettyPrint(number, statType) {\n\tif (statType === \"CPU\") {\n\t\t//make it a percent.\n\t\treturn round(number, 2) + \"%\";\n\t} else if (statType !== \"PID\") {\n\t\treturn bytesToSize(number);\n\t} else {\n\t\treturn number;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/components/processMonitor/constants.js"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC5C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACrD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;CACpC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAGpC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAGrC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,IAAI,WAAW,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAErC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IACvC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC","sourcesContent":["//Stats to parse. Comment out statistics if they interest you.\r\nexport const SIMPLE_MODE_STATISTICS = [\r\n\t{ label: \"CPU\", value: \"cpuUsage\" },\r\n\t{ label: \"Memory\", value: \"workingSetSize\" },\r\n];\r\n//Same as Simple, but we also give peak memory.\r\nexport const ADVANCED_MODE_STATISTICS = [\r\n\t{ label: \"CPU\", value: \"cpuUsage\" },\r\n\t{ label: \"Memory\", value: \"workingSetSize\" },\r\n\t{ label: \"Peak Memory\", value: \"peakWorkingSetSize\" },\r\n\t{ label: \"PID\", value: \"processId\" },\r\n];\r\n//These are percentages\r\nexport const HIGH_CPU = 10;\r\nexport const MODERATE_CPU_USAGE = 5;\r\n\r\n//Usage in MB\r\nexport const MODERATE_MEMORY_USAGE = 250;\r\nexport const HIGH_MEMORY_USAGE = 400;\r\n\r\n//so the constants above can be in MB. This is just a multiplier.\r\nexport const TO_MB = 1000000;\r\n\r\nlet emptyTotals = { statistics: {} };\r\n//Just an object to hold the UI over until we get real information from the system.\r\nSIMPLE_MODE_STATISTICS.forEach((stat) => {\r\n\temptyTotals.statistics[stat.value] = 0;\r\n});\r\n\r\nexport const EMPTY_TOTALS = emptyTotals;\r\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/components/processMonitor/constants.js"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC5C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACrD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;CACpC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAGpC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAGrC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,IAAI,WAAW,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAErC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IACvC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC","sourcesContent":["//Stats to parse. Comment out statistics if they interest you.\nexport const SIMPLE_MODE_STATISTICS = [\n\t{ label: \"CPU\", value: \"cpuUsage\" },\n\t{ label: \"Memory\", value: \"workingSetSize\" },\n];\n//Same as Simple, but we also give peak memory.\nexport const ADVANCED_MODE_STATISTICS = [\n\t{ label: \"CPU\", value: \"cpuUsage\" },\n\t{ label: \"Memory\", value: \"workingSetSize\" },\n\t{ label: \"Peak Memory\", value: \"peakWorkingSetSize\" },\n\t{ label: \"PID\", value: \"processId\" },\n];\n//These are percentages\nexport const HIGH_CPU = 10;\nexport const MODERATE_CPU_USAGE = 5;\n\n//Usage in MB\nexport const MODERATE_MEMORY_USAGE = 250;\nexport const HIGH_MEMORY_USAGE = 400;\n\n//so the constants above can be in MB. This is just a multiplier.\nexport const TO_MB = 1000000;\n\nlet emptyTotals = { statistics: {} };\n//Just an object to hold the UI over until we get real information from the system.\nSIMPLE_MODE_STATISTICS.forEach((stat) => {\n\temptyTotals.statistics[stat.value] = 0;\n});\n\nexport const EMPTY_TOTALS = emptyTotals;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/processMonitor/helpers.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,UAAU,YAAY,CAAC,GAAG;IAC/B,OAAO,CACN,GAAG;SACD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAE1B,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,WAAW,CAAC,KAAK;IAChC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,IAAI,EAAE,IAAI;IACrC,IAAI,GAAG,GAAG;QACT,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACd,CAAC;IACF,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACZ,CAAC;AAOD,MAAM,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS;IACtC,IAAI,KAAK,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE,YAAY;QACpD,IAAI,YAAY,EAAE;YACjB,SAAS,GAAG,CAAC,SAAS,CAAC;SACvB;QACD,IAAI,QAAQ,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAChF,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import { SIMPLE_MODE_STATISTICS } from \"./constants\";\r\n\r\n// This Is Proper Case\r\nexport function toProperCase(str) {\r\n\treturn (\r\n\t\tstr\r\n\t\t\t.replace(/([A-Z])/g, \" $1\")\r\n\t\t\t// uppercase the first character\r\n\t\t\t.replace(/^./, (str) => str.toUpperCase())\r\n\t);\r\n}\r\n/**\r\n * Given a number, will return a nice string, 1000 will return 1KB, 100 will return 100 Bytes, and so on.\r\n * @param {number} bytes\r\n */\r\nexport function bytesToSize(bytes) {\r\n\tvar sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\r\n\tif (bytes == 0) return \"0 Byte\";\r\n\tvar i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\r\n\treturn `${Math.round(bytes / Math.pow(1024, i), 2)} ${sizes[i]}`;\r\n}\r\n\r\n/**\r\n * Handler for Array.reduce. It takes the array of statistics and sums each value. This outputs a nice object that has our total CPU and memory consumption.\r\n * @param {*} prev\r\n * @param {*} curr\r\n */\r\nexport function statReducer(prev, curr) {\r\n\tlet ret = {\r\n\t\tname: \"Totals\",\r\n\t\tuuid: \"Totals\",\r\n\t\tstatistics: {},\r\n\t};\r\n\tSIMPLE_MODE_STATISTICS.forEach((stat) => {\r\n\t\tret.statistics[stat.value] = prev.statistics[stat.value] + curr.statistics[stat.value];\r\n\t});\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * Convenience function for rounding numbers.\r\n * @param {*} number\r\n * @param {*} precision\r\n */\r\nexport function round(number, precision) {\r\n\tvar shift = function (number, precision, reverseShift) {\r\n\t\tif (reverseShift) {\r\n\t\t\tprecision = -precision;\r\n\t\t}\r\n\t\tvar numArray = `${number}`.split(\"e\");\r\n\t\treturn +`${numArray[0]}e${numArray[1] ? +numArray[1] + precision : precision}`;\r\n\t};\r\n\treturn shift(Math.round(shift(number, precision, false)), precision, true);\r\n}\r\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/processMonitor/helpers.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,UAAU,YAAY,CAAC,GAAG;IAC/B,OAAO,CACN,GAAG;SACD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAE1B,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,WAAW,CAAC,KAAK;IAChC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,IAAI,EAAE,IAAI;IACrC,IAAI,GAAG,GAAG;QACT,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACd,CAAC;IACF,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACZ,CAAC;AAOD,MAAM,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS;IACtC,IAAI,KAAK,GAAG,UAAU,MAAM,EAAE,SAAS,EAAE,YAAY;QACpD,IAAI,YAAY,EAAE;YACjB,SAAS,GAAG,CAAC,SAAS,CAAC;SACvB;QACD,IAAI,QAAQ,GAAG,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAChF,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import { SIMPLE_MODE_STATISTICS } from \"./constants\";\n\n// This Is Proper Case\nexport function toProperCase(str) {\n\treturn (\n\t\tstr\n\t\t\t.replace(/([A-Z])/g, \" $1\")\n\t\t\t// uppercase the first character\n\t\t\t.replace(/^./, (str) => str.toUpperCase())\n\t);\n}\n/**\n * Given a number, will return a nice string, 1000 will return 1KB, 100 will return 100 Bytes, and so on.\n * @param {number} bytes\n */\nexport function bytesToSize(bytes) {\n\tvar sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\tif (bytes == 0) return \"0 Byte\";\n\tvar i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n\treturn `${Math.round(bytes / Math.pow(1024, i), 2)} ${sizes[i]}`;\n}\n\n/**\n * Handler for Array.reduce. It takes the array of statistics and sums each value. This outputs a nice object that has our total CPU and memory consumption.\n * @param {*} prev\n * @param {*} curr\n */\nexport function statReducer(prev, curr) {\n\tlet ret = {\n\t\tname: \"Totals\",\n\t\tuuid: \"Totals\",\n\t\tstatistics: {},\n\t};\n\tSIMPLE_MODE_STATISTICS.forEach((stat) => {\n\t\tret.statistics[stat.value] = prev.statistics[stat.value] + curr.statistics[stat.value];\n\t});\n\treturn ret;\n}\n\n/**\n * Convenience function for rounding numbers.\n * @param {*} number\n * @param {*} precision\n */\nexport function round(number, precision) {\n\tvar shift = function (number, precision, reverseShift) {\n\t\tif (reverseShift) {\n\t\t\tprecision = -precision;\n\t\t}\n\t\tvar numArray = `${number}`.split(\"e\");\n\t\treturn +`${numArray[0]}e${numArray[1] ? +numArray[1] + precision : precision}`;\n\t};\n\treturn shift(Math.round(shift(number, precision, false)), precision, true);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/processMonitor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { ProcessMonitor } from \"./ProcessMonitor\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/processMonitor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { ProcessMonitor } from \"./ProcessMonitor\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessMonitorStore.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/stores/ProcessMonitorStore.js"],"names":[],"mappings":"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","sourcesContent":["const timesSeries = require(\"async/timesSeries\");\r\nlet ProcessMonitorStore;\r\nconst asyncEach = require(\"async/each\");\r\n//Regex code taken from https://gist.github.com/mattheyan/46a230da86a0894a5ff654b9139ec5f2\r\nconst DEFAULT_SORT_DIRECTION = \"ascending\";\r\nconst DEFAULT_STORE_DATA = {\r\n\tviewMode: \"simple\",\r\n\tsort: {\r\n\t\tfield: \"name\",\r\n\t\tdirection: \"ascending\",\r\n\t},\r\n};\r\n\r\nfunction createLocalStore(done) {\r\n\tFSBL.Clients.DistributedStoreClient.createStore(\r\n\t\t{\r\n\t\t\tstore: \"Finsemble-ProcessMonitor-Local-Store\",\r\n\t\t\tvalues: DEFAULT_STORE_DATA,\r\n\t\t},\r\n\t\t(err, store) => {\r\n\t\t\tProcessMonitorStore = store;\r\n\t\t\tmodule.exports.Store = store;\r\n\t\t\tdone();\r\n\t\t}\r\n\t);\r\n}\r\n\r\nvar Actions = {\r\n\t/**\r\n\t * Creates the local store, then gets the first cut at stats for the process list.\r\n\t */\r\n\tinitialize: function (cb) {\r\n\t\tcreateLocalStore(() => {\r\n\t\t\tActions.getInitialData();\r\n\t\t\tcb();\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the process list, pulls the statistics out, and renders the app. Also sets up an interval where we'll retrieve more stats from the system.\r\n\t */\r\n\tgetInitialData: function () {\r\n\t\tFSBL.System.getProcessList(Actions.extractData);\r\n\t\tsetInterval(() => {\r\n\t\t\tFSBL.System.getProcessList(Actions.extractData);\r\n\t\t}, 1000);\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the sort field; if it's the same field as we had previously, we flip the sort direction.\r\n\t */\r\n\tsetSort: function (field) {\r\n\t\tlet currentSort = ProcessMonitorStore.getValue({ field: \"sort\" });\r\n\t\tlet procs = ProcessMonitorStore.getValue({ field: \"processList\" });\r\n\t\tlet newSort;\r\n\t\t//If it's the same field as before, flip the direction\r\n\t\tif (currentSort.field === field) {\r\n\t\t\tnewSort = currentSort;\r\n\t\t\tif (currentSort.direction == \"ascending\") {\r\n\t\t\t\tnewSort.direction = \"descending\";\r\n\t\t\t} else {\r\n\t\t\t\tnewSort.direction = \"ascending\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnewSort = {\r\n\t\t\t\tfield,\r\n\t\t\t\tdirection: DEFAULT_SORT_DIRECTION,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tProcessMonitorStore.setValue({ field: \"sort\", value: newSort }, () => {\r\n\t\t\t// When changing sort we'll re-render the UI immediately instead of waiting for the process list to update. Without this step, it could be 999ms until the next update, which makes the process monitor feel very unresponsive and very bad.\r\n\t\t\tprocs = Actions.sortProcesses(procs);\r\n\t\t\tProcessMonitorStore.setValue({ field: \"processList\", value: procs });\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Extracts data from the process list (via the createDataModel function), and then sets the processList value on the store. This causes the UI to re-render.\r\n\t */\r\n\textractData: function (processes) {\r\n\t\tActions.createDataModel(processes, (procs) => {\r\n\t\t\t//set store.\r\n\t\t\tProcessMonitorStore.setValue({ field: \"processList\", value: procs });\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the system.getProcessList response into something that's easily render-able.\r\n\t */\r\n\tcreateDataModel: function (processes, cb) {\r\n\t\tlet procs = [];\r\n\t\t//@todo, potential optimization: get child windows once, and listen on a close/create event. As it stands, getCWs is pretty performant.\r\n\t\tlet mode = ProcessMonitorStore.getValue({ field: \"viewMode\" });\r\n\r\n\t\tfor (const proc of processes) {\r\n\t\t\tif (\r\n\t\t\t\tmode === \"simple\" &&\r\n\t\t\t\t(proc.name.toLowerCase().includes(\"service\") ||\r\n\t\t\t\t\tproc.name.toLowerCase().includes(\"system\") ||\r\n\t\t\t\t\tproc.name.toLowerCase().includes(\"unnamed\"))\r\n\t\t\t) {\r\n\t\t\t\tprocs.push({\r\n\t\t\t\t\tstatistics: proc,\r\n\t\t\t\t\tvisible: false,\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tprocs.push({\r\n\t\t\t\t\tstatistics: proc,\r\n\t\t\t\t\tvisible: true,\r\n\t\t\t\t\ttype: proc.type,\r\n\t\t\t\t\tchildWindows: [...proc.windows, ...proc.views]\r\n\t\t\t\t\t\t.map((item) => {\r\n\t\t\t\t\t\t\tconst name = item.name || item.windowName;\r\n\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\t\t\tmode === \"simple\" &&\r\n\t\t\t\t\t\t\t\t\t(name.toLowerCase().includes(\"service\") ||\r\n\t\t\t\t\t\t\t\t\t\tname.toLowerCase().includes(\"system\") ||\r\n\t\t\t\t\t\t\t\t\t\tname.toLowerCase().includes(\"unnamed\"))\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\treturn {\r\n\t\t\t\t\t\t\t\t\tname: item.name || `${item.windowName}: view-${item.viewId}`,\r\n\t\t\t\t\t\t\t\t\ttype: item.name ? \"window\" : \"view\",\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\t.filter((item) => item)\r\n\t\t\t\t\t\t.sort((a, b) => {\r\n\t\t\t\t\t\t\tif (a.name < b.name) return -1;\r\n\t\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\tprocs = Actions.sortProcesses(procs);\r\n\t\tcb(procs);\r\n\t},\r\n\r\n\t/**\r\n\t * Sorting function. Handles ascending and descending.\r\n\t */\r\n\tsortProcesses: function (procs) {\r\n\t\tlet currentSort = ProcessMonitorStore.getValue({ field: \"sort\" });\r\n\t\tlet sortFN = (a, b) => {\r\n\t\t\tlet aValue = a.statistics[currentSort.field];\r\n\t\t\t//Comparing upper and lowercase names makes the sort look wrong. we equalize all strings here.\r\n\t\t\tif (aValue.toLowerCase) {\r\n\t\t\t\taValue = aValue.toLowerCase();\r\n\t\t\t}\r\n\r\n\t\t\tlet bValue = b.statistics[currentSort.field];\r\n\t\t\tif (aValue.toLowerCase) {\r\n\t\t\t\tbValue = bValue.toLowerCase();\r\n\t\t\t}\r\n\t\t\tif (currentSort.direction === \"ascending\") {\r\n\t\t\t\tif (aValue < bValue) return -1;\r\n\t\t\t\tif (aValue > bValue) return 1;\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (aValue > bValue) return -1;\r\n\t\t\tif (aValue < bValue) return 1;\r\n\t\t\treturn 0;\r\n\t\t};\r\n\t\treturn procs.sort(sortFN);\r\n\t},\r\n\r\n\t/**\r\n\t * Toggles advanced/simple mode\r\n\t */\r\n\ttoggleViewMode: function () {\r\n\t\tlet mode = ProcessMonitorStore.getValue({ field: \"viewMode\" });\r\n\t\tif (mode === \"advanced\") {\r\n\t\t\tmode = \"simple\";\r\n\t\t} else {\r\n\t\t\tmode = \"advanced\";\r\n\t\t}\r\n\t\tProcessMonitorStore.setValue({ field: \"viewMode\", value: mode });\r\n\t},\r\n\r\n\t/**\r\n\t * Make the window flash a couple of times so that the user can identify it.\r\n\t */\r\n\tidentifyWindow: function (winID) {\r\n\t\tif (winID.name.includes(\"Service\")) return;\r\n\r\n\t\tconst OPACITY_ANIMATION_DURATION = 200;\r\n\t\tFSBL.FinsembleWindow.getInstance({ name: winID.name }, (err, win) => {\r\n\t\t\tlet windowState = \"hidden\";\r\n\t\t\tfunction flash(n, done) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\twin.hide(() => {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\twin.show(() => {\r\n\t\t\t\t\t\t\t\tdone(null);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}, OPACITY_ANIMATION_DURATION / 1.5);\r\n\t\t\t\t\t});\r\n\t\t\t\t}, OPACITY_ANIMATION_DURATION / 1.5);\r\n\t\t\t}\r\n\t\t\twin.isShowing((err, isVisible) => {\r\n\t\t\t\t//cache the visible state of the window prior to making it flash. If it was hidden before, hide it when the flashing is done.\r\n\t\t\t\twindowState = isVisible ? \"visible\" : \"hidden\";\r\n\t\t\t\twin.show(() => {\r\n\t\t\t\t\twin.bringToFront(() => {\r\n\t\t\t\t\t\t//Flash 5 times, in series.\r\n\t\t\t\t\t\ttimesSeries(5, flash, () => {\r\n\t\t\t\t\t\t\tif (windowState === \"hidden\") {\r\n\t\t\t\t\t\t\t\twin.hide();\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},\r\n\r\n\t/**\r\n\t * Terminates a process. Prompts first. If it fails to terminate the process, displays an error message.\r\n\t */\r\n\tterminateProcess: function (AppIdentifier, force = false, prompt = true) {\r\n\t\tlet app = FSBL.System.Application.wrap(AppIdentifier.uuid, AppIdentifier.name);\r\n\t\t/**\r\n\t\t * This whole routine is a little hectic because of all of the closures - but there's a method to the madness. Here's the logic.\r\n\t\t *\r\n\t\t * 1st time we try to close: Politely close the window. If that fails, recurse, but pass \"force\" === true.\r\n\t\t * 2nd time, we try to forceClose the process. If that fails, we will terminate the process forcibly, which isn't graceful.\r\n\t\t */\r\n\r\n\t\tlet politeCloseProcess = () => {\r\n\t\t\t//If the process fails to close in 4 seconds, we will call this method again, but try to force close it.\r\n\t\t\tlet closeTimeout = setTimeout(() => {\r\n\t\t\t\tonCloseFailure();\r\n\t\t\t}, 4000);\r\n\r\n\t\t\tvar onCloseSuccess = () => {\r\n\t\t\t\tclearTimeout(closeTimeout);\r\n\t\t\t};\r\n\t\t\tapp.close(force, onCloseSuccess, onCloseFailure);\r\n\t\t};\r\n\r\n\t\tlet forceCloseProcess = () => {\r\n\t\t\t//If the process fails to close in 4 seconds, we will call this method again, but try to force close it.\r\n\t\t\tlet closeTimeout = setTimeout(() => {\r\n\t\t\t\tonCloseFailure();\r\n\t\t\t}, 4000);\r\n\r\n\t\t\tvar onCloseSuccess = () => {\r\n\t\t\t\tclearTimeout(closeTimeout);\r\n\t\t\t};\r\n\t\t\tapp.close(force, onCloseSuccess, onCloseFailure);\r\n\t\t};\r\n\r\n\t\tlet terminateProcess = () => {\r\n\t\t\t//Should never get into here, but just in case the process is hung, we'll show an error message to the user.\r\n\t\t\tapp.terminate(true, Function.prototype, () => {\r\n\t\t\t\tFSBL.Clients.DialogManager.open(\r\n\t\t\t\t\t\"yesNo\",\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\t\tquestion: \"The process that you are attempting to close is unresponsive. Please contact support.\",\r\n\t\t\t\t\t\taffirmativeButtonLabel: \"Okay\",\r\n\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\tshowNegativeButton: false,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tFunction.prototype\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet onCloseFailure = () => {\r\n\t\t\t//If Actions.terminateProcess is invoked with force === true, that means that we tried to force close the process, and it failed. So we will terminate it. If not, we will try to force close (the else block).\r\n\t\t\tif (force) {\r\n\t\t\t\tterminateProcess();\r\n\t\t\t} else {\r\n\t\t\t\t//If we've already tried to close the process once, but it failed, we'll try to terminate it. The first attempt is a close, which is more graceful.\r\n\t\t\t\tActions.terminateProcess(AppIdentifier, true, false);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//If we're force closing, no need to prompt the user (which is what happens below);\r\n\t\tif (force) {\r\n\t\t\treturn forceCloseProcess();\r\n\t\t}\r\n\r\n\t\t//Ask user if they're sure. If they says \"yes\", close it.\r\n\t\tFSBL.Clients.DialogManager.open(\r\n\t\t\t\"yesNo\",\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Terminate Process?\",\r\n\t\t\t\tquestion: \"Terminating the process may close other apps. Are you sure you want to continue?\",\r\n\t\t\t\taffirmativeResponseLabel: \"Terminate\",\r\n\t\t\t\tshowNegativeButton: false,\r\n\t\t\t},\r\n\t\t\t(err, response) => {\r\n\t\t\t\tif (err || response.choice === \"affirmative\") {\r\n\t\t\t\t\tpoliteCloseProcess();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t},\r\n\r\n\t/**\r\n\t * This function exists to make the UI feel snappy. May take a second or so for the window to close properly and for the change to flow to system.getProcessList. To make that lag go away, we immediately render the change.\r\n\t */\r\n\tremoveWindowLocally: function (winID) {\r\n\t\tlet win = FSBL.System.Window.wrap(winID.uuid, winID.name);\r\n\t\tlet parentApp = win.getParentApplication();\r\n\t\tlet procs = ProcessMonitorStore.getValue({ field: \"processList\" });\r\n\t\tprocs = procs.map((proc) => {\r\n\t\t\tif (proc.statistics.uuid === parentApp.uuid) {\r\n\t\t\t\tlet cwIndex = proc.childWindows.findIndex((cw) => cw.name === winID.name);\r\n\t\t\t\tproc.childWindows.splice(cwIndex, 1);\r\n\t\t\t}\r\n\t\t\treturn proc;\r\n\t\t});\r\n\t\tProcessMonitorStore.setValue({ field: \"processList\", value: procs });\r\n\t},\r\n\r\n\t/**\r\n\t * Try to close the window. If that fails, try to force close the window. If that fails, ask if they'd like to terminate the parent process.\r\n\t */\r\n\tcloseWindow: function (winID, force = false) {\r\n\t\tlet win = FSBL.System.Window.wrap(winID.uuid, winID.name);\r\n\t\tlet parentApp = win.getParentApplication();\r\n\r\n\t\t//Make the UI feel snappy.\r\n\t\tActions.removeWindowLocally(winID);\r\n\r\n\t\t//If we can't close within 4 seconds, something's wrong - try to force close it.\r\n\t\tlet closeTimeout = setTimeout(() => {\r\n\t\t\tonCloseFailure();\r\n\t\t}, 4000);\r\n\r\n\t\tvar onCloseSuccess = () => {\r\n\t\t\tclearTimeout(closeTimeout);\r\n\t\t};\r\n\r\n\t\tvar onCloseFailure = () => {\r\n\t\t\t//If Actions.closeWindow was called with force === true, and the close failed, give the user the opportunity to terminate the process.\r\n\t\t\tif (force) {\r\n\t\t\t\tFSBL.Clients.DialogManager.open(\r\n\t\t\t\t\t\"yesNo\",\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttitle: \"Terminate Process?\",\r\n\t\t\t\t\t\tquestion:\r\n\t\t\t\t\t\t\t\"The app that you are attempting to close is unresponsive. Would you like to terminate the process? Terminating the process may close other apps.\",\r\n\t\t\t\t\t\taffirmativeResponseLabel: \"Terminate\",\r\n\t\t\t\t\t\tshowNegativeButton: false,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t(err, response) => {\r\n\t\t\t\t\t\tif (err || response.choice === \"affirmative\") {\r\n\t\t\t\t\t\t\treturn Actions.terminateProcess(parentApp, true);\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} else {\r\n\t\t\t\tActions.closeWindow(winID, true);\r\n\t\t\t}\r\n\t\t};\r\n\t\twin.close(force, onCloseSuccess, onCloseFailure);\r\n\t},\r\n};\r\n\r\nmodule.exports.Store = ProcessMonitorStore;\r\nmodule.exports.Actions = Actions;\r\n"]}
1
+ {"version":3,"file":"ProcessMonitorStore.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/stores/ProcessMonitorStore.js"],"names":[],"mappings":"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","sourcesContent":["const timesSeries = require(\"async/timesSeries\");\nlet ProcessMonitorStore;\nconst asyncEach = require(\"async/each\");\n//Regex code taken from https://gist.github.com/mattheyan/46a230da86a0894a5ff654b9139ec5f2\nconst DEFAULT_SORT_DIRECTION = \"ascending\";\nconst DEFAULT_STORE_DATA = {\n\tviewMode: \"simple\",\n\tsort: {\n\t\tfield: \"name\",\n\t\tdirection: \"ascending\",\n\t},\n};\n\nfunction createLocalStore(done) {\n\tFSBL.Clients.DistributedStoreClient.createStore(\n\t\t{\n\t\t\tstore: \"Finsemble-ProcessMonitor-Local-Store\",\n\t\t\tvalues: DEFAULT_STORE_DATA,\n\t\t},\n\t\t(err, store) => {\n\t\t\tProcessMonitorStore = store;\n\t\t\tmodule.exports.Store = store;\n\t\t\tdone();\n\t\t}\n\t);\n}\n\nvar Actions = {\n\t/**\n\t * Creates the local store, then gets the first cut at stats for the process list.\n\t */\n\tinitialize: function (cb) {\n\t\tcreateLocalStore(() => {\n\t\t\tActions.getInitialData();\n\t\t\tcb();\n\t\t});\n\t},\n\n\t/**\n\t * Gets the process list, pulls the statistics out, and renders the app. Also sets up an interval where we'll retrieve more stats from the system.\n\t */\n\tgetInitialData: function () {\n\t\tFSBL.System.getProcessList(Actions.extractData);\n\t\tsetInterval(() => {\n\t\t\tFSBL.System.getProcessList(Actions.extractData);\n\t\t}, 1000);\n\t},\n\n\t/**\n\t * Sets the sort field; if it's the same field as we had previously, we flip the sort direction.\n\t */\n\tsetSort: function (field) {\n\t\tlet currentSort = ProcessMonitorStore.getValue({ field: \"sort\" });\n\t\tlet procs = ProcessMonitorStore.getValue({ field: \"processList\" });\n\t\tlet newSort;\n\t\t//If it's the same field as before, flip the direction\n\t\tif (currentSort.field === field) {\n\t\t\tnewSort = currentSort;\n\t\t\tif (currentSort.direction == \"ascending\") {\n\t\t\t\tnewSort.direction = \"descending\";\n\t\t\t} else {\n\t\t\t\tnewSort.direction = \"ascending\";\n\t\t\t}\n\t\t} else {\n\t\t\tnewSort = {\n\t\t\t\tfield,\n\t\t\t\tdirection: DEFAULT_SORT_DIRECTION,\n\t\t\t};\n\t\t}\n\n\t\tProcessMonitorStore.setValue({ field: \"sort\", value: newSort }, () => {\n\t\t\t// When changing sort we'll re-render the UI immediately instead of waiting for the process list to update. Without this step, it could be 999ms until the next update, which makes the process monitor feel very unresponsive and very bad.\n\t\t\tprocs = Actions.sortProcesses(procs);\n\t\t\tProcessMonitorStore.setValue({ field: \"processList\", value: procs });\n\t\t});\n\t},\n\n\t/**\n\t * Extracts data from the process list (via the createDataModel function), and then sets the processList value on the store. This causes the UI to re-render.\n\t */\n\textractData: function (processes) {\n\t\tActions.createDataModel(processes, (procs) => {\n\t\t\t//set store.\n\t\t\tProcessMonitorStore.setValue({ field: \"processList\", value: procs });\n\t\t});\n\t},\n\n\t/**\n\t * Converts the system.getProcessList response into something that's easily render-able.\n\t */\n\tcreateDataModel: function (processes, cb) {\n\t\tlet procs = [];\n\t\t//@todo, potential optimization: get child windows once, and listen on a close/create event. As it stands, getCWs is pretty performant.\n\t\tlet mode = ProcessMonitorStore.getValue({ field: \"viewMode\" });\n\n\t\tfor (const proc of processes) {\n\t\t\tif (\n\t\t\t\tmode === \"simple\" &&\n\t\t\t\t(proc.name.toLowerCase().includes(\"service\") ||\n\t\t\t\t\tproc.name.toLowerCase().includes(\"system\") ||\n\t\t\t\t\tproc.name.toLowerCase().includes(\"unnamed\"))\n\t\t\t) {\n\t\t\t\tprocs.push({\n\t\t\t\t\tstatistics: proc,\n\t\t\t\t\tvisible: false,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tprocs.push({\n\t\t\t\t\tstatistics: proc,\n\t\t\t\t\tvisible: true,\n\t\t\t\t\ttype: proc.type,\n\t\t\t\t\tchildWindows: [...proc.windows, ...proc.views]\n\t\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\t\tconst name = item.name || item.windowName;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\t\tmode === \"simple\" &&\n\t\t\t\t\t\t\t\t\t(name.toLowerCase().includes(\"service\") ||\n\t\t\t\t\t\t\t\t\t\tname.toLowerCase().includes(\"system\") ||\n\t\t\t\t\t\t\t\t\t\tname.toLowerCase().includes(\"unnamed\"))\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\treturn {\n\t\t\t\t\t\t\t\t\tname: item.name || `${item.windowName}: view-${item.viewId}`,\n\t\t\t\t\t\t\t\t\ttype: item.name ? \"window\" : \"view\",\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\t.filter((item) => item)\n\t\t\t\t\t\t.sort((a, b) => {\n\t\t\t\t\t\t\tif (a.name < b.name) return -1;\n\t\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tprocs = Actions.sortProcesses(procs);\n\t\tcb(procs);\n\t},\n\n\t/**\n\t * Sorting function. Handles ascending and descending.\n\t */\n\tsortProcesses: function (procs) {\n\t\tlet currentSort = ProcessMonitorStore.getValue({ field: \"sort\" });\n\t\tlet sortFN = (a, b) => {\n\t\t\tlet aValue = a.statistics[currentSort.field];\n\t\t\t//Comparing upper and lowercase names makes the sort look wrong. we equalize all strings here.\n\t\t\tif (aValue.toLowerCase) {\n\t\t\t\taValue = aValue.toLowerCase();\n\t\t\t}\n\n\t\t\tlet bValue = b.statistics[currentSort.field];\n\t\t\tif (aValue.toLowerCase) {\n\t\t\t\tbValue = bValue.toLowerCase();\n\t\t\t}\n\t\t\tif (currentSort.direction === \"ascending\") {\n\t\t\t\tif (aValue < bValue) return -1;\n\t\t\t\tif (aValue > bValue) return 1;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (aValue > bValue) return -1;\n\t\t\tif (aValue < bValue) return 1;\n\t\t\treturn 0;\n\t\t};\n\t\treturn procs.sort(sortFN);\n\t},\n\n\t/**\n\t * Toggles advanced/simple mode\n\t */\n\ttoggleViewMode: function () {\n\t\tlet mode = ProcessMonitorStore.getValue({ field: \"viewMode\" });\n\t\tif (mode === \"advanced\") {\n\t\t\tmode = \"simple\";\n\t\t} else {\n\t\t\tmode = \"advanced\";\n\t\t}\n\t\tProcessMonitorStore.setValue({ field: \"viewMode\", value: mode });\n\t},\n\n\t/**\n\t * Make the window flash a couple of times so that the user can identify it.\n\t */\n\tidentifyWindow: function (winID) {\n\t\tif (winID.name.includes(\"Service\")) return;\n\n\t\tconst OPACITY_ANIMATION_DURATION = 200;\n\t\tFSBL.FinsembleWindow.getInstance({ name: winID.name }, (err, win) => {\n\t\t\tlet windowState = \"hidden\";\n\t\t\tfunction flash(n, done) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\twin.hide(() => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\twin.show(() => {\n\t\t\t\t\t\t\t\tdone(null);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, OPACITY_ANIMATION_DURATION / 1.5);\n\t\t\t\t\t});\n\t\t\t\t}, OPACITY_ANIMATION_DURATION / 1.5);\n\t\t\t}\n\t\t\twin.isShowing((err, isVisible) => {\n\t\t\t\t//cache the visible state of the window prior to making it flash. If it was hidden before, hide it when the flashing is done.\n\t\t\t\twindowState = isVisible ? \"visible\" : \"hidden\";\n\t\t\t\twin.show(() => {\n\t\t\t\t\twin.bringToFront(() => {\n\t\t\t\t\t\t//Flash 5 times, in series.\n\t\t\t\t\t\ttimesSeries(5, flash, () => {\n\t\t\t\t\t\t\tif (windowState === \"hidden\") {\n\t\t\t\t\t\t\t\twin.hide();\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},\n\n\t/**\n\t * Terminates a process. Prompts first. If it fails to terminate the process, displays an error message.\n\t */\n\tterminateProcess: function (AppIdentifier, force = false, prompt = true) {\n\t\tlet app = FSBL.System.Application.wrap(AppIdentifier.uuid, AppIdentifier.name);\n\t\t/**\n\t\t * This whole routine is a little hectic because of all of the closures - but there's a method to the madness. Here's the logic.\n\t\t *\n\t\t * 1st time we try to close: Politely close the window. If that fails, recurse, but pass \"force\" === true.\n\t\t * 2nd time, we try to forceClose the process. If that fails, we will terminate the process forcibly, which isn't graceful.\n\t\t */\n\n\t\tlet politeCloseProcess = () => {\n\t\t\t//If the process fails to close in 4 seconds, we will call this method again, but try to force close it.\n\t\t\tlet closeTimeout = setTimeout(() => {\n\t\t\t\tonCloseFailure();\n\t\t\t}, 4000);\n\n\t\t\tvar onCloseSuccess = () => {\n\t\t\t\tclearTimeout(closeTimeout);\n\t\t\t};\n\t\t\tapp.close(force, onCloseSuccess, onCloseFailure);\n\t\t};\n\n\t\tlet forceCloseProcess = () => {\n\t\t\t//If the process fails to close in 4 seconds, we will call this method again, but try to force close it.\n\t\t\tlet closeTimeout = setTimeout(() => {\n\t\t\t\tonCloseFailure();\n\t\t\t}, 4000);\n\n\t\t\tvar onCloseSuccess = () => {\n\t\t\t\tclearTimeout(closeTimeout);\n\t\t\t};\n\t\t\tapp.close(force, onCloseSuccess, onCloseFailure);\n\t\t};\n\n\t\tlet terminateProcess = () => {\n\t\t\t//Should never get into here, but just in case the process is hung, we'll show an error message to the user.\n\t\t\tapp.terminate(true, Function.prototype, () => {\n\t\t\t\tFSBL.Clients.DialogManager.open(\n\t\t\t\t\t\"yesNo\",\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: \"Error\",\n\t\t\t\t\t\tquestion: \"The process that you are attempting to close is unresponsive. Please contact support.\",\n\t\t\t\t\t\taffirmativeButtonLabel: \"Okay\",\n\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\tshowNegativeButton: false,\n\t\t\t\t\t},\n\t\t\t\t\tFunction.prototype\n\t\t\t\t);\n\t\t\t});\n\t\t};\n\n\t\tlet onCloseFailure = () => {\n\t\t\t//If Actions.terminateProcess is invoked with force === true, that means that we tried to force close the process, and it failed. So we will terminate it. If not, we will try to force close (the else block).\n\t\t\tif (force) {\n\t\t\t\tterminateProcess();\n\t\t\t} else {\n\t\t\t\t//If we've already tried to close the process once, but it failed, we'll try to terminate it. The first attempt is a close, which is more graceful.\n\t\t\t\tActions.terminateProcess(AppIdentifier, true, false);\n\t\t\t}\n\t\t};\n\n\t\t//If we're force closing, no need to prompt the user (which is what happens below);\n\t\tif (force) {\n\t\t\treturn forceCloseProcess();\n\t\t}\n\n\t\t//Ask user if they're sure. If they says \"yes\", close it.\n\t\tFSBL.Clients.DialogManager.open(\n\t\t\t\"yesNo\",\n\t\t\t{\n\t\t\t\ttitle: \"Terminate Process?\",\n\t\t\t\tquestion: \"Terminating the process may close other apps. Are you sure you want to continue?\",\n\t\t\t\taffirmativeResponseLabel: \"Terminate\",\n\t\t\t\tshowNegativeButton: false,\n\t\t\t},\n\t\t\t(err, response) => {\n\t\t\t\tif (err || response.choice === \"affirmative\") {\n\t\t\t\t\tpoliteCloseProcess();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t},\n\n\t/**\n\t * This function exists to make the UI feel snappy. May take a second or so for the window to close properly and for the change to flow to system.getProcessList. To make that lag go away, we immediately render the change.\n\t */\n\tremoveWindowLocally: function (winID) {\n\t\tlet win = FSBL.System.Window.wrap(winID.uuid, winID.name);\n\t\tlet parentApp = win.getParentApplication();\n\t\tlet procs = ProcessMonitorStore.getValue({ field: \"processList\" });\n\t\tprocs = procs.map((proc) => {\n\t\t\tif (proc.statistics.uuid === parentApp.uuid) {\n\t\t\t\tlet cwIndex = proc.childWindows.findIndex((cw) => cw.name === winID.name);\n\t\t\t\tproc.childWindows.splice(cwIndex, 1);\n\t\t\t}\n\t\t\treturn proc;\n\t\t});\n\t\tProcessMonitorStore.setValue({ field: \"processList\", value: procs });\n\t},\n\n\t/**\n\t * Try to close the window. If that fails, try to force close the window. If that fails, ask if they'd like to terminate the parent process.\n\t */\n\tcloseWindow: function (winID, force = false) {\n\t\tlet win = FSBL.System.Window.wrap(winID.uuid, winID.name);\n\t\tlet parentApp = win.getParentApplication();\n\n\t\t//Make the UI feel snappy.\n\t\tActions.removeWindowLocally(winID);\n\n\t\t//If we can't close within 4 seconds, something's wrong - try to force close it.\n\t\tlet closeTimeout = setTimeout(() => {\n\t\t\tonCloseFailure();\n\t\t}, 4000);\n\n\t\tvar onCloseSuccess = () => {\n\t\t\tclearTimeout(closeTimeout);\n\t\t};\n\n\t\tvar onCloseFailure = () => {\n\t\t\t//If Actions.closeWindow was called with force === true, and the close failed, give the user the opportunity to terminate the process.\n\t\t\tif (force) {\n\t\t\t\tFSBL.Clients.DialogManager.open(\n\t\t\t\t\t\"yesNo\",\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: \"Terminate Process?\",\n\t\t\t\t\t\tquestion:\n\t\t\t\t\t\t\t\"The app that you are attempting to close is unresponsive. Would you like to terminate the process? Terminating the process may close other apps.\",\n\t\t\t\t\t\taffirmativeResponseLabel: \"Terminate\",\n\t\t\t\t\t\tshowNegativeButton: false,\n\t\t\t\t\t},\n\t\t\t\t\t(err, response) => {\n\t\t\t\t\t\tif (err || response.choice === \"affirmative\") {\n\t\t\t\t\t\t\treturn Actions.terminateProcess(parentApp, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tActions.closeWindow(winID, true);\n\t\t\t}\n\t\t};\n\t\twin.close(force, onCloseSuccess, onCloseFailure);\n\t},\n};\n\nmodule.exports.Store = ProcessMonitorStore;\nmodule.exports.Actions = Actions;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"QuickComponentForm.js","sourceRoot":"","sources":["../../../src/components/quickComponentForm/QuickComponentForm.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport { FinsembleDialog } from \"../legacyControls/FinsembleDialog\";\r\nimport { FinsembleDialogTextInput } from \"../legacyControls/FinsembleDialogTextInput\";\r\nimport { FinsembleDialogButton } from \"../legacyControls/FinsembleDialogButton\";\r\nimport \"../../assets/css/dialogs.css\";\r\nimport \"./quickComponent.css\";\r\nimport { isValidURL } from \"../shared/validateURL\";\r\nimport { addProtocolToValidURL } from \"../shared/addProtocolToValidURL\";\r\n\r\n// @deprecated - Quick Components will be removed in a future version\r\nclass QuickComponentFormBase extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tFSBL.Clients.Logger.deprecated(\r\n\t\t\t\"Quick Components have been deprecated and will not be available in a future release.\"\r\n\t\t);\r\n\t\tthis.state = {\r\n\t\t\tname: \"\",\r\n\t\t\turl: \"\",\r\n\t\t};\r\n\t\tthis.save = this.save.bind(this);\r\n\t\tthis.cancel = this.cancel.bind(this);\r\n\t\tthis.setName = this.setName.bind(this);\r\n\t\tthis.setURL = this.setURL.bind(this);\r\n\t\tthis.onkeydown = this.onkeydown.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds eventListeners on keydown, sets the height of the component.\r\n\t *\r\n\t * @memberof QuickComponent\r\n\t */\r\n\tcomponentDidMount() {\r\n\t\tFSBL.Clients.WindowClient.fitToDOM();\r\n\t\tdocument.body.addEventListener(\"keydown\", this.onkeydown);\r\n\t\tFSBL.Clients.WindowClient.setAlwaysOnTop(true);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tdocument.body.removeEventListener(\"keydown\", this.onkeydown);\r\n\t}\r\n\r\n\t/**\r\n\t * Matches the enter and escape keys with the corresponding function to invoke.\r\n\t */\r\n\tonkeydown = function (e) {\r\n\t\tif (e.code === \"Enter\" && e.shiftKey === false) {\r\n\t\t\tthis.save();\r\n\t\t}\r\n\r\n\t\tif (e.code === \"Escape\") {\r\n\t\t\tthis.cancel();\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Hides the window when the save button is clicked.\r\n\t *\r\n\t * @memberof QuickComponent\r\n\t */\r\n\thideWindow() {\r\n\t\tfinsembleWindow.hide();\r\n\t}\r\n\r\n\t/**\r\n\t * Persists the quick component to storage.\r\n\t * @todo On error, display error message and allow user to try again.\r\n\t * @memberof QuickComponent\r\n\t */\r\n\tsave() {\r\n\t\tif (!this.state) return FSBL.Clients.DialogManager.respondToOpener({});\r\n\t\tlet { name } = this.state;\r\n\t\tlet { url } = this.state;\r\n\t\tif (!name || !url) return FSBL.Clients.DialogManager.respondToOpener({});\r\n\r\n\t\tif (!isValidURL(url)) {\r\n\t\t\treturn FSBL.Clients.DialogManager.respondToOpener({\r\n\t\t\t\terror: \"Invalid URL\",\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst urlWithProtocol = addProtocolToValidURL(url);\r\n\r\n\t\tFSBL.Clients.LauncherClient.addUserDefinedComponent(\r\n\t\t\t{\r\n\t\t\t\tname: name,\r\n\t\t\t\turl: urlWithProtocol,\r\n\t\t\t},\r\n\t\t\t(err, response) => {\r\n\t\t\t\tif (err) {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t}\r\n\t\t\t\t// FSBL.Clients.WindowClient.close(false);\r\n\t\t\t\tFSBL.Clients.DialogManager.respondToOpener({});\r\n\t\t\t}\r\n\t\t);\r\n\t\tArray.from(document.querySelectorAll(\"input\")).forEach((el) => (el.value = \"\"));\r\n\t\tthis.setState({\r\n\t\t\tname: \"\",\r\n\t\t\turl: \"\",\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Kills the window.\r\n\t * @todo make this component show/hide instead of spawn/close.\r\n\t * @memberof QuickComponent\r\n\t */\r\n\tcancel() {\r\n\t\tArray.from(document.querySelectorAll(\"input\")).forEach((el) => (el.value = \"\"));\r\n\r\n\t\t// FSBL.Clients.WindowClient.close(false);\r\n\t\tFSBL.Clients.DialogManager.respondToOpener({});\r\n\t}\r\n\r\n\tsetName(e) {\r\n\t\tthis.setState({ name: e.target.value });\r\n\t}\r\n\r\n\tsetURL(e) {\r\n\t\tthis.setState({ url: e.target.value });\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<FinsembleDialog\r\n\t\t\t\tbehaviorOnResponse=\"hide\"\r\n\t\t\t\tonShowRequested={() => {\r\n\t\t\t\t\tFSBL.Clients.WindowClient.fitToDOM(null, () => {\r\n\t\t\t\t\t\tFSBL.Clients.DialogManager.showDialog();\r\n\t\t\t\t\t});\r\n\t\t\t\t}}\r\n\t\t\t\tisModal={true}\r\n\t\t\t>\r\n\t\t\t\t<div className=\"dialog-title\">Enter a name and URL for your app.</div>\r\n\t\t\t\t<FinsembleDialogTextInput\r\n\t\t\t\t\tonInputChange={this.setName}\r\n\t\t\t\t\tplaceholder=\"Name\"\r\n\t\t\t\t\tautoFocus\r\n\t\t\t\t\tvalue={this.state.name}\r\n\t\t\t\t\tfocusOnShow={true}\r\n\t\t\t\t/>\r\n\t\t\t\t<FinsembleDialogTextInput onInputChange={this.setURL} placeholder=\"URL\" value={this.state.url} />\r\n\t\t\t\t<div className=\"button-wrapper\">\r\n\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.cancel}>\r\n\t\t\t\t\t\tCancel\r\n\t\t\t\t\t</FinsembleDialogButton>\r\n\r\n\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-affirmative\" onClick={this.save}>\r\n\t\t\t\t\t\tConfirm\r\n\t\t\t\t\t</FinsembleDialogButton>\r\n\t\t\t\t</div>\r\n\t\t\t</FinsembleDialog>\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * A form that allows the user to add a quick component. It provides one field for the name of the quick component, and another field for its URL.\r\n */\r\nexport const QuickComponentForm = () => <QuickComponentFormBase />;\r\n"]}
1
+ {"version":3,"file":"QuickComponentForm.js","sourceRoot":"","sources":["../../../src/components/quickComponentForm/QuickComponentForm.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { FinsembleDialog } from \"../legacyControls/FinsembleDialog\";\nimport { FinsembleDialogTextInput } from \"../legacyControls/FinsembleDialogTextInput\";\nimport { FinsembleDialogButton } from \"../legacyControls/FinsembleDialogButton\";\nimport \"../../assets/css/dialogs.css\";\nimport \"./quickComponent.css\";\nimport { isValidURL } from \"../shared/validateURL\";\nimport { addProtocolToValidURL } from \"../shared/addProtocolToValidURL\";\n\n// @deprecated - Quick Components will be removed in a future version\nclass QuickComponentFormBase extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tFSBL.Clients.Logger.deprecated(\n\t\t\t\"Quick Components have been deprecated and will not be available in a future release.\"\n\t\t);\n\t\tthis.state = {\n\t\t\tname: \"\",\n\t\t\turl: \"\",\n\t\t};\n\t\tthis.save = this.save.bind(this);\n\t\tthis.cancel = this.cancel.bind(this);\n\t\tthis.setName = this.setName.bind(this);\n\t\tthis.setURL = this.setURL.bind(this);\n\t\tthis.onkeydown = this.onkeydown.bind(this);\n\t}\n\n\t/**\n\t * Adds eventListeners on keydown, sets the height of the component.\n\t *\n\t * @memberof QuickComponent\n\t */\n\tcomponentDidMount() {\n\t\tFSBL.Clients.WindowClient.fitToDOM();\n\t\tdocument.body.addEventListener(\"keydown\", this.onkeydown);\n\t\tFSBL.Clients.WindowClient.setAlwaysOnTop(true);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tdocument.body.removeEventListener(\"keydown\", this.onkeydown);\n\t}\n\n\t/**\n\t * Matches the enter and escape keys with the corresponding function to invoke.\n\t */\n\tonkeydown = function (e) {\n\t\tif (e.code === \"Enter\" && e.shiftKey === false) {\n\t\t\tthis.save();\n\t\t}\n\n\t\tif (e.code === \"Escape\") {\n\t\t\tthis.cancel();\n\t\t}\n\t};\n\n\t/**\n\t * Hides the window when the save button is clicked.\n\t *\n\t * @memberof QuickComponent\n\t */\n\thideWindow() {\n\t\tfinsembleWindow.hide();\n\t}\n\n\t/**\n\t * Persists the quick component to storage.\n\t * @todo On error, display error message and allow user to try again.\n\t * @memberof QuickComponent\n\t */\n\tsave() {\n\t\tif (!this.state) return FSBL.Clients.DialogManager.respondToOpener({});\n\t\tlet { name } = this.state;\n\t\tlet { url } = this.state;\n\t\tif (!name || !url) return FSBL.Clients.DialogManager.respondToOpener({});\n\n\t\tif (!isValidURL(url)) {\n\t\t\treturn FSBL.Clients.DialogManager.respondToOpener({\n\t\t\t\terror: \"Invalid URL\",\n\t\t\t});\n\t\t}\n\t\tconst urlWithProtocol = addProtocolToValidURL(url);\n\n\t\tFSBL.Clients.LauncherClient.addUserDefinedComponent(\n\t\t\t{\n\t\t\t\tname: name,\n\t\t\t\turl: urlWithProtocol,\n\t\t\t},\n\t\t\t(err, response) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t}\n\t\t\t\t// FSBL.Clients.WindowClient.close(false);\n\t\t\t\tFSBL.Clients.DialogManager.respondToOpener({});\n\t\t\t}\n\t\t);\n\t\tArray.from(document.querySelectorAll(\"input\")).forEach((el) => (el.value = \"\"));\n\t\tthis.setState({\n\t\t\tname: \"\",\n\t\t\turl: \"\",\n\t\t});\n\t}\n\n\t/**\n\t * Kills the window.\n\t * @todo make this component show/hide instead of spawn/close.\n\t * @memberof QuickComponent\n\t */\n\tcancel() {\n\t\tArray.from(document.querySelectorAll(\"input\")).forEach((el) => (el.value = \"\"));\n\n\t\t// FSBL.Clients.WindowClient.close(false);\n\t\tFSBL.Clients.DialogManager.respondToOpener({});\n\t}\n\n\tsetName(e) {\n\t\tthis.setState({ name: e.target.value });\n\t}\n\n\tsetURL(e) {\n\t\tthis.setState({ url: e.target.value });\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<FinsembleDialog\n\t\t\t\tbehaviorOnResponse=\"hide\"\n\t\t\t\tonShowRequested={() => {\n\t\t\t\t\tFSBL.Clients.WindowClient.fitToDOM(null, () => {\n\t\t\t\t\t\tFSBL.Clients.DialogManager.showDialog();\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tisModal={true}\n\t\t\t>\n\t\t\t\t<div className=\"dialog-title\">Enter a name and URL for your app.</div>\n\t\t\t\t<FinsembleDialogTextInput\n\t\t\t\t\tonInputChange={this.setName}\n\t\t\t\t\tplaceholder=\"Name\"\n\t\t\t\t\tautoFocus\n\t\t\t\t\tvalue={this.state.name}\n\t\t\t\t\tfocusOnShow={true}\n\t\t\t\t/>\n\t\t\t\t<FinsembleDialogTextInput onInputChange={this.setURL} placeholder=\"URL\" value={this.state.url} />\n\t\t\t\t<div className=\"button-wrapper\">\n\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.cancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</FinsembleDialogButton>\n\n\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-affirmative\" onClick={this.save}>\n\t\t\t\t\t\tConfirm\n\t\t\t\t\t</FinsembleDialogButton>\n\t\t\t\t</div>\n\t\t\t</FinsembleDialog>\n\t\t);\n\t}\n}\n\n/**\n * A form that allows the user to add a quick component. It provides one field for the name of the quick component, and another field for its URL.\n */\nexport const QuickComponentForm = () => <QuickComponentFormBase />;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/quickComponentForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { QuickComponentForm } from \"./QuickComponentForm\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/quickComponentForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { QuickComponentForm } from \"./QuickComponentForm\";\n"]}
@@ -1,3 +1,3 @@
1
- body {
2
- margin: 0px;
3
- }
1
+ body {
2
+ margin: 0px;
3
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Highlight.js","sourceRoot":"","sources":["../../../src/components/search/Highlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAQhG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAClD,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAC3C,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,EAAE,IAAI,CAAC,EACrC,mCAAmC,CACnC,CAAC;IAEF,OAAO,CACN,8BACC,uBAAuB,EAAE;YACxB,MAAM,EAAE,QAAQ;SAChB,GACM,CACR,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\n\r\nexport type HighlightProps = {\r\n\tmatchAgainst: string;\r\n\ttext: string;\r\n};\r\n\r\n/**\r\n *Sanitize string for HTML to prevent XSS attack\r\n *\r\n * @param {*} str\r\n * @return {*}\r\n */\r\nconst sanitizeHTML = (str: string) => str?.replace(/[^\\w. ]/gi, (c) => `&#${c.charCodeAt(0)};`);\r\n\r\n/**\r\n * Highlights matching areas of a query against a piece of text, and then renders them\r\n * on the screen with a highlighted class. The matching is case insensitive.\r\n * NOTE: This calls dangerouslySetInnerHTML and contains a potential exploit for XSS. Use with caution\r\n * when rendering externally-supplied content.\r\n */\r\nexport const Highlight = (props: HighlightProps) => {\r\n\tconst { matchAgainst, text } = props;\r\n\tconst escapedMatch = matchAgainst.replace(/([\\+\\-\\.\\/\\[\\]\\\\\\*\\?\\)\\{\\}\\|])/, \"\\\\$1\");\r\n\r\n\tconst itemHtml = sanitizeHTML(text)?.replace(\r\n\t\tnew RegExp(`(${escapedMatch})`, \"gi\"),\r\n\t\t`<span class=\"highlight\">$1</span>`\r\n\t);\r\n\r\n\treturn (\r\n\t\t<span\r\n\t\t\tdangerouslySetInnerHTML={{\r\n\t\t\t\t__html: itemHtml,\r\n\t\t\t}}\r\n\t\t></span>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"Highlight.js","sourceRoot":"","sources":["../../../src/components/search/Highlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAQhG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAClD,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAC3C,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,EAAE,IAAI,CAAC,EACrC,mCAAmC,CACnC,CAAC;IAEF,OAAO,CACN,8BACC,uBAAuB,EAAE;YACxB,MAAM,EAAE,QAAQ;SAChB,GACM,CACR,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\n\nexport type HighlightProps = {\n\tmatchAgainst: string;\n\ttext: string;\n};\n\n/**\n *Sanitize string for HTML to prevent XSS attack\n *\n * @param {*} str\n * @return {*}\n */\nconst sanitizeHTML = (str: string) => str?.replace(/[^\\w. ]/gi, (c) => `&#${c.charCodeAt(0)};`);\n\n/**\n * Highlights matching areas of a query against a piece of text, and then renders them\n * on the screen with a highlighted class. The matching is case insensitive.\n * NOTE: This calls dangerouslySetInnerHTML and contains a potential exploit for XSS. Use with caution\n * when rendering externally-supplied content.\n */\nexport const Highlight = (props: HighlightProps) => {\n\tconst { matchAgainst, text } = props;\n\tconst escapedMatch = matchAgainst.replace(/([\\+\\-\\.\\/\\[\\]\\\\\\*\\?\\)\\{\\}\\|])/, \"\\\\$1\");\n\n\tconst itemHtml = sanitizeHTML(text)?.replace(\n\t\tnew RegExp(`(${escapedMatch})`, \"gi\"),\n\t\t`<span class=\"highlight\">$1</span>`\n\t);\n\n\treturn (\n\t\t<span\n\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t__html: itemHtml,\n\t\t\t}}\n\t\t></span>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Highlight.spec.js","sourceRoot":"","sources":["../../../src/components/search/Highlight.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,OAAM,KAAK,CAAC,IAAuB,GAAI,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,WAAW,OAAM,WAAW,CAAC,IAAuB,GAAI,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QACjG,KAAK,CAAC,oBAAC,iBAAiB,OAAM,iBAAiB,CAAC,IAAuB,GAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { mount } from \"enzyme\";\r\nimport { describe, it } from \"mocha\";\r\nimport { expect } from \"chai\";\r\nimport { Start, RegularExpression, NoHighlight } from \"./Highlight.stories\";\r\nimport { HighlightProps } from \"./Highlight\";\r\nimport { enzymeQuerySelectorWrapper } from \"../utils\";\r\n\r\ndescribe(\"<Highlight/>\", () => {\r\n\tit(\"should contain a highlight section if there's a match\", () => {\r\n\t\tconst wrapper = mount(<Start {...(Start.args as HighlightProps)} />);\r\n\t\tconst element = enzymeQuerySelectorWrapper(wrapper, \".highlight\");\r\n\t\texpect(element).to.not.be.null;\r\n\t});\r\n\tit(\"should not contain a highlight section if there's no match\", () => {\r\n\t\tconst wrapper = mount(<NoHighlight {...(NoHighlight.args as HighlightProps)} />);\r\n\t\tconst element = enzymeQuerySelectorWrapper(wrapper, \".highlight\");\r\n\t\texpect(element).to.be.null;\r\n\t});\r\n\tit(\"should not throw an error if an invalid regular expression is used as the match string\", () => {\r\n\t\tmount(<RegularExpression {...(RegularExpression.args as HighlightProps)} />);\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"Highlight.spec.js","sourceRoot":"","sources":["../../../src/components/search/Highlight.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEtD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,OAAM,KAAK,CAAC,IAAuB,GAAI,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,WAAW,OAAM,WAAW,CAAC,IAAuB,GAAI,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QACjG,KAAK,CAAC,oBAAC,iBAAiB,OAAM,iBAAiB,CAAC,IAAuB,GAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { Start, RegularExpression, NoHighlight } from \"./Highlight.stories\";\nimport { HighlightProps } from \"./Highlight\";\nimport { enzymeQuerySelectorWrapper } from \"../utils\";\n\ndescribe(\"<Highlight/>\", () => {\n\tit(\"should contain a highlight section if there's a match\", () => {\n\t\tconst wrapper = mount(<Start {...(Start.args as HighlightProps)} />);\n\t\tconst element = enzymeQuerySelectorWrapper(wrapper, \".highlight\");\n\t\texpect(element).to.not.be.null;\n\t});\n\tit(\"should not contain a highlight section if there's no match\", () => {\n\t\tconst wrapper = mount(<NoHighlight {...(NoHighlight.args as HighlightProps)} />);\n\t\tconst element = enzymeQuerySelectorWrapper(wrapper, \".highlight\");\n\t\texpect(element).to.be.null;\n\t});\n\tit(\"should not throw an error if an invalid regular expression is used as the match string\", () => {\n\t\tmount(<RegularExpression {...(RegularExpression.args as HighlightProps)} />);\n\t});\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Highlight.stories.js","sourceRoot":"","sources":["../../../src/components/search/Highlight.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AACxD,OAAO,6BAA6B,CAAC;AAGrC,eAAe;IACd,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,QAAQ,GAA0B,CAAC,IAAoB,EAAE,EAAE,CAAC,oBAAC,SAAS,OAAK,IAAI,GAAI,CAAC;AAE1F,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,CAAC,IAAI,GAAG;IACZ,YAAY,EAAE,SAAS;IACvB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,YAAY,EAAE,OAAO;IACrB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,CAAC,IAAI,GAAG;IACf,YAAY,EAAE,IAAI;IAClB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD,iBAAiB,CAAC,IAAI,GAAG;IACxB,YAAY,EAAE,GAAG;IACjB,IAAI,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,WAAW,CAAC,IAAI,GAAG;IAClB,YAAY,EAAE,aAAa;IAC3B,IAAI,EAAE,aAAa;CACnB,CAAC","sourcesContent":["import React from \"react\";\r\nimport { Highlight, HighlightProps } from \"./Highlight\";\r\nimport \"../../assets/css/search.css\";\r\nimport { Story } from \"@storybook/react/types-6-0\";\r\n\r\nexport default {\r\n\ttitle: \"Toolbar/Highlight\",\r\n\tcomponent: Highlight,\r\n};\r\n\r\nconst Template: Story<HighlightProps> = (args: HighlightProps) => <Highlight {...args} />;\r\n\r\nexport const Start = Template.bind({});\r\nStart.args = {\r\n\tmatchAgainst: \"Example\",\r\n\ttext: \"Example chart apps\",\r\n};\r\n\r\nexport const MiddleWord = Template.bind({});\r\nMiddleWord.args = {\r\n\tmatchAgainst: \"Chart\",\r\n\ttext: \"Example chart apps\",\r\n};\r\n\r\nexport const MiddleText = Template.bind({});\r\nMiddleText.args = {\r\n\tmatchAgainst: \"amp\",\r\n\ttext: \"Example chart apps\",\r\n};\r\n\r\nexport const LastWord = Template.bind({});\r\nLastWord.args = {\r\n\tmatchAgainst: \"ps\",\r\n\ttext: \"Example chart apps\",\r\n};\r\n\r\nexport const RegularExpression = Template.bind({});\r\nRegularExpression.args = {\r\n\tmatchAgainst: \"+\",\r\n\ttext: \"A+B\",\r\n};\r\n\r\nexport const NoHighlight = Template.bind({});\r\nNoHighlight.args = {\r\n\tmatchAgainst: \"Not Present\",\r\n\ttext: \"Hello World\",\r\n};\r\n"]}
1
+ {"version":3,"file":"Highlight.stories.js","sourceRoot":"","sources":["../../../src/components/search/Highlight.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AACxD,OAAO,6BAA6B,CAAC;AAGrC,eAAe;IACd,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,QAAQ,GAA0B,CAAC,IAAoB,EAAE,EAAE,CAAC,oBAAC,SAAS,OAAK,IAAI,GAAI,CAAC;AAE1F,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,CAAC,IAAI,GAAG;IACZ,YAAY,EAAE,SAAS;IACvB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,YAAY,EAAE,OAAO;IACrB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,CAAC,IAAI,GAAG;IACf,YAAY,EAAE,IAAI;IAClB,IAAI,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD,iBAAiB,CAAC,IAAI,GAAG;IACxB,YAAY,EAAE,GAAG;IACjB,IAAI,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,WAAW,CAAC,IAAI,GAAG;IAClB,YAAY,EAAE,aAAa;IAC3B,IAAI,EAAE,aAAa;CACnB,CAAC","sourcesContent":["import React from \"react\";\nimport { Highlight, HighlightProps } from \"./Highlight\";\nimport \"../../assets/css/search.css\";\nimport { Story } from \"@storybook/react/types-6-0\";\n\nexport default {\n\ttitle: \"Toolbar/Highlight\",\n\tcomponent: Highlight,\n};\n\nconst Template: Story<HighlightProps> = (args: HighlightProps) => <Highlight {...args} />;\n\nexport const Start = Template.bind({});\nStart.args = {\n\tmatchAgainst: \"Example\",\n\ttext: \"Example chart apps\",\n};\n\nexport const MiddleWord = Template.bind({});\nMiddleWord.args = {\n\tmatchAgainst: \"Chart\",\n\ttext: \"Example chart apps\",\n};\n\nexport const MiddleText = Template.bind({});\nMiddleText.args = {\n\tmatchAgainst: \"amp\",\n\ttext: \"Example chart apps\",\n};\n\nexport const LastWord = Template.bind({});\nLastWord.args = {\n\tmatchAgainst: \"ps\",\n\ttext: \"Example chart apps\",\n};\n\nexport const RegularExpression = Template.bind({});\nRegularExpression.args = {\n\tmatchAgainst: \"+\",\n\ttext: \"A+B\",\n};\n\nexport const NoHighlight = Template.bind({});\nNoHighlight.args = {\n\tmatchAgainst: \"Not Present\",\n\ttext: \"Hello World\",\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sourceRoot":"","sources":["../../../src/components/search/Search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,6BAA6B,CAAC;AAErC,MAAM,MAAM,GAAuC,CAAC,EACnD,KAAK,GAAG,GAAG,EACX,SAAS,GAAG,aAAa,EACzB,EAAE,GAAG,YAAY,EACjB,GAAG,UAAU,EACb,EAAE,EAAE;IACJ,MAAM,aAAa,GAAG;QACrB,GAAG,UAAU;QACb,KAAK;QACL,SAAS;QACT,EAAE;QACF,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,2BAAG,SAAS,EAAC,WAAW,GAAK;KACxD,CAAC;IAEF,OAAO,CACN,oBAAC,IAAI,OAAK,aAAa;QACtB,oBAAC,WAAW,OAAG;QACf,oBAAC,aAAa,OAAG,CACX,CACP,CAAC;AACH,CAAC,CAAC;AACF,OAAO,EAAE,MAAM,EAAE,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { Menu } from \"../menu/Menu\";\r\nimport { MenuProps } from \"../menu/Menu\";\r\nimport { SearchResults } from \"./SearchResults\";\r\nimport { SearchInput } from \"./SearchInput\";\r\nimport \"../../assets/css/search.css\";\r\n\r\nconst Search: React.FunctionComponent<MenuProps> = ({\r\n\twidth = 330,\r\n\tclassName = \"search-menu\",\r\n\tid = \"SearchMenu\",\r\n\t...otherProps\r\n}) => {\r\n\tconst completeProps = {\r\n\t\t...otherProps,\r\n\t\twidth,\r\n\t\tclassName,\r\n\t\tid,\r\n\t\ttitle: otherProps.title ?? <i className=\"ff-search\"></i>,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Menu {...completeProps}>\r\n\t\t\t<SearchInput />\r\n\t\t\t<SearchResults />\r\n\t\t</Menu>\r\n\t);\r\n};\r\nexport { Search };\r\n"]}
1
+ {"version":3,"file":"Search.js","sourceRoot":"","sources":["../../../src/components/search/Search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,6BAA6B,CAAC;AAErC,MAAM,MAAM,GAAuC,CAAC,EACnD,KAAK,GAAG,GAAG,EACX,SAAS,GAAG,aAAa,EACzB,EAAE,GAAG,YAAY,EACjB,GAAG,UAAU,EACb,EAAE,EAAE;IACJ,MAAM,aAAa,GAAG;QACrB,GAAG,UAAU;QACb,KAAK;QACL,SAAS;QACT,EAAE;QACF,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,2BAAG,SAAS,EAAC,WAAW,GAAK;KACxD,CAAC;IAEF,OAAO,CACN,oBAAC,IAAI,OAAK,aAAa;QACtB,oBAAC,WAAW,OAAG;QACf,oBAAC,aAAa,OAAG,CACX,CACP,CAAC;AACH,CAAC,CAAC;AACF,OAAO,EAAE,MAAM,EAAE,CAAC","sourcesContent":["import * as React from \"react\";\nimport { Menu } from \"../menu/Menu\";\nimport { MenuProps } from \"../menu/Menu\";\nimport { SearchResults } from \"./SearchResults\";\nimport { SearchInput } from \"./SearchInput\";\nimport \"../../assets/css/search.css\";\n\nconst Search: React.FunctionComponent<MenuProps> = ({\n\twidth = 330,\n\tclassName = \"search-menu\",\n\tid = \"SearchMenu\",\n\t...otherProps\n}) => {\n\tconst completeProps = {\n\t\t...otherProps,\n\t\twidth,\n\t\tclassName,\n\t\tid,\n\t\ttitle: otherProps.title ?? <i className=\"ff-search\"></i>,\n\t};\n\n\treturn (\n\t\t<Menu {...completeProps}>\n\t\t\t<SearchInput />\n\t\t\t<SearchResults />\n\t\t</Menu>\n\t);\n};\nexport { Search };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBestMatch.js","sourceRoot":"","sources":["../../../src/components/search/SearchBestMatch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASlD,MAAM,aAAa,GAAG,CAAC,uBAAwD,EAAE,EAAE;IAClF,IAAI,uBAAuB,EAAE;QAC5B,IAAI,SAAS,GAA4B,IAAI,CAAC;QAC9C,uBAAuB,CAAC,OAAO,CAAC,CAAC,YAAoC,EAAE,EAAE;YACxE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAwB,EAAE,EAAE;gBACxD,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvB,SAAS,GAAG,MAAM,CAAC;iBACnB;qBAAM,IAAI,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE;oBAE1C,SAAS,GAAG,MAAM,CAAC;iBACnB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,CACN;QACC,6BAAK,SAAS,EAAC,cAAc,iBAAiB;QAC9C,oBAAC,YAAY,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAI,CACpF,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { SearchResult } from \"./SearchResult\";\r\nimport { SearchProviderResponse, SearchResultType } from \"../../types/searchTypes\";\r\nimport { useSearch } from \"../../hooks/useSearch\";\r\n\r\n/**\r\n * Iterates through the responses from every search provider\r\n * and returns the item with the highest score.\r\n * Half of the time this makes sense. The other half\r\n * it doesn't make sense. It's all built on Fuse JS and how\r\n * it grades the 'score' of a query to an entity.\r\n */\r\nconst findBestMatch = (searchProviderResponses: SearchProviderResponse[] | null) => {\r\n\tif (searchProviderResponses) {\r\n\t\tlet bestMatch: SearchResultType | null = null;\r\n\t\tsearchProviderResponses.forEach((providerInfo: SearchProviderResponse) => {\r\n\t\t\tproviderInfo?.data?.forEach((result: SearchResultType) => {\r\n\t\t\t\tif (bestMatch === null) {\r\n\t\t\t\t\tbestMatch = result;\r\n\t\t\t\t} else if (result.score < bestMatch.score) {\r\n\t\t\t\t\t// Note, lowest score is best score\r\n\t\t\t\t\tbestMatch = result;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn bestMatch;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\n/**\r\n * Simple component that renders a menu item for the entity that\r\n * best matches the user's query.\r\n */\r\nexport const SearchBestMatch = () => {\r\n\tconst { searchResults, searchQuery, resetSearch } = useSearch();\r\n\tconst bestMatchData = findBestMatch(searchResults);\r\n\tif (!bestMatchData) return null;\r\n\r\n\treturn (\r\n\t\t<div>\r\n\t\t\t<div className=\"search-title\">Best Match</div>\r\n\t\t\t<SearchResult resetSearch={resetSearch} data={bestMatchData} searchQuery={searchQuery} />\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"SearchBestMatch.js","sourceRoot":"","sources":["../../../src/components/search/SearchBestMatch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASlD,MAAM,aAAa,GAAG,CAAC,uBAAwD,EAAE,EAAE;IAClF,IAAI,uBAAuB,EAAE;QAC5B,IAAI,SAAS,GAA4B,IAAI,CAAC;QAC9C,uBAAuB,CAAC,OAAO,CAAC,CAAC,YAAoC,EAAE,EAAE;YACxE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,MAAwB,EAAE,EAAE;gBACxD,IAAI,SAAS,KAAK,IAAI,EAAE;oBACvB,SAAS,GAAG,MAAM,CAAC;iBACnB;qBAAM,IAAI,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE;oBAE1C,SAAS,GAAG,MAAM,CAAC;iBACnB;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;KACjB;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAChE,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO,CACN;QACC,6BAAK,SAAS,EAAC,cAAc,iBAAiB;QAC9C,oBAAC,YAAY,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAI,CACpF,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { SearchResult } from \"./SearchResult\";\nimport { SearchProviderResponse, SearchResultType } from \"../../types/searchTypes\";\nimport { useSearch } from \"../../hooks/useSearch\";\n\n/**\n * Iterates through the responses from every search provider\n * and returns the item with the highest score.\n * Half of the time this makes sense. The other half\n * it doesn't make sense. It's all built on Fuse JS and how\n * it grades the 'score' of a query to an entity.\n */\nconst findBestMatch = (searchProviderResponses: SearchProviderResponse[] | null) => {\n\tif (searchProviderResponses) {\n\t\tlet bestMatch: SearchResultType | null = null;\n\t\tsearchProviderResponses.forEach((providerInfo: SearchProviderResponse) => {\n\t\t\tproviderInfo?.data?.forEach((result: SearchResultType) => {\n\t\t\t\tif (bestMatch === null) {\n\t\t\t\t\tbestMatch = result;\n\t\t\t\t} else if (result.score < bestMatch.score) {\n\t\t\t\t\t// Note, lowest score is best score\n\t\t\t\t\tbestMatch = result;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn bestMatch;\n\t}\n\treturn null;\n};\n\n/**\n * Simple component that renders a menu item for the entity that\n * best matches the user's query.\n */\nexport const SearchBestMatch = () => {\n\tconst { searchResults, searchQuery, resetSearch } = useSearch();\n\tconst bestMatchData = findBestMatch(searchResults);\n\tif (!bestMatchData) return null;\n\n\treturn (\n\t\t<div>\n\t\t\t<div className=\"search-title\">Best Match</div>\n\t\t\t<SearchResult resetSearch={resetSearch} data={bestMatchData} searchQuery={searchQuery} />\n\t\t</div>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.js","sourceRoot":"","sources":["../../../src/components/search/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEpC,MAAM,YAAY,GAAQ,SAAS,EAAE,CAAC;IACtC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEjD,MAAM,oBAAoB,GAAG,GAAG,EAAE;QACjC,WAAW,EAAE,CAAC;QACd,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,CAAsC,EAAE,EAAE;QACpE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAC,oBAAoB;QAClC,6BAAK,SAAS,EAAC,eAAe;YAC7B,8BAAM,SAAS,EAAC,qBAAqB;gBACpC,2BAAG,SAAS,EAAC,WAAW,GAAG,CACrB;YACP,+BACC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,QAAQ,EACpB,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,WAAW,IAAI,EAAE,EACxB,SAAS,QACT,QAAQ,EAAE,iBAAiB,GAC1B;YACD,WAAW,IAAI,CACf,8BAAM,SAAS,EAAC,uCAAuC,EAAC,OAAO,EAAE,oBAAoB;gBACpF,2BAAG,SAAS,EAAC,UAAU,GAAG,CACpB,CACP,CACI,CACD,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { createRef } from \"react\";\r\nimport { useSearch } from \"../../hooks/useSearch\";\r\n\r\n/**\r\n * This is the search input field for the search menu.\r\n * It will trigger calls to the searchMenu via the hook passed in\r\n * through props.\r\n */\r\nexport const SearchInput = () => {\r\n\tconst { searchQuery } = useSearch();\r\n\t// the ref is needed so we can provide focus after clearing the search.\r\n\tconst textInputRef: any = createRef();\r\n\tconst { updateQuery, resetSearch } = useSearch();\r\n\r\n\tconst onClearSearchClicked = () => {\r\n\t\tresetSearch();\r\n\t\ttextInputRef.current.focus();\r\n\t};\r\n\r\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n\t\tupdateQuery(e.target.value);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div className=\"menu-item no-hover\">\r\n\t\t\t<div className=\"menu-item-row\">\r\n\t\t\t\t<span className=\"search-icon-wrapper\">\r\n\t\t\t\t\t<i className=\"ff-search\" />\r\n\t\t\t\t</span>\r\n\t\t\t\t<input\r\n\t\t\t\t\tref={textInputRef}\r\n\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\tplaceholder=\"Search\"\r\n\t\t\t\t\tclassName=\"search-input\"\r\n\t\t\t\t\tvalue={searchQuery || \"\"}\r\n\t\t\t\t\tautoFocus\r\n\t\t\t\t\tonChange={handleInputChange}\r\n\t\t\t\t/>\r\n\t\t\t\t{searchQuery && (\r\n\t\t\t\t\t<span className=\"clear-search menu-item-row-push-right\" onClick={onClearSearchClicked}>\r\n\t\t\t\t\t\t<i className=\"ff-close\" />\r\n\t\t\t\t\t</span>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"SearchInput.js","sourceRoot":"","sources":["../../../src/components/search/SearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEpC,MAAM,YAAY,GAAQ,SAAS,EAAE,CAAC;IACtC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEjD,MAAM,oBAAoB,GAAG,GAAG,EAAE;QACjC,WAAW,EAAE,CAAC;QACd,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,CAAsC,EAAE,EAAE;QACpE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAC,oBAAoB;QAClC,6BAAK,SAAS,EAAC,eAAe;YAC7B,8BAAM,SAAS,EAAC,qBAAqB;gBACpC,2BAAG,SAAS,EAAC,WAAW,GAAG,CACrB;YACP,+BACC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,QAAQ,EACpB,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,WAAW,IAAI,EAAE,EACxB,SAAS,QACT,QAAQ,EAAE,iBAAiB,GAC1B;YACD,WAAW,IAAI,CACf,8BAAM,SAAS,EAAC,uCAAuC,EAAC,OAAO,EAAE,oBAAoB;gBACpF,2BAAG,SAAS,EAAC,UAAU,GAAG,CACpB,CACP,CACI,CACD,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { createRef } from \"react\";\nimport { useSearch } from \"../../hooks/useSearch\";\n\n/**\n * This is the search input field for the search menu.\n * It will trigger calls to the searchMenu via the hook passed in\n * through props.\n */\nexport const SearchInput = () => {\n\tconst { searchQuery } = useSearch();\n\t// the ref is needed so we can provide focus after clearing the search.\n\tconst textInputRef: any = createRef();\n\tconst { updateQuery, resetSearch } = useSearch();\n\n\tconst onClearSearchClicked = () => {\n\t\tresetSearch();\n\t\ttextInputRef.current.focus();\n\t};\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tupdateQuery(e.target.value);\n\t};\n\n\treturn (\n\t\t<div className=\"menu-item no-hover\">\n\t\t\t<div className=\"menu-item-row\">\n\t\t\t\t<span className=\"search-icon-wrapper\">\n\t\t\t\t\t<i className=\"ff-search\" />\n\t\t\t\t</span>\n\t\t\t\t<input\n\t\t\t\t\tref={textInputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\tclassName=\"search-input\"\n\t\t\t\t\tvalue={searchQuery || \"\"}\n\t\t\t\t\tautoFocus\n\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t/>\n\t\t\t\t{searchQuery && (\n\t\t\t\t\t<span className=\"clear-search menu-item-row-push-right\" onClick={onClearSearchClicked}>\n\t\t\t\t\t\t<i className=\"ff-close\" />\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchProviderResults.js","sourceRoot":"","sources":["../../../src/components/search/SearchProviderResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,MAAM,qBAAqB,GAE7B,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC7B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEjD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,WAAW,EAAE,CAAC;IACf,CAAC,CAAC;IAGF,MAAM,eAAe,GAAG,gBAAgB,EAAE,IAAI;QAC7C,EAAE,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1E,WAAW,EAAE,CAAC;QACd,eAAe,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,CACN;QACE,gBAAgB,IAAI,CACpB,6BAAK,SAAS,EAAC,cAAc;YAC3B,gBAAgB,CAAC,QAAQ,CAAC,WAAW;YACrC,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CACjD,6BAAK,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,aAAa;gBACpD,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB;gBAC9C,6BAAK,SAAS,EAAC,iCAAiC,GAAO,CAClD,CACN,CACI,CACN;QACA,eAAe,EAAE,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAS,EAAE,EAAE,CAAC,CACtD,oBAAC,YAAY,IAAC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAI,CACzG,CAAC,CACA,CACH,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { SearchResult } from \"./SearchResult\";\r\nimport { SearchProviderResponse, SearchResultType } from \"../../types/searchTypes\";\r\nimport { useSearch } from \"../../hooks/useSearch\";\r\n\r\nexport const SearchProviderResults: React.FunctionComponent<{\r\n\tproviderResponse: SearchProviderResponse;\r\n}> = ({ providerResponse }) => {\r\n\tconst { searchQuery, resetSearch } = useSearch();\r\n\r\n\tconst clickResetSearch = () => {\r\n\t\tresetSearch();\r\n\t};\r\n\t// Removes empty results then sorts by *lowest* score (search results are retuned from Finsemble where lowest is best)\r\n\t// This uses fuse.js which uses the \"bitap\" algorithm\r\n\tconst providerResults = providerResponse?.data\r\n\t\t?.filter((r: SearchResultType) => r)\r\n\t\t.sort((a: SearchResultType, b: SearchResultType) => a.score - b.score);\r\n\r\n\tconst providerClick = () => {\r\n\t\tFSBL.Clients.SearchClient.invokeProviderAction(providerResponse.provider);\r\n\t\tresetSearch();\r\n\t\tfinsembleWindow.blur();\r\n\t};\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{providerResponse && (\r\n\t\t\t\t<div className=\"search-title\">\r\n\t\t\t\t\t{providerResponse.provider.displayName}\r\n\t\t\t\t\t{providerResponse.provider.providerActionTitle && (\r\n\t\t\t\t\t\t<div className=\"provider-title\" onClick={providerClick}>\r\n\t\t\t\t\t\t\t{providerResponse.provider.providerActionTitle}\r\n\t\t\t\t\t\t\t<div className=\"ff-arrow-right arrow_right_grey\"></div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t\t{providerResults?.map((individualResult, i: number) => (\r\n\t\t\t\t<SearchResult key={i} resetSearch={clickResetSearch} searchQuery={searchQuery} data={individualResult} />\r\n\t\t\t))}\r\n\t\t</>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"SearchProviderResults.js","sourceRoot":"","sources":["../../../src/components/search/SearchProviderResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,MAAM,qBAAqB,GAE7B,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE;IAC7B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAEjD,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,WAAW,EAAE,CAAC;IACf,CAAC,CAAC;IAGF,MAAM,eAAe,GAAG,gBAAgB,EAAE,IAAI;QAC7C,EAAE,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1E,WAAW,EAAE,CAAC;QACd,eAAe,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,CACN;QACE,gBAAgB,IAAI,CACpB,6BAAK,SAAS,EAAC,cAAc;YAC3B,gBAAgB,CAAC,QAAQ,CAAC,WAAW;YACrC,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CACjD,6BAAK,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,aAAa;gBACpD,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB;gBAC9C,6BAAK,SAAS,EAAC,iCAAiC,GAAO,CAClD,CACN,CACI,CACN;QACA,eAAe,EAAE,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAS,EAAE,EAAE,CAAC,CACtD,oBAAC,YAAY,IAAC,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAI,CACzG,CAAC,CACA,CACH,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { SearchResult } from \"./SearchResult\";\nimport { SearchProviderResponse, SearchResultType } from \"../../types/searchTypes\";\nimport { useSearch } from \"../../hooks/useSearch\";\n\nexport const SearchProviderResults: React.FunctionComponent<{\n\tproviderResponse: SearchProviderResponse;\n}> = ({ providerResponse }) => {\n\tconst { searchQuery, resetSearch } = useSearch();\n\n\tconst clickResetSearch = () => {\n\t\tresetSearch();\n\t};\n\t// Removes empty results then sorts by *lowest* score (search results are retuned from Finsemble where lowest is best)\n\t// This uses fuse.js which uses the \"bitap\" algorithm\n\tconst providerResults = providerResponse?.data\n\t\t?.filter((r: SearchResultType) => r)\n\t\t.sort((a: SearchResultType, b: SearchResultType) => a.score - b.score);\n\n\tconst providerClick = () => {\n\t\tFSBL.Clients.SearchClient.invokeProviderAction(providerResponse.provider);\n\t\tresetSearch();\n\t\tfinsembleWindow.blur();\n\t};\n\treturn (\n\t\t<>\n\t\t\t{providerResponse && (\n\t\t\t\t<div className=\"search-title\">\n\t\t\t\t\t{providerResponse.provider.displayName}\n\t\t\t\t\t{providerResponse.provider.providerActionTitle && (\n\t\t\t\t\t\t<div className=\"provider-title\" onClick={providerClick}>\n\t\t\t\t\t\t\t{providerResponse.provider.providerActionTitle}\n\t\t\t\t\t\t\t<div className=\"ff-arrow-right arrow_right_grey\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{providerResults?.map((individualResult, i: number) => (\n\t\t\t\t<SearchResult key={i} resetSearch={clickResetSearch} searchQuery={searchQuery} data={individualResult} />\n\t\t\t))}\n\t\t</>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResult.js","sourceRoot":"","sources":["../../../src/components/search/SearchResult.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAuE,EAAE,EAAE;IACvG,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;IAIlD,MAAM,qBAAqB,GAAG,GAAG,EAAE;QAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,WAAW,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAW,EAAE,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,WAAW,EAAE,CAAC;IACf,CAAC,CAAC;IAGF,IAAI,IAAI,GAAQ;QACf,SAAS,EAAE,UAAU;QACrB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,IAAI,CAAC,IAAI;KACnB,CAAC;IAGF,IAAI,IAAI,CAAC,IAAI,EAAE;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KAC3B;IAED,OAAO,CACN,oBAAC,QAAQ,IAAC,OAAO,EAAE,qBAAqB;QACvC,6BAAK,SAAS,EAAC,eAAe;YAC7B,oBAAC,IAAI,OAAK,IAAI,GAAI;YAClB,oBAAC,SAAS,IAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,IAAI,EAAE,GAAI;YAChE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,6BAAK,SAAS,EAAC,gBAAgB,IAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,CAAS,EAAE,EAAE,CAAC,CAC7C,6BACC,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE;oBAChC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxB,WAAW,EAAE,CAAC;oBACd,eAAe,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC,IAEA,MAAM,CAAC,IAAI,CACP,CACN,CAAC,CACG,CACN,CACI,CACI,CACX,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { MenuItem } from \"../menu/MenuItem\";\r\nimport { Icon } from \"../icon/Icon\";\r\nimport { Highlight } from \"./Highlight\";\r\nimport { SearchQuery } from \"../../types/searchTypes\";\r\nexport const SearchResult = (props: { data: any; searchQuery: SearchQuery; resetSearch: () => void }) => {\r\n\tconst { data, searchQuery, resetSearch } = props;\r\n\r\n\tconst displayName = data.displayName ?? data.name;\r\n\r\n\t// Will trigger the action associated with the item\r\n\t// (e.g., loading a workspace, spawning a component)\r\n\tconst onSearchResultClicked = () => {\r\n\t\tFSBL.Clients.SearchClient.invokeItemAction(data, data.actions[0]);\r\n\t\tresetSearch();\r\n\t};\r\n\r\n\tconst onActionClicked = (action: any) => {\r\n\t\tFSBL.Clients.SearchClient.invokeItemAction(data, action);\r\n\t\tresetSearch();\r\n\t};\r\n\r\n\t// Default icon to be based on initials\r\n\tlet icon: any = {\r\n\t\timageType: \"initials\",\r\n\t\tname: displayName,\r\n\t\tcategory: data.type,\r\n\t};\r\n\r\n\t// If the search results return iconography then use convert and use it\r\n\tif (data.icon) {\r\n\t\ticon.imageType = data.icon.type;\r\n\t\ticon.path = data.icon.path;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<MenuItem onClick={onSearchResultClicked}>\r\n\t\t\t<div className=\"menu-item-row\">\r\n\t\t\t\t<Icon {...icon} />\r\n\t\t\t\t<Highlight text={displayName} matchAgainst={searchQuery || \"\"} />\r\n\t\t\t\t{data.actions.length > 1 && (\r\n\t\t\t\t\t<div className=\"search-actions\">\r\n\t\t\t\t\t\t{data.actions.map((action: any, i: number) => (\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tkey={`actionbtn${i}`}\r\n\t\t\t\t\t\t\t\tclassName=\"search-actions actionButton\"\r\n\t\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\r\n\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\t\t\tonActionClicked(action);\r\n\t\t\t\t\t\t\t\t\tresetSearch();\r\n\t\t\t\t\t\t\t\t\tfinsembleWindow.blur();\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\t{action.name}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t</MenuItem>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"SearchResult.js","sourceRoot":"","sources":["../../../src/components/search/SearchResult.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAuE,EAAE,EAAE;IACvG,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;IAIlD,MAAM,qBAAqB,GAAG,GAAG,EAAE;QAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,WAAW,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAW,EAAE,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,WAAW,EAAE,CAAC;IACf,CAAC,CAAC;IAGF,IAAI,IAAI,GAAQ;QACf,SAAS,EAAE,UAAU;QACrB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,IAAI,CAAC,IAAI;KACnB,CAAC;IAGF,IAAI,IAAI,CAAC,IAAI,EAAE;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KAC3B;IAED,OAAO,CACN,oBAAC,QAAQ,IAAC,OAAO,EAAE,qBAAqB;QACvC,6BAAK,SAAS,EAAC,eAAe;YAC7B,oBAAC,IAAI,OAAK,IAAI,GAAI;YAClB,oBAAC,SAAS,IAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,IAAI,EAAE,GAAI;YAChE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,6BAAK,SAAS,EAAC,gBAAgB,IAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,CAAS,EAAE,EAAE,CAAC,CAC7C,6BACC,GAAG,EAAE,YAAY,CAAC,EAAE,EACpB,SAAS,EAAC,6BAA6B,EACvC,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE;oBAChC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,eAAe,CAAC,MAAM,CAAC,CAAC;oBACxB,WAAW,EAAE,CAAC;oBACd,eAAe,CAAC,IAAI,EAAE,CAAC;gBACxB,CAAC,IAEA,MAAM,CAAC,IAAI,CACP,CACN,CAAC,CACG,CACN,CACI,CACI,CACX,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { MenuItem } from \"../menu/MenuItem\";\nimport { Icon } from \"../icon/Icon\";\nimport { Highlight } from \"./Highlight\";\nimport { SearchQuery } from \"../../types/searchTypes\";\nexport const SearchResult = (props: { data: any; searchQuery: SearchQuery; resetSearch: () => void }) => {\n\tconst { data, searchQuery, resetSearch } = props;\n\n\tconst displayName = data.displayName ?? data.name;\n\n\t// Will trigger the action associated with the item\n\t// (e.g., loading a workspace, spawning a component)\n\tconst onSearchResultClicked = () => {\n\t\tFSBL.Clients.SearchClient.invokeItemAction(data, data.actions[0]);\n\t\tresetSearch();\n\t};\n\n\tconst onActionClicked = (action: any) => {\n\t\tFSBL.Clients.SearchClient.invokeItemAction(data, action);\n\t\tresetSearch();\n\t};\n\n\t// Default icon to be based on initials\n\tlet icon: any = {\n\t\timageType: \"initials\",\n\t\tname: displayName,\n\t\tcategory: data.type,\n\t};\n\n\t// If the search results return iconography then use convert and use it\n\tif (data.icon) {\n\t\ticon.imageType = data.icon.type;\n\t\ticon.path = data.icon.path;\n\t}\n\n\treturn (\n\t\t<MenuItem onClick={onSearchResultClicked}>\n\t\t\t<div className=\"menu-item-row\">\n\t\t\t\t<Icon {...icon} />\n\t\t\t\t<Highlight text={displayName} matchAgainst={searchQuery || \"\"} />\n\t\t\t\t{data.actions.length > 1 && (\n\t\t\t\t\t<div className=\"search-actions\">\n\t\t\t\t\t\t{data.actions.map((action: any, i: number) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={`actionbtn${i}`}\n\t\t\t\t\t\t\t\tclassName=\"search-actions actionButton\"\n\t\t\t\t\t\t\t\tonClick={(e: React.MouseEvent) => {\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tonActionClicked(action);\n\t\t\t\t\t\t\t\t\tresetSearch();\n\t\t\t\t\t\t\t\t\tfinsembleWindow.blur();\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\t{action.name}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</MenuItem>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../src/components/search/SearchResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAA4B,GAAG,EAAE;IAC1D,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAGnD,IAAI,aAAa,EAAE,MAAM,EAAE;QAC1B,OAAO,CAEN,6BAAK,SAAS,EAAC,yBAAyB;YACvC,oBAAC,eAAe,OAAG;YAClB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,oBAAC,qBAAqB,IAAC,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,GAAI,CACtD,CAAC,CACG,CACN,CAAC;KAEF;SAAM;QACN,MAAM,OAAO,GAAG,WAAW,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAE/F,OAAO,6BAAK,SAAS,EAAC,wCAAwC,IAAE,OAAO,CAAO,CAAC;KAC/E;AACF,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { SearchProviderResults } from \"./SearchProviderResults\";\r\nimport { SearchBestMatch } from \"./SearchBestMatch\";\r\nimport { useSearch } from \"../../hooks/useSearch\";\r\nimport \"../../assets/css/menus.css\";\r\n\r\nexport const SearchResults: React.FunctionComponent = () => {\r\n\tconst { searchResults, searchQuery } = useSearch();\r\n\r\n\t// If we had a response from the search client\r\n\tif (searchResults?.length) {\r\n\t\treturn (\r\n\t\t\t// pull out best match into its own component.\r\n\t\t\t<div className=\"search-provider-results\">\r\n\t\t\t\t<SearchBestMatch />\r\n\t\t\t\t{searchResults.map((r, i) => (\r\n\t\t\t\t\t<SearchProviderResults key={i} providerResponse={r} />\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t);\r\n\t\t// If we had no response, but we have a valid searchQuery\r\n\t} else {\r\n\t\tconst message = searchQuery && searchQuery !== \"\" ? \"No results\" : \"Results will display here\";\r\n\r\n\t\treturn <div className=\"menu-item no-hover informational-state\">{message}</div>;\r\n\t}\r\n};\r\n"]}
1
+ {"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../src/components/search/SearchResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAA4B,GAAG,EAAE;IAC1D,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IAGnD,IAAI,aAAa,EAAE,MAAM,EAAE;QAC1B,OAAO,CAEN,6BAAK,SAAS,EAAC,yBAAyB;YACvC,oBAAC,eAAe,OAAG;YAClB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,oBAAC,qBAAqB,IAAC,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,GAAI,CACtD,CAAC,CACG,CACN,CAAC;KAEF;SAAM;QACN,MAAM,OAAO,GAAG,WAAW,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAE/F,OAAO,6BAAK,SAAS,EAAC,wCAAwC,IAAE,OAAO,CAAO,CAAC;KAC/E;AACF,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { SearchProviderResults } from \"./SearchProviderResults\";\nimport { SearchBestMatch } from \"./SearchBestMatch\";\nimport { useSearch } from \"../../hooks/useSearch\";\nimport \"../../assets/css/menus.css\";\n\nexport const SearchResults: React.FunctionComponent = () => {\n\tconst { searchResults, searchQuery } = useSearch();\n\n\t// If we had a response from the search client\n\tif (searchResults?.length) {\n\t\treturn (\n\t\t\t// pull out best match into its own component.\n\t\t\t<div className=\"search-provider-results\">\n\t\t\t\t<SearchBestMatch />\n\t\t\t\t{searchResults.map((r, i) => (\n\t\t\t\t\t<SearchProviderResults key={i} providerResponse={r} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t\t// If we had no response, but we have a valid searchQuery\n\t} else {\n\t\tconst message = searchQuery && searchQuery !== \"\" ? \"No results\" : \"Results will display here\";\n\n\t\treturn <div className=\"menu-item no-hover informational-state\">{message}</div>;\n\t}\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC","sourcesContent":["export { Search } from \"./Search\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC","sourcesContent":["export { Search } from \"./Search\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Animate.js","sourceRoot":"","sources":["../../../src/components/shared/Animate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AActC,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAY;IAE3C,MAAM,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,kBAAkB,GAAG,GAAG,EAAE;QACzB,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,GACD,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAEhD,SAAS,CACR,GAAG,EAAE;QACJ,IAAI,MAAM,GAA0B,IAAI,CAAC;QACzC,IAAI,KAAK,CAAC,eAAe,EAAE;YAC1B,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC,EAAE,eAAe,CAAC,CAAC;SACpB;QAGD,OAAO,GAAG,EAAE;YACX,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/B,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAIpD,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,GAAG,KAAK,UAAU,IAAI,kBAAkB,EAAE,CAAC;IAC5C,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,gBAAgB,IACnD,KAAK,CAAC,QAAQ,CACV,CACN,CAAC;AACH,CAAC","sourcesContent":["import * as React from \"react\";\r\nconst { useState, useEffect } = React;\r\n\r\ninterface Props {\r\n\tchildren?: React.PropsWithChildren<any>;\r\n\tdisplayDuration?: number;\r\n\tanimateIn?: string;\r\n\tanimateOut?: string;\r\n\tanimateOutComplete?: Function;\r\n}\r\n/**\r\n * Animate the child component\r\n * props have default values attached in the component\r\n * @param props\r\n */\r\nexport default function Animate(props: Props) {\r\n\t// provide some defaults to ensure it still works even though it is blank\r\n\tconst {\r\n\t\tanimateIn,\r\n\t\tanimateOut,\r\n\t\tdisplayDuration,\r\n\t\tanimateOutComplete = () => {\r\n\t\t\t(\"\");\r\n\t\t},\r\n\t} = props;\r\n\tconst [css, setCSS] = useState(animateIn || \"\");\r\n\r\n\tuseEffect(\r\n\t\t() => {\r\n\t\t\tlet timer1: null | NodeJS.Timeout = null;\r\n\t\t\tif (props.displayDuration) {\r\n\t\t\t\ttimer1 = setTimeout(() => {\r\n\t\t\t\t\tanimateOut && setCSS(animateOut);\r\n\t\t\t\t}, displayDuration);\r\n\t\t\t}\r\n\r\n\t\t\t// this will clear Timeout when component unmount like in willComponentUnmount\r\n\t\t\treturn () => {\r\n\t\t\t\ttimer1 && clearTimeout(timer1);\r\n\t\t\t\tanimateOut && setCSS(animateOut);\r\n\t\t\t};\r\n\t\t},\r\n\t\t[animateOut, displayDuration, props.displayDuration]\r\n\t\t// eslint-disable-line\r\n\t\t//useEffect will run only one time\r\n\t\t//if you pass a value to array, like this [data] than clearTimeout will run every time this value changes (useEffect re-run)\r\n\t);\r\n\r\n\tconst hideChildElement = () => {\r\n\t\tcss === animateOut && animateOutComplete();\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div className={css} onAnimationEnd={hideChildElement}>\r\n\t\t\t{props.children}\r\n\t\t</div>\r\n\t);\r\n}\r\n"]}
1
+ {"version":3,"file":"Animate.js","sourceRoot":"","sources":["../../../src/components/shared/Animate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AActC,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,KAAY;IAE3C,MAAM,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,kBAAkB,GAAG,GAAG,EAAE;QACzB,CAAC,EAAE,CAAC,CAAC;IACN,CAAC,GACD,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAEhD,SAAS,CACR,GAAG,EAAE;QACJ,IAAI,MAAM,GAA0B,IAAI,CAAC;QACzC,IAAI,KAAK,CAAC,eAAe,EAAE;YAC1B,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC,EAAE,eAAe,CAAC,CAAC;SACpB;QAGD,OAAO,GAAG,EAAE;YACX,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAC/B,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAIpD,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,GAAG,KAAK,UAAU,IAAI,kBAAkB,EAAE,CAAC;IAC5C,CAAC,CAAC;IAEF,OAAO,CACN,6BAAK,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,gBAAgB,IACnD,KAAK,CAAC,QAAQ,CACV,CACN,CAAC;AACH,CAAC","sourcesContent":["import * as React from \"react\";\nconst { useState, useEffect } = React;\n\ninterface Props {\n\tchildren?: React.PropsWithChildren<any>;\n\tdisplayDuration?: number;\n\tanimateIn?: string;\n\tanimateOut?: string;\n\tanimateOutComplete?: Function;\n}\n/**\n * Animate the child component\n * props have default values attached in the component\n * @param props\n */\nexport default function Animate(props: Props) {\n\t// provide some defaults to ensure it still works even though it is blank\n\tconst {\n\t\tanimateIn,\n\t\tanimateOut,\n\t\tdisplayDuration,\n\t\tanimateOutComplete = () => {\n\t\t\t(\"\");\n\t\t},\n\t} = props;\n\tconst [css, setCSS] = useState(animateIn || \"\");\n\n\tuseEffect(\n\t\t() => {\n\t\t\tlet timer1: null | NodeJS.Timeout = null;\n\t\t\tif (props.displayDuration) {\n\t\t\t\ttimer1 = setTimeout(() => {\n\t\t\t\t\tanimateOut && setCSS(animateOut);\n\t\t\t\t}, displayDuration);\n\t\t\t}\n\n\t\t\t// this will clear Timeout when component unmount like in willComponentUnmount\n\t\t\treturn () => {\n\t\t\t\ttimer1 && clearTimeout(timer1);\n\t\t\t\tanimateOut && setCSS(animateOut);\n\t\t\t};\n\t\t},\n\t\t[animateOut, displayDuration, props.displayDuration]\n\t\t// eslint-disable-line\n\t\t//useEffect will run only one time\n\t\t//if you pass a value to array, like this [data] than clearTimeout will run every time this value changes (useEffect re-run)\n\t);\n\n\tconst hideChildElement = () => {\n\t\tcss === animateOut && animateOutComplete();\n\t};\n\n\treturn (\n\t\t<div className={css} onAnimationEnd={hideChildElement}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BellIcon.js","sourceRoot":"","sources":["../../../src/components/shared/BellIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAA4B,GAAG,EAAE,CAAC,CAC/C,6BAAK,SAAS,EAAC,gBAAgB;IAC9B,6BAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,YAAY;QAClF,2BAAG,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;YAChC,2BAAG,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;gBAChC,8BACC,CAAC,EAAC,02BAA02B,EAC52B,SAAS,EAAC,uCAAuC,GAChD,CACC,CACD,CACC,CACD,CACN,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import React from \"react\";\r\n\r\nconst BellIcon: React.FunctionComponent = () => (\r\n\t<div className=\"finsemble-icon\">\r\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"23\" viewBox=\"0 -1 16 20\">\r\n\t\t\t<g fill=\"none\" fillRule=\"evenodd\">\r\n\t\t\t\t<g fill=\"#FFF\" fillRule=\"nonzero\">\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M14.104 13.486c-.06-.057-.06-.057-.06-.115V8.057c0-3.028-2.43-5.543-5.451-5.828V.97C8.593.686 8.356.4 8 .4s-.593.229-.593.571V2.23c-3.081.285-5.451 2.8-5.451 5.828v5.314c0 .058 0 .115-.06.115L.474 14.857c-.237.229-.415.572-.415.914v.4c0 .686.593 1.315 1.363 1.315h4.03C5.63 18.686 6.696 19.6 8 19.6s2.37-.914 2.548-2.114h4.03c.71 0 1.363-.572 1.363-1.315v-.4c0-.342-.119-.685-.415-.914l-1.422-1.371zM8 18.457c-.652 0-1.185-.4-1.363-.971h2.726c-.178.571-.711.971-1.363.971zm6.756-2.228c0 .114-.06.171-.178.171H1.422c-.118 0-.178-.057-.178-.171v-.4c0-.058 0-.115.06-.115l1.422-1.371c.237-.229.415-.572.415-.914V8.114c0-2.628 2.192-4.743 4.918-4.743s4.919 2.115 4.919 4.743v5.315c0 .342.118.685.415.914l1.422 1.371c.06.057.06.057.06.115v.4h-.12zM8.474.17h-.948c-.06 0-.119.058-.119.115v2.171c0 .057.06.114.119.114h.948c.06 0 .119-.057.119-.114V.286c0-.057-.06-.115-.119-.115z\"\r\n\t\t\t\t\t\ttransform=\"translate(-744 -92) translate(744 92)\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</g>\r\n\t\t\t</g>\r\n\t\t</svg>\r\n\t</div>\r\n);\r\n\r\nexport default BellIcon;\r\n"]}
1
+ {"version":3,"file":"BellIcon.js","sourceRoot":"","sources":["../../../src/components/shared/BellIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAA4B,GAAG,EAAE,CAAC,CAC/C,6BAAK,SAAS,EAAC,gBAAgB;IAC9B,6BAAK,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,YAAY;QAClF,2BAAG,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;YAChC,2BAAG,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;gBAChC,8BACC,CAAC,EAAC,02BAA02B,EAC52B,SAAS,EAAC,uCAAuC,GAChD,CACC,CACD,CACC,CACD,CACN,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import React from \"react\";\n\nconst BellIcon: React.FunctionComponent = () => (\n\t<div className=\"finsemble-icon\">\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"23\" viewBox=\"0 -1 16 20\">\n\t\t\t<g fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<g fill=\"#FFF\" fillRule=\"nonzero\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14.104 13.486c-.06-.057-.06-.057-.06-.115V8.057c0-3.028-2.43-5.543-5.451-5.828V.97C8.593.686 8.356.4 8 .4s-.593.229-.593.571V2.23c-3.081.285-5.451 2.8-5.451 5.828v5.314c0 .058 0 .115-.06.115L.474 14.857c-.237.229-.415.572-.415.914v.4c0 .686.593 1.315 1.363 1.315h4.03C5.63 18.686 6.696 19.6 8 19.6s2.37-.914 2.548-2.114h4.03c.71 0 1.363-.572 1.363-1.315v-.4c0-.342-.119-.685-.415-.914l-1.422-1.371zM8 18.457c-.652 0-1.185-.4-1.363-.971h2.726c-.178.571-.711.971-1.363.971zm6.756-2.228c0 .114-.06.171-.178.171H1.422c-.118 0-.178-.057-.178-.171v-.4c0-.058 0-.115.06-.115l1.422-1.371c.237-.229.415-.572.415-.914V8.114c0-2.628 2.192-4.743 4.918-4.743s4.919 2.115 4.919 4.743v5.315c0 .342.118.685.415.914l1.422 1.371c.06.057.06.057.06.115v.4h-.12zM8.474.17h-.948c-.06 0-.119.058-.119.115v2.171c0 .057.06.114.119.114h.948c.06 0 .119-.057.119-.114V.286c0-.057-.06-.115-.119-.115z\"\n\t\t\t\t\t\ttransform=\"translate(-744 -92) translate(744 92)\"\n\t\t\t\t\t/>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</svg>\n\t</div>\n);\n\nexport default BellIcon;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BellIconCrossed.js","sourceRoot":"","sources":["../../../src/components/shared/BellIconCrossed.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAA4B,GAAG,EAAE,CAAC,CACtD,6BAAK,SAAS,EAAC,gBAAgB;IAC9B,6BAAK,OAAO,EAAC,YAAY,EAAC,KAAK,EAAC,4BAA4B;QAC3D,2BAAG,EAAE,EAAC,eAAe,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;YACjF,2BAAG,EAAE,EAAC,OAAO,EAAC,SAAS,EAAC,iCAAiC;gBACxD,2BAAG,SAAS,EAAC,+BAA+B,GAAK;gBACjD,8BACC,CAAC,EAAC,m2BAAm2B,EACr2B,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,GACX;gBACR,8BACC,CAAC,EAAC,4JAA4J,EAC9J,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,GACX,CACL,CACD,CACC,CACD,CACN,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import React from \"react\";\r\n\r\nconst BellIconCrossed: React.FunctionComponent = () => (\r\n\t<div className=\"finsemble-icon\">\r\n\t\t<svg viewBox=\"-1 0 29 34\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t\t<g id=\"--Intensa-ISP\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n\t\t\t\t<g id=\"Group\" transform=\"translate(-0.700000, -0.300000)\">\r\n\t\t\t\t\t<g transform=\"translate(0.700000, 0.300000)\"></g>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M27.1,26.6 L24.7,24.2 C24.6,24.1 24.6,24.1 24.6,24 L24.6,14.7 C24.6,9.4 20.5,5 15.4,4.5 L15.4,2.3 L15.4,1.3 C15.4,1.1 15.3,1 15.1,1 L13.7,1 C13.5,1 13.4,1.1 13.4,1.3 L13.4,2.3 L13.4,4.5 C8.2,5 4.2,9.4 4.2,14.7 L4.2,24 C4.2,24.1 4.2,24.2 4.1,24.2 L1.7,26.6 C1.3,27 1,27.6 1,28.2 L1,28.9 C1,30.1 2,31.2 3.3,31.2 L10.1,31.2 C10.4,33.3 12.2,34.9 14.4,34.9 C16.6,34.9 18.4,33.3 18.7,31.2 L25.5,31.2 C26.7,31.2 27.8,30.2 27.8,28.9 L27.8,28.2 C27.7,27.5 27.5,27 27.1,26.6 Z M14.3,32.8 C13.2,32.8 12.3,32.1 12,31.1 L16.6,31.1 C16.3,32.1 15.4,32.8 14.3,32.8 Z M25.8,28.9 C25.8,29.1 25.7,29.2 25.5,29.2 L3.2,29.2 C3,29.2 2.9,29.1 2.9,28.9 L2.9,28.2 C2.9,28.1 2.9,28 3,28 L5.4,25.6 C5.8,25.2 6.1,24.6 6.1,24 L6.1,14.7 C6.1,10.1 9.8,6.4 14.4,6.4 C19,6.4 22.7,10.1 22.7,14.7 L22.7,24 C22.7,24.6 22.9,25.2 23.4,25.6 L25.8,28 C25.9,28.1 25.9,28.1 25.9,28.2 L25.9,28.9 L25.8,28.9 Z\"\r\n\t\t\t\t\t\tid=\"Shape\"\r\n\t\t\t\t\t\tfill=\"#FFFFFF\"\r\n\t\t\t\t\t\tfillRule=\"nonzero\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M2.2,7.4 L1.1,8.5 C1,8.6 1,8.7 1.1,8.8 L26.2,33.9 C26.3,34 26.4,34 26.5,33.9 L27.6,32.8 C27.7,32.7 27.7,32.6 27.6,32.5 L2.5,7.4 C2.4,7.3 2.3,7.3 2.2,7.4 Z\"\r\n\t\t\t\t\t\tid=\"Path\"\r\n\t\t\t\t\t\tfill=\"#FFFFFF\"\r\n\t\t\t\t\t\tfillRule=\"nonzero\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t</g>\r\n\t\t\t</g>\r\n\t\t</svg>\r\n\t</div>\r\n);\r\n\r\nexport default BellIconCrossed;\r\n"]}
1
+ {"version":3,"file":"BellIconCrossed.js","sourceRoot":"","sources":["../../../src/components/shared/BellIconCrossed.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,eAAe,GAA4B,GAAG,EAAE,CAAC,CACtD,6BAAK,SAAS,EAAC,gBAAgB;IAC9B,6BAAK,OAAO,EAAC,YAAY,EAAC,KAAK,EAAC,4BAA4B;QAC3D,2BAAG,EAAE,EAAC,eAAe,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;YACjF,2BAAG,EAAE,EAAC,OAAO,EAAC,SAAS,EAAC,iCAAiC;gBACxD,2BAAG,SAAS,EAAC,+BAA+B,GAAK;gBACjD,8BACC,CAAC,EAAC,m2BAAm2B,EACr2B,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,GACX;gBACR,8BACC,CAAC,EAAC,4JAA4J,EAC9J,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,GACX,CACL,CACD,CACC,CACD,CACN,CAAC;AAEF,eAAe,eAAe,CAAC","sourcesContent":["import React from \"react\";\n\nconst BellIconCrossed: React.FunctionComponent = () => (\n\t<div className=\"finsemble-icon\">\n\t\t<svg viewBox=\"-1 0 29 34\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<g id=\"--Intensa-ISP\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<g id=\"Group\" transform=\"translate(-0.700000, -0.300000)\">\n\t\t\t\t\t<g transform=\"translate(0.700000, 0.300000)\"></g>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M27.1,26.6 L24.7,24.2 C24.6,24.1 24.6,24.1 24.6,24 L24.6,14.7 C24.6,9.4 20.5,5 15.4,4.5 L15.4,2.3 L15.4,1.3 C15.4,1.1 15.3,1 15.1,1 L13.7,1 C13.5,1 13.4,1.1 13.4,1.3 L13.4,2.3 L13.4,4.5 C8.2,5 4.2,9.4 4.2,14.7 L4.2,24 C4.2,24.1 4.2,24.2 4.1,24.2 L1.7,26.6 C1.3,27 1,27.6 1,28.2 L1,28.9 C1,30.1 2,31.2 3.3,31.2 L10.1,31.2 C10.4,33.3 12.2,34.9 14.4,34.9 C16.6,34.9 18.4,33.3 18.7,31.2 L25.5,31.2 C26.7,31.2 27.8,30.2 27.8,28.9 L27.8,28.2 C27.7,27.5 27.5,27 27.1,26.6 Z M14.3,32.8 C13.2,32.8 12.3,32.1 12,31.1 L16.6,31.1 C16.3,32.1 15.4,32.8 14.3,32.8 Z M25.8,28.9 C25.8,29.1 25.7,29.2 25.5,29.2 L3.2,29.2 C3,29.2 2.9,29.1 2.9,28.9 L2.9,28.2 C2.9,28.1 2.9,28 3,28 L5.4,25.6 C5.8,25.2 6.1,24.6 6.1,24 L6.1,14.7 C6.1,10.1 9.8,6.4 14.4,6.4 C19,6.4 22.7,10.1 22.7,14.7 L22.7,24 C22.7,24.6 22.9,25.2 23.4,25.6 L25.8,28 C25.9,28.1 25.9,28.1 25.9,28.2 L25.9,28.9 L25.8,28.9 Z\"\n\t\t\t\t\t\tid=\"Shape\"\n\t\t\t\t\t\tfill=\"#FFFFFF\"\n\t\t\t\t\t\tfillRule=\"nonzero\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M2.2,7.4 L1.1,8.5 C1,8.6 1,8.7 1.1,8.8 L26.2,33.9 C26.3,34 26.4,34 26.5,33.9 L27.6,32.8 C27.7,32.7 27.7,32.6 27.6,32.5 L2.5,7.4 C2.4,7.3 2.3,7.3 2.2,7.4 Z\"\n\t\t\t\t\t\tid=\"Path\"\n\t\t\t\t\t\tfill=\"#FFFFFF\"\n\t\t\t\t\t\tfillRule=\"nonzero\"\n\t\t\t\t\t></path>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</svg>\n\t</div>\n);\n\nexport default BellIconCrossed;\n"]}