@finsemble/finsemble-ui 6.3.1 → 6.4.0

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 (744) hide show
  1. package/README.md +28 -28
  2. package/package.json +21 -33
  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.d.ts +1 -3
  9. package/react/actions/smartDesktopDesignerActions.js +0 -1
  10. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  11. package/react/actions/toolbarActions.js.map +1 -1
  12. package/react/actions/workspaceActions.js.map +1 -1
  13. package/react/assets/css/advancedAppLauncher.css +636 -636
  14. package/react/assets/css/appCatalog.css +1069 -1069
  15. package/react/assets/css/authentication.css +78 -78
  16. package/react/assets/css/button.css +220 -220
  17. package/react/assets/css/core/formElements.css +23 -23
  18. package/react/assets/css/core/icons.css +69 -69
  19. package/react/assets/css/core/notifications.css +75 -75
  20. package/react/assets/css/core/windowFrame.css +36 -36
  21. package/react/assets/css/dashbar.css +78 -78
  22. package/react/assets/css/defaultTheme.css +356 -356
  23. package/react/assets/css/dialogs.css +158 -158
  24. package/react/assets/css/favorites.css +101 -101
  25. package/react/assets/css/finsemble.css +38 -38
  26. package/react/assets/css/focus.css +4 -4
  27. package/react/assets/css/font-finance.css +385 -385
  28. package/react/assets/css/fonts/Open_Sans/LICENSE.txt +202 -202
  29. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +118 -118
  30. package/react/assets/css/fonts/font-finance.svg +124 -124
  31. package/react/assets/css/fonts/icons-reference.html +1174 -1174
  32. package/react/assets/css/linkerWindow.css +124 -124
  33. package/react/assets/css/menus.css +195 -195
  34. package/react/assets/css/notificationsCenter.css +597 -597
  35. package/react/assets/css/processMonitor.css +213 -213
  36. package/react/assets/css/search.css +128 -128
  37. package/react/assets/css/shared/animations.css +99 -99
  38. package/react/assets/css/tags.css +136 -136
  39. package/react/assets/css/toolbar.css +413 -413
  40. package/react/assets/css/userPreferences.css +538 -568
  41. package/react/assets/css/windowTitleBar.css +653 -652
  42. package/react/assets/icons/always-on-top.svg +20 -0
  43. package/react/assets/icons/caret.svg +7 -0
  44. package/react/assets/icons/check-square.svg +5 -5
  45. package/react/assets/icons/check.svg +3 -3
  46. package/react/assets/icons/chevron-left.svg +3 -3
  47. package/react/assets/icons/chevron-right.svg +3 -3
  48. package/react/assets/icons/close.svg +11 -0
  49. package/react/assets/icons/copy.svg +10 -10
  50. package/react/assets/icons/documentation.svg +20 -0
  51. package/react/assets/icons/exclamation-circle.svg +4 -4
  52. package/react/assets/icons/external-link.svg +12 -12
  53. package/react/assets/icons/flag.svg +10 -10
  54. package/react/assets/icons/folder.svg +3 -3
  55. package/react/assets/icons/font.svg +3 -3
  56. package/react/assets/icons/globe.svg +3 -3
  57. package/react/assets/icons/hdd.svg +9 -9
  58. package/react/assets/icons/key.svg +10 -10
  59. package/react/assets/icons/life-ring.svg +3 -3
  60. package/react/assets/icons/linker.svg +18 -0
  61. package/react/assets/icons/lock.svg +5 -5
  62. package/react/assets/icons/magic.svg +15 -15
  63. package/react/assets/icons/maximize.svg +16 -0
  64. package/react/assets/icons/minimize.svg +15 -0
  65. package/react/assets/icons/moon.svg +10 -10
  66. package/react/assets/icons/paint-roller.svg +3 -3
  67. package/react/assets/icons/pencil.svg +10 -10
  68. package/react/assets/icons/plus.svg +3 -3
  69. package/react/assets/icons/question-circle.svg +5 -5
  70. package/react/assets/icons/search.svg +3 -3
  71. package/react/assets/icons/sun.svg +9 -9
  72. package/react/assets/icons/times.svg +3 -3
  73. package/react/assets/icons/toggle-off.svg +6 -6
  74. package/react/assets/icons/toggle-on.svg +6 -6
  75. package/react/assets/icons/toolbar.svg +12 -0
  76. package/react/assets/icons/tools.svg +3 -3
  77. package/react/assets/icons/trash.svg +12 -12
  78. package/react/assets/icons/upload.svg +10 -10
  79. package/react/assets/icons/window.svg +3 -3
  80. package/react/assets/img/finsemble-display.png +0 -0
  81. package/react/componentTemplateGenerator.js +85 -85
  82. package/react/componentTemplateGenerator.js.map +1 -1
  83. package/react/components/FinsembleProvider.js.map +1 -1
  84. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  85. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  86. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  87. package/react/components/appCatalog/components/AppList.js.map +1 -1
  88. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  89. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  90. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  91. package/react/components/appCatalog/components/Hero.js.map +1 -1
  92. package/react/components/appCatalog/components/Home.js.map +1 -1
  93. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  94. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  95. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  96. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  97. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  98. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  99. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  100. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  101. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  102. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  103. package/react/components/appCatalog/components/Showcase/defaults.js.map +1 -1
  104. package/react/components/appCatalog/components/Tag.js.map +1 -1
  105. package/react/components/appCatalog/components/Toast.js.map +1 -1
  106. package/react/components/appCatalog/components/helpers.js.map +1 -1
  107. package/react/components/appCatalog/index.js.map +1 -1
  108. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  109. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  110. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  111. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  112. package/react/components/common/Accordion.d.ts +11 -0
  113. package/react/components/common/Accordion.js +20 -0
  114. package/react/components/common/Accordion.js.map +1 -0
  115. package/react/components/common/Button.js.map +1 -1
  116. package/react/components/common/ButtonIcon.js.map +1 -1
  117. package/react/components/common/ButtonRow.js.map +1 -1
  118. package/react/components/common/ButtonTile.js.map +1 -1
  119. package/react/components/common/Checkbox.d.ts +1 -0
  120. package/react/components/common/Checkbox.js +3 -1
  121. package/react/components/common/Checkbox.js.map +1 -1
  122. package/react/components/common/ColorPicker.js.map +1 -1
  123. package/react/components/common/DropZone.js.map +1 -1
  124. package/react/components/common/DropdownButton.js.map +1 -1
  125. package/react/components/common/FileInput.d.ts +2 -1
  126. package/react/components/common/FileInput.js +9 -4
  127. package/react/components/common/FileInput.js.map +1 -1
  128. package/react/components/common/FinsembleIcon.d.ts +1 -1
  129. package/react/components/common/FinsembleIcon.js +16 -0
  130. package/react/components/common/FinsembleIcon.js.map +1 -1
  131. package/react/components/common/FinsembleSelect.js.map +1 -1
  132. package/react/components/common/FinsembleToggle.js.map +1 -1
  133. package/react/components/common/Header.js +1 -1
  134. package/react/components/common/Header.js.map +1 -1
  135. package/react/components/common/ImagePreview.js.map +1 -1
  136. package/react/components/common/InputTable.d.ts +11 -0
  137. package/react/components/common/InputTable.js +50 -0
  138. package/react/components/common/InputTable.js.map +1 -0
  139. package/react/components/common/LoadingSpinner.js.map +1 -1
  140. package/react/components/common/Tab.js.map +1 -1
  141. package/react/components/common/Tooltip.js.map +1 -1
  142. package/react/components/common/css/accordion.css +99 -0
  143. package/react/components/common/css/application-edit-page.css +324 -117
  144. package/react/components/common/css/application-list.css +49 -47
  145. package/react/components/common/css/button.css +166 -164
  146. package/react/components/common/css/checkbox.css +30 -0
  147. package/react/components/common/css/color-picker.css +52 -52
  148. package/react/components/common/css/drop-zone.css +17 -17
  149. package/react/components/common/css/file-input.css +65 -49
  150. package/react/components/common/css/header.css +30 -43
  151. package/react/components/common/css/icon.css +13 -13
  152. package/react/components/common/css/image-preview.css +57 -57
  153. package/react/components/common/css/loading-spinner.css +39 -39
  154. package/react/components/common/css/selector.css +51 -51
  155. package/react/components/common/css/styles.css +127 -128
  156. package/react/components/common/css/tab.css +56 -56
  157. package/react/components/common/css/toggle.css +32 -32
  158. package/react/components/common/css/tooltip.css +78 -78
  159. package/react/components/common/file_helpers.js.map +1 -1
  160. package/react/components/common/fixtures/FinsembleIcon.css +4 -4
  161. package/react/components/common/helpers.js.map +1 -1
  162. package/react/components/common/stories/Accordion.stories.d.ts +14 -0
  163. package/react/components/common/stories/Accordion.stories.js +42 -0
  164. package/react/components/common/stories/Accordion.stories.js.map +1 -0
  165. package/react/components/common/stories/Button.stories.js.map +1 -1
  166. package/react/components/common/stories/ButtonIcon.stories.js.map +1 -1
  167. package/react/components/common/stories/ButtonRow.stories.js.map +1 -1
  168. package/react/components/common/stories/ButtonTile.stories.js.map +1 -1
  169. package/react/components/common/stories/Checkbox.stories.js.map +1 -1
  170. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  171. package/react/components/common/stories/DropZone.stories.js.map +1 -1
  172. package/react/components/common/stories/DropdownButton.stories.d.ts +11 -0
  173. package/react/components/common/stories/DropdownButton.stories.js +12 -0
  174. package/react/components/common/stories/DropdownButton.stories.js.map +1 -1
  175. package/react/components/common/stories/FileInput.stories.d.ts +2 -1
  176. package/react/components/common/stories/FileInput.stories.js +6 -0
  177. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  178. package/react/components/common/stories/FinsembleIcon.stories.js +1 -0
  179. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  180. package/react/components/common/stories/FinsembleSelect.stories.js.map +1 -1
  181. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  182. package/react/components/common/stories/Header.stories.js.map +1 -1
  183. package/react/components/common/stories/ImagePreview.stories.js.map +1 -1
  184. package/react/components/common/stories/InputTable.stories.d.ts +12 -0
  185. package/react/components/common/stories/InputTable.stories.js +35 -0
  186. package/react/components/common/stories/InputTable.stories.js.map +1 -0
  187. package/react/components/common/stories/LoadingSpinner.stories.js.map +1 -1
  188. package/react/components/common/stories/Tab.stories.js.map +1 -1
  189. package/react/components/common/stories/Tooltip.stories.js.map +1 -1
  190. package/react/components/{smartDesktopDesigner/tests/ApplicationEdit.spec.d.ts → common/tests/Accordion.spec.d.ts} +0 -0
  191. package/react/components/common/tests/Accordion.spec.js +53 -0
  192. package/react/components/common/tests/Accordion.spec.js.map +1 -0
  193. package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
  194. package/react/components/common/tests/Checkbox.spec.js +5 -3
  195. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  196. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  197. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  198. package/react/components/common/tests/FileInput.spec.js +20 -5
  199. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  200. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  201. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  202. package/react/components/common/tests/Header.spec.js +6 -2
  203. package/react/components/common/tests/Header.spec.js.map +1 -1
  204. package/react/components/common/tests/ImagePreview.spec.js.map +1 -1
  205. package/react/components/{smartDesktopDesigner/tests/ApplicationSetup.spec.d.ts → common/tests/InputTable.spec.d.ts} +0 -0
  206. package/react/components/common/tests/InputTable.spec.js +166 -0
  207. package/react/components/common/tests/InputTable.spec.js.map +1 -0
  208. package/react/components/common/tests/Tab.spec.js.map +1 -1
  209. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  210. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  211. package/react/components/favorites/FavoritesShell.js.map +1 -1
  212. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  213. package/react/components/favorites/FavoritesShell.stories.js.map +1 -1
  214. package/react/components/favorites/index.js.map +1 -1
  215. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  216. package/react/components/fdc3Resolver/ResolverDialog.css +126 -126
  217. package/react/components/fdc3Resolver/ResolverDialog.js +1 -1
  218. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  219. package/react/components/fdc3Resolver/ResolverDialog.spec.js +1 -1
  220. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  221. package/react/components/fdc3Resolver/ResolverDialog.stories.js +13 -0
  222. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  223. package/react/components/icon/Icon.js.map +1 -1
  224. package/react/components/icon/index.js.map +1 -1
  225. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  226. package/react/components/legacyControls/FinsembleDialogButton.js +1 -1
  227. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  228. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  229. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  230. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  231. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  232. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  233. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  234. package/react/components/legacyControls/stories/FinsembleDialog.stories.js.map +1 -1
  235. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js.map +1 -1
  236. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js.map +1 -1
  237. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js.map +1 -1
  238. package/react/components/legacyControls/tests/FinsembleDialog.spec.js.map +1 -1
  239. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  240. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js.map +1 -1
  241. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  242. package/react/components/linker/LinkerMenu.js.map +1 -1
  243. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  244. package/react/components/linker/index.js.map +1 -1
  245. package/react/components/linker/remoteRedux.js.map +1 -1
  246. package/react/components/menu/Menu.d.ts +1 -0
  247. package/react/components/menu/Menu.js.map +1 -1
  248. package/react/components/menu/MenuAutoResizer.d.ts +2 -1
  249. package/react/components/menu/MenuAutoResizer.js +4 -3
  250. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  251. package/react/components/menu/MenuContent.js.map +1 -1
  252. package/react/components/menu/MenuHotKey.js.map +1 -1
  253. package/react/components/menu/MenuItem.js.map +1 -1
  254. package/react/components/menu/MenuPortal.js +99 -92
  255. package/react/components/menu/MenuPortal.js.map +1 -1
  256. package/react/components/menu/MenuShell.d.ts +1 -0
  257. package/react/components/menu/MenuShell.js +3 -2
  258. package/react/components/menu/MenuShell.js.map +1 -1
  259. package/react/components/menu/MenuToggle.js.map +1 -1
  260. package/react/components/menu/index.js.map +1 -1
  261. package/react/components/menu/keyboardNavigation.js.map +1 -1
  262. package/react/components/menu/menuContext.d.ts +1 -0
  263. package/react/components/menu/menuContext.js.map +1 -1
  264. package/react/components/menu/menuHelpers.d.ts +1 -1
  265. package/react/components/menu/menuHelpers.js +2 -2
  266. package/react/components/menu/menuHelpers.js.map +1 -1
  267. package/react/components/notifications/components/NoNotifications.js.map +1 -1
  268. package/react/components/notifications/components/drawer/Drawer.js.map +1 -1
  269. package/react/components/notifications/components/drawer/DrawerControls.js +30 -6
  270. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  271. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  272. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +2 -0
  273. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  274. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +20 -27
  275. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  276. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  277. package/react/components/notifications/components/shared/IconButton.js +5 -1
  278. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  279. package/react/components/notifications/components/shared/NotificationCardShell.js +1 -1
  280. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  281. package/react/components/notifications/components/shared/OverflowMenu.js +5 -1
  282. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  283. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  284. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.js.map +1 -1
  285. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  286. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  287. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.js.map +1 -1
  288. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  289. package/react/components/notifications/components/views/CardView.js.map +1 -1
  290. package/react/components/notifications/components/views/ListView.js +1 -1
  291. package/react/components/notifications/components/views/ListView.js.map +1 -1
  292. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  293. package/react/components/notifications/constants.js.map +1 -1
  294. package/react/components/notifications/icons/Card.js.map +1 -1
  295. package/react/components/notifications/icons/Chevron.js.map +1 -1
  296. package/react/components/notifications/icons/CloseIcon.js.map +1 -1
  297. package/react/components/notifications/icons/EnvelopeClose.js.map +1 -1
  298. package/react/components/notifications/icons/EnvelopeOpen.js.map +1 -1
  299. package/react/components/notifications/icons/SnoozeIcon.js.map +1 -1
  300. package/react/components/notifications/index.js.map +1 -1
  301. package/react/components/notifications/notificationsContext.js.map +1 -1
  302. package/react/components/notifications/types.js.map +1 -1
  303. package/react/components/notifications/utils.js.map +1 -1
  304. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  305. package/react/components/processMonitor/ProcessMonitorTypes.js.map +1 -1
  306. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  307. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  308. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  309. package/react/components/processMonitor/constants.js.map +1 -1
  310. package/react/components/processMonitor/helpers.js.map +1 -1
  311. package/react/components/processMonitor/helpers.spec.js.map +1 -1
  312. package/react/components/processMonitor/index.js.map +1 -1
  313. package/react/components/processMonitor/stores/ProcessMonitorStore.js +49 -49
  314. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  315. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  316. package/react/components/quickComponentForm/index.js.map +1 -1
  317. package/react/components/quickComponentForm/quickComponent.css +3 -3
  318. package/react/components/search/Highlight.js.map +1 -1
  319. package/react/components/search/Highlight.spec.js.map +1 -1
  320. package/react/components/search/Highlight.stories.js.map +1 -1
  321. package/react/components/search/Search.js.map +1 -1
  322. package/react/components/search/SearchBestMatch.js.map +1 -1
  323. package/react/components/search/SearchInput.js.map +1 -1
  324. package/react/components/search/SearchProviderResults.js.map +1 -1
  325. package/react/components/search/SearchResult.js.map +1 -1
  326. package/react/components/search/SearchResults.js.map +1 -1
  327. package/react/components/search/index.js.map +1 -1
  328. package/react/components/shared/Animate.js.map +1 -1
  329. package/react/components/shared/BellIcon.js.map +1 -1
  330. package/react/components/shared/BellIconCrossed.js.map +1 -1
  331. package/react/components/shared/Button.js.map +1 -1
  332. package/react/components/shared/ConditionalWrapper.js.map +1 -1
  333. package/react/components/shared/DefaultDropdownButton.js +1 -1
  334. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  335. package/react/components/shared/NavigationButton.js.map +1 -1
  336. package/react/components/shared/Tag.js.map +1 -1
  337. package/react/components/shared/TagsMenu.js.map +1 -1
  338. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  339. package/react/components/shared/linkerUtil.js.map +1 -1
  340. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  341. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
  342. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  343. package/react/components/shared/validateURL.js.map +1 -1
  344. package/react/components/shared/validateURL.spec.js.map +1 -1
  345. package/react/components/singleInputDialog/SingleInputDialog.css +3 -3
  346. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  347. package/react/components/singleInputDialog/SingleInputDialog.spec.js.map +1 -1
  348. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  349. package/react/components/singleInputDialog/index.js.map +1 -1
  350. package/react/components/smartDesktopDesigner/AddApp.d.ts +14 -0
  351. package/react/components/smartDesktopDesigner/AddApp.js +60 -0
  352. package/react/components/smartDesktopDesigner/AddApp.js.map +1 -0
  353. package/react/components/smartDesktopDesigner/AppEditAccess.js +16 -32
  354. package/react/components/smartDesktopDesigner/AppEditAccess.js.map +1 -1
  355. package/react/components/smartDesktopDesigner/AppEditPage.d.ts +5 -19
  356. package/react/components/smartDesktopDesigner/AppEditPage.js +548 -59
  357. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  358. package/react/components/smartDesktopDesigner/Appearance.css +27 -94
  359. package/react/components/smartDesktopDesigner/Appearance.helpers.js.map +1 -1
  360. package/react/components/smartDesktopDesigner/Appearance.js +1 -1
  361. package/react/components/smartDesktopDesigner/Appearance.js.map +1 -1
  362. package/react/components/smartDesktopDesigner/Application.d.ts +1 -0
  363. package/react/components/smartDesktopDesigner/Application.js +151 -93
  364. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  365. package/react/components/smartDesktopDesigner/ApplicationList.d.ts +2 -1
  366. package/react/components/smartDesktopDesigner/ApplicationList.js +7 -3
  367. package/react/components/smartDesktopDesigner/ApplicationList.js.map +1 -1
  368. package/react/components/smartDesktopDesigner/Applications.d.ts +0 -3
  369. package/react/components/smartDesktopDesigner/Applications.js +52 -102
  370. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  371. package/react/components/smartDesktopDesigner/AssetsPage.css +26 -26
  372. package/react/components/smartDesktopDesigner/AssetsPage.js.map +1 -1
  373. package/react/components/smartDesktopDesigner/Authentication.js +2 -9
  374. package/react/components/smartDesktopDesigner/Authentication.js.map +1 -1
  375. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js +8 -1
  376. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js.map +1 -1
  377. package/react/components/smartDesktopDesigner/Content.js.map +1 -1
  378. package/react/components/smartDesktopDesigner/ContentHeader.d.ts +5 -0
  379. package/react/components/smartDesktopDesigner/ContentHeader.js +10 -0
  380. package/react/components/smartDesktopDesigner/ContentHeader.js.map +1 -0
  381. package/react/components/smartDesktopDesigner/CurrentView.js +2 -1
  382. package/react/components/smartDesktopDesigner/CurrentView.js.map +1 -1
  383. package/react/components/smartDesktopDesigner/Export.d.ts +1 -0
  384. package/react/components/smartDesktopDesigner/Export.js +40 -9
  385. package/react/components/smartDesktopDesigner/Export.js.map +1 -1
  386. package/react/components/smartDesktopDesigner/ExportCloud.d.ts +3 -1
  387. package/react/components/smartDesktopDesigner/ExportCloud.js +4 -6
  388. package/react/components/smartDesktopDesigner/ExportCloud.js.map +1 -1
  389. package/react/components/smartDesktopDesigner/ExportDeployInfo.js.map +1 -1
  390. package/react/components/smartDesktopDesigner/ExportZip.d.ts +3 -1
  391. package/react/components/smartDesktopDesigner/ExportZip.js +8 -3
  392. package/react/components/smartDesktopDesigner/ExportZip.js.map +1 -1
  393. package/react/components/smartDesktopDesigner/GettingStarted.d.ts +1 -0
  394. package/react/components/smartDesktopDesigner/GettingStarted.js +11 -25
  395. package/react/components/smartDesktopDesigner/GettingStarted.js.map +1 -1
  396. package/react/components/smartDesktopDesigner/Navigation.d.ts +2 -2
  397. package/react/components/smartDesktopDesigner/Navigation.js +17 -15
  398. package/react/components/smartDesktopDesigner/Navigation.js.map +1 -1
  399. package/react/components/smartDesktopDesigner/ProjectErrors.js.map +1 -1
  400. package/react/components/smartDesktopDesigner/Publish.js.map +1 -1
  401. package/react/components/smartDesktopDesigner/PublishProgress.js.map +1 -1
  402. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +3 -3
  403. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +11 -17
  404. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  405. package/react/components/smartDesktopDesigner/ThemePage.css +109 -110
  406. package/react/components/smartDesktopDesigner/ThemePage.js +0 -7
  407. package/react/components/smartDesktopDesigner/ThemePage.js.map +1 -1
  408. package/react/components/smartDesktopDesigner/Themes.js +0 -2
  409. package/react/components/smartDesktopDesigner/Themes.js.map +1 -1
  410. package/react/components/smartDesktopDesigner/Toolbar.d.ts +15 -0
  411. package/react/components/smartDesktopDesigner/Toolbar.js +123 -0
  412. package/react/components/smartDesktopDesigner/Toolbar.js.map +1 -0
  413. package/react/components/smartDesktopDesigner/View.js +1 -1
  414. package/react/components/smartDesktopDesigner/View.js.map +1 -1
  415. package/react/components/smartDesktopDesigner/common/fsbl_functions.d.ts +1 -1
  416. package/react/components/smartDesktopDesigner/common/fsbl_functions.js +2 -2
  417. package/react/components/smartDesktopDesigner/common/fsbl_functions.js.map +1 -1
  418. package/react/components/smartDesktopDesigner/common/getCSSVars.js.map +1 -1
  419. package/react/components/smartDesktopDesigner/common/views.d.ts +2 -36
  420. package/react/components/smartDesktopDesigner/common/views.js +150 -111
  421. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  422. package/react/components/smartDesktopDesigner/css/appearance.css +18 -10
  423. package/react/components/smartDesktopDesigner/css/applications.css +167 -127
  424. package/react/components/smartDesktopDesigner/css/authentication.css +119 -125
  425. package/react/components/smartDesktopDesigner/css/buttons.css +12 -12
  426. package/react/components/smartDesktopDesigner/css/export.css +176 -163
  427. package/react/components/smartDesktopDesigner/css/getting-started.css +28 -6
  428. package/react/components/smartDesktopDesigner/css/nav.css +120 -93
  429. package/react/components/smartDesktopDesigner/css/project-errors.css +15 -15
  430. package/react/components/smartDesktopDesigner/css/project-header.css +124 -121
  431. package/react/components/smartDesktopDesigner/css/styles.css +178 -179
  432. package/react/components/smartDesktopDesigner/css/views.css +23 -16
  433. package/react/components/smartDesktopDesigner/fixtures/apps.d.ts +2 -0
  434. package/react/components/smartDesktopDesigner/fixtures/apps.js +41 -6
  435. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  436. package/react/components/smartDesktopDesigner/fixtures/authenticationProps.js.map +1 -1
  437. package/react/components/smartDesktopDesigner/fixtures/configTemplate.js.map +1 -1
  438. package/react/components/smartDesktopDesigner/fixtures/exportProps.js +3 -0
  439. package/react/components/smartDesktopDesigner/fixtures/exportProps.js.map +1 -1
  440. package/react/components/smartDesktopDesigner/fixtures/projectErrorsProps.js.map +1 -1
  441. package/react/components/smartDesktopDesigner/fixtures/publishProgress.js.map +1 -1
  442. package/react/components/smartDesktopDesigner/fixtures/themeProps.js.map +1 -1
  443. package/react/components/smartDesktopDesigner/fixtures/views.d.ts +2 -2
  444. package/react/components/smartDesktopDesigner/fixtures/views.js +58 -26
  445. package/react/components/smartDesktopDesigner/fixtures/views.js.map +1 -1
  446. package/react/components/smartDesktopDesigner/sdd_helpers.d.ts +1 -1
  447. package/react/components/smartDesktopDesigner/sdd_helpers.js +4 -3
  448. package/react/components/smartDesktopDesigner/sdd_helpers.js.map +1 -1
  449. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.d.ts +3 -1
  450. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js +12 -33
  451. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  452. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js.map +1 -1
  453. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.d.ts +2 -1
  454. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js +8 -1
  455. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js.map +1 -1
  456. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  457. package/react/components/smartDesktopDesigner/stories/AssetsPage.stories.js.map +1 -1
  458. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js.map +1 -1
  459. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.d.ts +10 -0
  460. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.js +13 -0
  461. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.js.map +1 -0
  462. package/react/components/smartDesktopDesigner/stories/Export.stories.js.map +1 -1
  463. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.d.ts +1 -1
  464. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js +1 -1
  465. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js.map +1 -1
  466. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.d.ts +1 -1
  467. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js +1 -1
  468. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js.map +1 -1
  469. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js.map +1 -1
  470. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js.map +1 -1
  471. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js.map +1 -1
  472. package/react/components/smartDesktopDesigner/stories/Publish.stories.js.map +1 -1
  473. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js.map +1 -1
  474. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js +7 -1
  475. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js.map +1 -1
  476. package/react/components/smartDesktopDesigner/stories/ThemePage.stories.js.map +1 -1
  477. package/react/components/smartDesktopDesigner/stories/Themes.stories.js.map +1 -1
  478. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.d.ts +14 -0
  479. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.js +38 -0
  480. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.js.map +1 -0
  481. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js +73 -122
  482. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  483. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js.map +1 -1
  484. package/react/components/smartDesktopDesigner/tests/Applications.spec.d.ts +1 -1
  485. package/react/components/smartDesktopDesigner/tests/Applications.spec.js +61 -560
  486. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  487. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js.map +1 -1
  488. package/react/components/smartDesktopDesigner/tests/{ProjectHeader.spec.d.ts → ContentHeader.spec.d.ts} +0 -0
  489. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.js +31 -0
  490. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.js.map +1 -0
  491. package/react/components/smartDesktopDesigner/tests/Export.spec.js +129 -0
  492. package/react/components/smartDesktopDesigner/tests/Export.spec.js.map +1 -1
  493. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js +7 -0
  494. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js.map +1 -1
  495. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js.map +1 -1
  496. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js +3 -14
  497. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js.map +1 -1
  498. package/react/components/smartDesktopDesigner/tests/Publish.spec.js.map +1 -1
  499. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js.map +1 -1
  500. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js +2 -31
  501. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js.map +1 -1
  502. package/react/components/smartDesktopDesigner/tests/Themes.spec.js.map +1 -1
  503. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.d.ts +1 -0
  504. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.js +203 -0
  505. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.js.map +1 -0
  506. package/react/components/smartDesktopDesigner/tests/a11y_helper.js.map +1 -1
  507. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.d.ts +1 -0
  508. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.js +18 -0
  509. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.js.map +1 -0
  510. package/react/components/smartDesktopDesigner/themeDefinitions.js.map +1 -1
  511. package/react/components/system/System.js.map +1 -1
  512. package/react/components/system/System.spec.js.map +1 -1
  513. package/react/components/system/System.stories.js.map +1 -1
  514. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  515. package/react/components/system/index.js.map +1 -1
  516. package/react/components/toolbar/AutoArrange.js.map +1 -1
  517. package/react/components/toolbar/DragHandle.js.map +1 -1
  518. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  519. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  520. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  521. package/react/components/toolbar/NotificationControl.js.map +1 -1
  522. package/react/components/toolbar/RevealAll.js.map +1 -1
  523. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  524. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  525. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  526. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  527. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  528. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  529. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  530. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  531. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  532. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  533. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  534. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js.map +1 -1
  535. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  536. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  537. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +47 -45
  538. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  539. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  540. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js.map +1 -1
  541. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  542. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js.map +1 -1
  543. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js.map +1 -1
  544. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  545. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  546. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  547. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  548. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js.map +1 -1
  549. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  550. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  551. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  552. package/react/components/toolbar/appLauncher/DynamicAppLauncher.js.map +1 -1
  553. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +1 -0
  554. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  555. package/react/components/toolbar/appLauncher/appLauncher.css +30 -30
  556. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  557. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +1 -0
  558. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +17 -34
  559. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  560. package/react/components/toolbar/dashbar/Dashbar.js +3 -1
  561. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  562. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  563. package/react/components/toolbar/index.js.map +1 -1
  564. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +1 -1
  565. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  566. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +1 -1
  567. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  568. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  569. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +1 -1
  570. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  571. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +1 -1
  572. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  573. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +90 -90
  574. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  575. package/react/components/userPreferences/UserPreferenceTypes.js.map +1 -1
  576. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  577. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  578. package/react/components/userPreferences/UserPreferencesWrapper.js.map +1 -1
  579. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  580. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  581. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  582. package/react/components/userPreferences/components/content/DashbarEditorItem.js.map +1 -1
  583. package/react/components/userPreferences/components/content/General.js.map +1 -1
  584. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  585. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  586. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  587. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  588. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  589. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  590. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  591. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  592. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js.map +1 -1
  593. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  594. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js.map +1 -1
  595. package/react/components/userPreferences/index.js.map +1 -1
  596. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  597. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  598. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js.map +1 -1
  599. package/react/components/userPreferences/stories/General.stories.js.map +1 -1
  600. package/react/components/userPreferences/stories/Notifications.stories.js.map +1 -1
  601. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js.map +1 -1
  602. package/react/components/userPreferences/stories/NotificationsSources.stories.js.map +1 -1
  603. package/react/components/userPreferences/stories/UserPreferences.stories.js.map +1 -1
  604. package/react/components/userPreferences/stories/WorkspaceButton.stories.js.map +1 -1
  605. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js.map +1 -1
  606. package/react/components/userPreferences/stories/WorkspaceItem.stories.js.map +1 -1
  607. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js.map +1 -1
  608. package/react/components/userPreferences/stories/Workspaces.stories.js.map +1 -1
  609. package/react/components/userPreferences/tests/ContentSection.spec.js.map +1 -1
  610. package/react/components/userPreferences/tests/DashbarEditor.spec.js.map +1 -1
  611. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js.map +1 -1
  612. package/react/components/userPreferences/tests/General.spec.js.map +1 -1
  613. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -1
  614. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js.map +1 -1
  615. package/react/components/userPreferences/tests/Notifications.spec.js.map +1 -1
  616. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  617. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js.map +1 -1
  618. package/react/components/userPreferences/tests/ScheduledRestart.spec.js +1 -1
  619. package/react/components/userPreferences/tests/ScheduledRestart.spec.js.map +1 -1
  620. package/react/components/userPreferences/tests/WorkspaceButton.spec.js.map +1 -1
  621. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js.map +1 -1
  622. package/react/components/userPreferences/tests/WorkspaceItem.spec.js.map +1 -1
  623. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js.map +1 -1
  624. package/react/components/utils.js.map +1 -1
  625. package/react/components/windowTitleBar/WindowTitleBarShell.js +8 -1
  626. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  627. package/react/components/windowTitleBar/components/center/Tab.d.ts +0 -1
  628. package/react/components/windowTitleBar/components/center/Tab.js +2 -2
  629. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  630. package/react/components/windowTitleBar/components/center/TabList.d.ts +0 -1
  631. package/react/components/windowTitleBar/components/center/TabList.js +16 -79
  632. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  633. package/react/components/windowTitleBar/components/center/TabRegion.js.map +1 -1
  634. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  635. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  636. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  637. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  638. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  639. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  640. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  641. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  642. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +7 -0
  643. package/react/components/windowTitleBar/components/right/MaximizeButton.js +11 -1
  644. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  645. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  646. package/react/components/windowTitleBar/components/windowTitle.d.ts +6 -5
  647. package/react/components/windowTitleBar/components/windowTitle.js +143 -35
  648. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  649. package/react/components/windowTitleBar/index.js.map +1 -1
  650. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +5 -1
  651. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  652. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +1 -1
  653. package/react/components/windowTitleBar/windowTitleBarContext.js.map +1 -1
  654. package/react/components/yesNoDialog/Timer.spec.js.map +1 -1
  655. package/react/components/yesNoDialog/Timer.stories.js.map +1 -1
  656. package/react/components/yesNoDialog/YesNoDialog.css +3 -3
  657. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  658. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  659. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  660. package/react/components/yesNoDialog/index.js.map +1 -1
  661. package/react/components/yesNoDialog/timer.js.map +1 -1
  662. package/react/enzymeSetup.js +1 -1
  663. package/react/enzymeSetup.js.map +1 -1
  664. package/react/hooks/index.js.map +1 -1
  665. package/react/hooks/useAuth.js.map +1 -1
  666. package/react/hooks/useDashbar.d.ts +8 -0
  667. package/react/hooks/useDashbar.js +104 -0
  668. package/react/hooks/useDashbar.js.map +1 -0
  669. package/react/hooks/useDeepEffect.js.map +1 -1
  670. package/react/hooks/useFavorites.js.map +1 -1
  671. package/react/hooks/useFavoritesShell.js.map +1 -1
  672. package/react/hooks/useHotkey.js.map +1 -1
  673. package/react/hooks/useLinker.js.map +1 -1
  674. package/react/hooks/useMenu.js.map +1 -1
  675. package/react/hooks/useNotifications.js.map +1 -1
  676. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  677. package/react/hooks/usePubSub.js.map +1 -1
  678. package/react/hooks/useSearch.js.map +1 -1
  679. package/react/hooks/useToolbar.d.ts +0 -6
  680. package/react/hooks/useToolbar.js +0 -101
  681. package/react/hooks/useToolbar.js.map +1 -1
  682. package/react/hooks/useWorkspace.js.map +1 -1
  683. package/react/reducers/favoriteReducer.js.map +1 -1
  684. package/react/reducers/linkerReducer.js.map +1 -1
  685. package/react/reducers/menuReducer.js.map +1 -1
  686. package/react/reducers/rootReducer.d.ts +0 -4
  687. package/react/reducers/rootReducer.js.map +1 -1
  688. package/react/reducers/searchReducer.js.map +1 -1
  689. package/react/reducers/smartDesktopDesignerReducer.js +0 -3
  690. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  691. package/react/reducers/toolbarReducer.js.map +1 -1
  692. package/react/reducers/workspaceReducer.js.map +1 -1
  693. package/react/store.d.ts +0 -8
  694. package/react/store.js.map +1 -1
  695. package/react/types/advancedAppLauncherTypes.js.map +1 -1
  696. package/react/types/dashbarTypes.js.map +1 -1
  697. package/react/types/favoriteTypes.js.map +1 -1
  698. package/react/types/fdc3.d.ts +7 -35
  699. package/react/types/fdc3.js.map +1 -1
  700. package/react/types/hotkeyTypes.js.map +1 -1
  701. package/react/types/iconTypes.js.map +1 -1
  702. package/react/types/linkerTypes.js.map +1 -1
  703. package/react/types/searchTypes.js.map +1 -1
  704. package/react/types/smartDesktopDesignerTypes.d.ts +45 -5
  705. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  706. package/react/types/windowTitleBar.d.ts +4 -2
  707. package/react/types/windowTitleBar.js.map +1 -1
  708. package/react/types/workspaceTypes.js.map +1 -1
  709. package/react/components/common/FontSizeSelector.d.ts +0 -7
  710. package/react/components/common/FontSizeSelector.js +0 -42
  711. package/react/components/common/FontSizeSelector.js.map +0 -1
  712. package/react/components/common/stories/FontSizeSelector.stories.d.ts +0 -12
  713. package/react/components/common/stories/FontSizeSelector.stories.js +0 -24
  714. package/react/components/common/stories/FontSizeSelector.stories.js.map +0 -1
  715. package/react/components/smartDesktopDesigner/ApplicationEdit.d.ts +0 -25
  716. package/react/components/smartDesktopDesigner/ApplicationEdit.js +0 -103
  717. package/react/components/smartDesktopDesigner/ApplicationEdit.js.map +0 -1
  718. package/react/components/smartDesktopDesigner/ApplicationSetup.d.ts +0 -23
  719. package/react/components/smartDesktopDesigner/ApplicationSetup.js +0 -73
  720. package/react/components/smartDesktopDesigner/ApplicationSetup.js.map +0 -1
  721. package/react/components/smartDesktopDesigner/ProjectHeader.d.ts +0 -14
  722. package/react/components/smartDesktopDesigner/ProjectHeader.js +0 -70
  723. package/react/components/smartDesktopDesigner/ProjectHeader.js.map +0 -1
  724. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.d.ts +0 -4
  725. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js +0 -45
  726. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js.map +0 -1
  727. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.d.ts +0 -3
  728. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js +0 -29
  729. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js.map +0 -1
  730. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.d.ts +0 -12
  731. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js +0 -21
  732. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js.map +0 -1
  733. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.d.ts +0 -12
  734. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js +0 -28
  735. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js.map +0 -1
  736. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.d.ts +0 -10
  737. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js +0 -19
  738. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js.map +0 -1
  739. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js +0 -66
  740. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js.map +0 -1
  741. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js +0 -41
  742. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js.map +0 -1
  743. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js +0 -27
  744. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessMonitor.js","sourceRoot":"","sources":["../../../src/components/processMonitor/ProcessMonitor.tsx"],"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 ChildWindow from \"./components/ChildWindow\";\r\nimport { EMPTY_TOTALS, SIMPLE_MODE_STATISTICS, ADVANCED_MODE_STATISTICS } from \"./constants.js\";\r\nimport { statReducer, roundDecimalToPrecision, bytesToSize } from \"./helpers.js\";\r\nimport \"../../assets/css/processMonitor.css\";\r\nimport { ProcessType, ViewModeEnums, ChildWindowType } from \"./ProcessMonitorTypes\";\r\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\r\n\r\nimport FloatingFocus from \"@q42/floating-focus-a11y\";\r\n// The package FloatingFocus injects a focus indicator that moves around the page, but only for\r\n// keyboard users. (Mouse users don't see the indicator.) All that needs to be done is to envoke it.\r\nnew FloatingFocus();\r\n\r\ninterface IProps {}\r\ninterface IState {\r\n\tprocessList: ProcessType[];\r\n\tviewMode: ViewModeEnums;\r\n}\r\nclass ProcessMonitorBase extends React.Component<IProps, IState> {\r\n\tconstructor(props: {}) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tprocessList: [],\r\n\t\t\tviewMode: ViewModeEnums.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 */\r\n\tonViewModeChanged(err: StandardError, response: { value: ViewModeEnums }) {\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 */\r\n\tonProcessListChanged(err: StandardError, response: { value: ProcessType[] }) {\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// View modes are:\r\n\t\t// * Simple - Top-level views, showing stats: CPU, Memory\r\n\t\t// * Advanced - Expanded processes, showing stats: CPU, Memory, Peak Memory, PID\r\n\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\tconst 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\r\n\t\t\t\t\t\tfields={this.state.viewMode === ViewModeEnums.SIMPLE ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS}\r\n\t\t\t\t\t/>\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={\r\n\t\t\t\t\t\t\t\t\t\t\tthis.state.viewMode === ViewModeEnums.SIMPLE ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS\r\n\t\t\t\t\t\t\t\t\t\t}\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{proc.childWindows?.map((cw: ChildWindowType, j: number) => (\r\n\t\t\t\t\t\t\t\t\t\t<ChildWindow key={j} viewMode={this.state.viewMode} cw={cw} />\r\n\t\t\t\t\t\t\t\t\t))}\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\">{`${roundDecimalToPrecision(\r\n\t\t\t\t\t\t\t\t\t\ttotals.statistics.cpuUsage,\r\n\t\t\t\t\t\t\t\t\t\t2\r\n\t\t\t\t\t\t\t\t\t)}%`}</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\ttabIndex={0}\r\n\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\r\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\t\t\t\t\tActions.toggleViewMode();\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\t{this.state.viewMode === ViewModeEnums.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.tsx"],"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 ChildWindow from \"./components/ChildWindow\";\nimport { EMPTY_TOTALS, SIMPLE_MODE_STATISTICS, ADVANCED_MODE_STATISTICS } from \"./constants.js\";\nimport { statReducer, roundDecimalToPrecision, bytesToSize } from \"./helpers.js\";\nimport \"../../assets/css/processMonitor.css\";\nimport { ProcessType, ViewModeEnums, ChildWindowType } from \"./ProcessMonitorTypes\";\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\n\nimport FloatingFocus from \"@q42/floating-focus-a11y\";\n// The package FloatingFocus injects a focus indicator that moves around the page, but only for\n// keyboard users. (Mouse users don't see the indicator.) All that needs to be done is to envoke it.\nnew FloatingFocus();\n\ninterface IProps {}\ninterface IState {\n\tprocessList: ProcessType[];\n\tviewMode: ViewModeEnums;\n}\nclass ProcessMonitorBase extends React.Component<IProps, IState> {\n\tconstructor(props: {}) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tprocessList: [],\n\t\t\tviewMode: ViewModeEnums.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 */\n\tonViewModeChanged(err: StandardError, response: { value: ViewModeEnums }) {\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 */\n\tonProcessListChanged(err: StandardError, response: { value: ProcessType[] }) {\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// View modes are:\n\t\t// * Simple - Top-level views, showing stats: CPU, Memory\n\t\t// * Advanced - Expanded processes, showing stats: CPU, Memory, Peak Memory, PID\n\n\t\t// statReducer is an array.reduce function that will sum all of the CPU/memory usage across the app.\n\t\tconst 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\n\t\t\t\t\t\tfields={this.state.viewMode === ViewModeEnums.SIMPLE ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS}\n\t\t\t\t\t/>\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={\n\t\t\t\t\t\t\t\t\t\t\tthis.state.viewMode === ViewModeEnums.SIMPLE ? SIMPLE_MODE_STATISTICS : ADVANCED_MODE_STATISTICS\n\t\t\t\t\t\t\t\t\t\t}\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{proc.childWindows?.map((cw: ChildWindowType, j: number) => (\n\t\t\t\t\t\t\t\t\t\t<ChildWindow key={j} viewMode={this.state.viewMode} cw={cw} />\n\t\t\t\t\t\t\t\t\t))}\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\">{`${roundDecimalToPrecision(\n\t\t\t\t\t\t\t\t\t\ttotals.statistics.cpuUsage,\n\t\t\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t\t\t)}%`}</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\ttabIndex={0}\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\tActions.toggleViewMode();\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\t{this.state.viewMode === ViewModeEnums.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":"ProcessMonitorTypes.js","sourceRoot":"","sources":["../../../src/components/processMonitor/ProcessMonitorTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACxB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACtB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB","sourcesContent":["export enum ViewModeEnums {\r\n\tSIMPLE = \"simple\",\r\n\tADVANCED = \"advanced\",\r\n}\r\n\r\nexport type ModeStatsType = {\r\n\tlabel: string;\r\n\tvalue: \"cpuUsage\" | \"workingSetSize\" | \"peakWorkingSetSize\" | \"processId\";\r\n};\r\n\r\nexport type ProcessStatisticsType = {\r\n\tstatistics: {\r\n\t\tcpuUsage?: number;\r\n\t\tworkingSetSize?: number;\r\n\t\tpeakWorkingSetSize?: number;\r\n\t\tprocessId?: number;\r\n\t\tname?: string;\r\n\t\ttype?: string;\r\n\t\tuuid?: string;\r\n\t};\r\n};\r\nexport type ProcessType = {\r\n\tvisible: boolean;\r\n\ttype?: string;\r\n\tchildWindows?: ChildWindowType[];\r\n} & ProcessStatisticsType;\r\n\r\nexport type ChildWindowType = {\r\n\ttype: string;\r\n\tname: string;\r\n\tuuid?: string;\r\n};\r\n\r\nexport type SortObjectType = {\r\n\tfield: keyof ProcessStatisticsType[\"statistics\"];\r\n\tdirection: \"ascending\" | \"descending\";\r\n};\r\n"]}
1
+ {"version":3,"file":"ProcessMonitorTypes.js","sourceRoot":"","sources":["../../../src/components/processMonitor/ProcessMonitorTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACxB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;AACtB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB","sourcesContent":["export enum ViewModeEnums {\n\tSIMPLE = \"simple\",\n\tADVANCED = \"advanced\",\n}\n\nexport type ModeStatsType = {\n\tlabel: string;\n\tvalue: \"cpuUsage\" | \"workingSetSize\" | \"peakWorkingSetSize\" | \"processId\";\n};\n\nexport type ProcessStatisticsType = {\n\tstatistics: {\n\t\tcpuUsage?: number;\n\t\tworkingSetSize?: number;\n\t\tpeakWorkingSetSize?: number;\n\t\tprocessId?: number;\n\t\tname?: string;\n\t\ttype?: string;\n\t\tuuid?: string;\n\t};\n};\nexport type ProcessType = {\n\tvisible: boolean;\n\ttype?: string;\n\tchildWindows?: ChildWindowType[];\n} & ProcessStatisticsType;\n\nexport type ChildWindowType = {\n\ttype: string;\n\tname: string;\n\tuuid?: string;\n};\n\nexport type SortObjectType = {\n\tfield: keyof ProcessStatisticsType[\"statistics\"];\n\tdirection: \"ascending\" | \"descending\";\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChildWindow.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ChildWindow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAUxD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAiB;IAC/D,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACL,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAGpC,MAAM,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACpC,MAAM,oBAAoB,GAAG,GAAG,EAAE;YACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAkB,EAAE,UAAmB,EAAE,EAAE;gBACpE,IAAI,GAAG,EAAE;oBACR,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;iBACtE;gBAGD,IAAI,CAAC,UAAU,EAAE;oBAChB,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;iBAC3B;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,QAAQ,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAErG,MAAM,kBAAkB,GAAG,gBAAgB,QAAQ,EAAE,CAAC;QACtD,OAAO,CACN,6BAAK,SAAS,EAAE,kBAAkB;YACjC,6BAAK,SAAS,EAAC,sBAAsB,IACnC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAC7E,2BACC,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,GAAG,EAAE;oBACb,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;oBAC1B,IAAI,IAAI,EAAE;wBACT,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBACpC;gBACF,CAAC,EACD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,CAAsB,EAAE,EAAE;oBACrC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;wBACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;wBAC1B,IAAI,IAAI,EAAE;4BACT,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;yBACpC;qBACD;gBACF,CAAC,GACG,CACL,CACI;YACN,6BAAK,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,cAAc,IACxD,EAAE,CAAC,IAAI,CACH,CACD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\r\nimport { ChildWindowType, ViewModeEnums } from \"../ProcessMonitorTypes\";\r\nimport { Actions } from \"../stores/ProcessMonitorStore\";\r\n\r\ninterface IProps {\r\n\tcw: ChildWindowType;\r\n\tviewMode: ViewModeEnums;\r\n}\r\n\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<IProps> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { cw, viewMode } = this.props;\r\n\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\tconst simpleClickHandler = () => {};\r\n\t\tconst advancedClickHandler = () => {\r\n\t\t\tActions.getFlashingState((err: StandardError, flashState: boolean) => {\r\n\t\t\t\tif (err) {\r\n\t\t\t\t\tconsole.error(\"Error getting current flashing state of window.\", err);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Only begin flashing if not already started\r\n\t\t\t\tif (!flashState) {\r\n\t\t\t\t\tActions.identifyWindow(cw);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tconst cwClickHandler = viewMode === ViewModeEnums.SIMPLE ? simpleClickHandler : advancedClickHandler;\r\n\r\n\t\tconst childWindowClasses = `child-window ${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\" && typeof this.props.cw.uuid === \"string\" && (\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\tconst { uuid, name } = cw;\r\n\t\t\t\t\t\t\t\tif (uuid) {\r\n\t\t\t\t\t\t\t\t\tActions.closeWindow({ uuid, name });\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\ttabIndex={0}\r\n\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\r\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\t\t\t\t\tconst { uuid, name } = cw;\r\n\t\t\t\t\t\t\t\t\tif (uuid) {\r\n\t\t\t\t\t\t\t\t\t\tActions.closeWindow({ uuid, name });\r\n\t\t\t\t\t\t\t\t\t}\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></i>\r\n\t\t\t\t\t)}\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{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.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAUxD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAiB;IAC/D,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;IAED,MAAM;QACL,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAGpC,MAAM,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACpC,MAAM,oBAAoB,GAAG,GAAG,EAAE;YACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAkB,EAAE,UAAmB,EAAE,EAAE;gBACpE,IAAI,GAAG,EAAE;oBACR,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;iBACtE;gBAGD,IAAI,CAAC,UAAU,EAAE;oBAChB,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;iBAC3B;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,QAAQ,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAErG,MAAM,kBAAkB,GAAG,gBAAgB,QAAQ,EAAE,CAAC;QACtD,OAAO,CACN,6BAAK,SAAS,EAAE,kBAAkB;YACjC,6BAAK,SAAS,EAAC,sBAAsB,IACnC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAC7E,2BACC,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,GAAG,EAAE;oBACb,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;oBAC1B,IAAI,IAAI,EAAE;wBACT,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBACpC;gBACF,CAAC,EACD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,CAAsB,EAAE,EAAE;oBACrC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;wBACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;wBAC1B,IAAI,IAAI,EAAE;4BACT,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;yBACpC;qBACD;gBACF,CAAC,GACG,CACL,CACI;YACN,6BAAK,SAAS,EAAC,mBAAmB,EAAC,OAAO,EAAE,cAAc,IACxD,EAAE,CAAC,IAAI,CACH,CACD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\nimport { ChildWindowType, ViewModeEnums } from \"../ProcessMonitorTypes\";\nimport { Actions } from \"../stores/ProcessMonitorStore\";\n\ninterface IProps {\n\tcw: ChildWindowType;\n\tviewMode: ViewModeEnums;\n}\n\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<IProps> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t}\n\n\trender() {\n\t\tconst { cw, viewMode } = this.props;\n\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\tconst simpleClickHandler = () => {};\n\t\tconst advancedClickHandler = () => {\n\t\t\tActions.getFlashingState((err: StandardError, flashState: boolean) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(\"Error getting current flashing state of window.\", err);\n\t\t\t\t}\n\n\t\t\t\t// Only begin flashing if not already started\n\t\t\t\tif (!flashState) {\n\t\t\t\t\tActions.identifyWindow(cw);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst cwClickHandler = viewMode === ViewModeEnums.SIMPLE ? simpleClickHandler : advancedClickHandler;\n\n\t\tconst childWindowClasses = `child-window ${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\" && typeof this.props.cw.uuid === \"string\" && (\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\tconst { uuid, name } = cw;\n\t\t\t\t\t\t\t\tif (uuid) {\n\t\t\t\t\t\t\t\t\tActions.closeWindow({ uuid, name });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\tconst { uuid, name } = cw;\n\t\t\t\t\t\t\t\t\tif (uuid) {\n\t\t\t\t\t\t\t\t\t\tActions.closeWindow({ uuid, name });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t></i>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"child-window-name\" onClick={cwClickHandler}>\n\t\t\t\t\t{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":"ListHeader.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ListHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport { Store, Actions } from \"../stores/ProcessMonitorStore\";\r\nimport { SortObjectType, ModeStatsType } from \"../ProcessMonitorTypes\";\r\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\r\n\r\ninterface IProps {\r\n\tfields: ModeStatsType[];\r\n}\r\n\r\ninterface IState {\r\n\tsort: SortObjectType;\r\n}\r\n\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<IProps, IState> {\r\n\tconstructor(props: IProps) {\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: StandardError, response: { value: SortObjectType }) {\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\ttabIndex={0}\r\n\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\r\n\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\t\t\tActions.setSort(\"name\");\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\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\ttabIndex={0}\r\n\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\r\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\t\t\t\t\tActions.setSort(field.value);\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\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.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { Store, Actions } from \"../stores/ProcessMonitorStore\";\nimport { SortObjectType, ModeStatsType } from \"../ProcessMonitorTypes\";\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\n\ninterface IProps {\n\tfields: ModeStatsType[];\n}\n\ninterface IState {\n\tsort: SortObjectType;\n}\n\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<IProps, IState> {\n\tconstructor(props: IProps) {\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: StandardError, response: { value: SortObjectType }) {\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\ttabIndex={0}\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\n\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\tActions.setSort(\"name\");\n\t\t\t\t\t\t}\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\ttabIndex={0}\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\tActions.setSort(field.value);\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\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.tsx"],"names":[],"mappings":"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","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, roundDecimalToPrecision } from \"../helpers\";\r\nimport { ProcessType, ViewModeEnums, ModeStatsType } from \"../ProcessMonitorTypes\";\r\n//Not used right now. Currently using alerts. This is for the future.\r\n\r\ninterface IProps {\r\n\tmode: ViewModeEnums;\r\n\tfields: ModeStatsType[];\r\n\tstats: ProcessType[\"statistics\"];\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 */\r\nfunction getClassesForStat(number: number | undefined, statType: string) {\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 (typeof number === \"undefined\") {\r\n\t\treturn classes;\r\n\t}\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 = `${classes} high-usage`;\r\n\t} else if (number > moderate_comparison) {\r\n\t\tclasses = `${classes} 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.35123 will output 0.35% for CPU.\r\n */\r\nfunction prettyPrint(number: number | undefined, statType: string) {\r\n\tif (typeof number === \"undefined\") {\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tif (statType === \"CPU\") {\r\n\t\t//make it a percent.\r\n\t\treturn `${roundDecimalToPrecision(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\r\nexport default class ProcessStatistics extends React.Component<IProps> {\r\n\tconstructor(props: IProps) {\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 === ViewModeEnums.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\" && typeof this.props.stats.uuid === \"string\" ? (\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\tconst { uuid } = this.props.stats;\r\n\t\t\t\t\t\t\t\t\tif (uuid) {\r\n\t\t\t\t\t\t\t\t\t\tActions.terminateProcess({ uuid });\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\ttabIndex={0}\r\n\t\t\t\t\t\t\t\trole=\"button\"\r\n\t\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\r\n\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\t\t\t\t\t\tconst { uuid } = this.props.stats;\r\n\t\t\t\t\t\t\t\t\t\tif (uuid) {\r\n\t\t\t\t\t\t\t\t\t\t\tActions.terminateProcess({ uuid });\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\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"]}
1
+ {"version":3,"file":"ProcessStatistics.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/components/ProcessStatistics.tsx"],"names":[],"mappings":"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","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, roundDecimalToPrecision } from \"../helpers\";\nimport { ProcessType, ViewModeEnums, ModeStatsType } from \"../ProcessMonitorTypes\";\n//Not used right now. Currently using alerts. This is for the future.\n\ninterface IProps {\n\tmode: ViewModeEnums;\n\tfields: ModeStatsType[];\n\tstats: ProcessType[\"statistics\"];\n}\n\n/**\n * Given a number, will return modifier classes that change the background. High usage === red. Moderate === orange.\n */\nfunction getClassesForStat(number: number | undefined, statType: string) {\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 (typeof number === \"undefined\") {\n\t\treturn classes;\n\t}\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 = `${classes} high-usage`;\n\t} else if (number > moderate_comparison) {\n\t\tclasses = `${classes} 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.35123 will output 0.35% for CPU.\n */\nfunction prettyPrint(number: number | undefined, statType: string) {\n\tif (typeof number === \"undefined\") {\n\t\treturn \"\";\n\t}\n\n\tif (statType === \"CPU\") {\n\t\t//make it a percent.\n\t\treturn `${roundDecimalToPrecision(number, 2)}%`;\n\t} else if (statType !== \"PID\") {\n\t\treturn bytesToSize(number);\n\t} else {\n\t\treturn number;\n\t}\n}\n\nexport default class ProcessStatistics extends React.Component<IProps> {\n\tconstructor(props: IProps) {\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 === ViewModeEnums.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\" && typeof this.props.stats.uuid === \"string\" ? (\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\tconst { uuid } = this.props.stats;\n\t\t\t\t\t\t\t\t\tif (uuid) {\n\t\t\t\t\t\t\t\t\t\tActions.terminateProcess({ uuid });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttabIndex={0}\n\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\tonKeyDown={(e: React.KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\t\t\t\t\t\t\t\tconst { uuid } = this.props.stats;\n\t\t\t\t\t\t\t\t\t\tif (uuid) {\n\t\t\t\t\t\t\t\t\t\t\tActions.terminateProcess({ uuid });\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/components/processMonitor/constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACtD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC5C,CAAC;AAGF,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACxD,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;AAGF,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,MAAM,WAAW,GAAgB;IAChC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,EAAE;CACd,CAAC;AAEF,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;AAKxC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAKxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,OAAO,cAAc,OAAO,CAAC,CAAC","sourcesContent":["import { ProcessType, ModeStatsType } from \"./ProcessMonitorTypes\";\r\n\r\n// Stats to be displayed in simple mode\r\nexport const SIMPLE_MODE_STATISTICS: ModeStatsType[] = [\r\n\t{ label: \"CPU\", value: \"cpuUsage\" },\r\n\t{ label: \"Memory\", value: \"workingSetSize\" },\r\n];\r\n\r\n// Stats to be diesplayed in advanced mode\r\nexport const ADVANCED_MODE_STATISTICS: ModeStatsType[] = [\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\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// Constant to convert megabytes (250) to bytes (250,000,000). Conversion is approximate.\r\nexport const TO_MB = 1000000;\r\n\r\nconst emptyTotals: ProcessType = {\r\n\tvisible: false,\r\n\tstatistics: {},\r\n};\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\r\n/**\r\n * Delimiter between window name and view identifier. Can be used in constructing view names as well as matching view names\r\n */\r\nexport const VIEW_DELIMITER = \": view-\";\r\n\r\n/**\r\n * RegExp for matching on view names or capturing the window name portion of the view\r\n */\r\nexport const VIEW_NAME_REGEXP = new RegExp(`(.*)${VIEW_DELIMITER}\\\\d+$`);\r\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/components/processMonitor/constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACtD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC5C,CAAC;AAGF,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACxD,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;AAGF,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,MAAM,WAAW,GAAgB;IAChC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,EAAE;CACd,CAAC;AAEF,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;AAKxC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAKxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,OAAO,cAAc,OAAO,CAAC,CAAC","sourcesContent":["import { ProcessType, ModeStatsType } from \"./ProcessMonitorTypes\";\n\n// Stats to be displayed in simple mode\nexport const SIMPLE_MODE_STATISTICS: ModeStatsType[] = [\n\t{ label: \"CPU\", value: \"cpuUsage\" },\n\t{ label: \"Memory\", value: \"workingSetSize\" },\n];\n\n// Stats to be diesplayed in advanced mode\nexport const ADVANCED_MODE_STATISTICS: ModeStatsType[] = [\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\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// Constant to convert megabytes (250) to bytes (250,000,000). Conversion is approximate.\nexport const TO_MB = 1000000;\n\nconst emptyTotals: ProcessType = {\n\tvisible: false,\n\tstatistics: {},\n};\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\n/**\n * Delimiter between window name and view identifier. Can be used in constructing view names as well as matching view names\n */\nexport const VIEW_DELIMITER = \": view-\";\n\n/**\n * RegExp for matching on view names or capturing the window name portion of the view\n */\nexport const VIEW_NAME_REGEXP = new RegExp(`(.*)${VIEW_DELIMITER}\\\\d+$`);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/processMonitor/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIvF,MAAM,UAAU,YAAY,CAAC,GAAW;IACvC,OAAO,CACN,GAAG;SACD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAE1B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;AACH,CAAC;AAID,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAGhC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAGhD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAGvD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAMD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAE,IAAiB,EAAe,EAAE;IAChF,MAAM,UAAU,GAAwC,EAAE,CAAC;IAC3D,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;QACvC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE;YAC7G,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;YACnC,OAAO;SACP;QAED,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC3B,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;IAE3B,OAAO;QACN,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU;KACV,CAAC;AACH,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAU,EAAE;IAEpF,MAAM,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAwB,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAS7G,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAoB,EAAU,EAAE;IAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;QAEzB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAE,CAAC,CAAC,CAAC,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC","sourcesContent":["import { SIMPLE_MODE_STATISTICS, VIEW_NAME_REGEXP, VIEW_DELIMITER } from \"./constants\";\r\nimport { ProcessStatisticsType, ProcessType } from \"./ProcessMonitorTypes\";\r\n\r\n// This Is Proper Case\r\nexport function toProperCase(str: string) {\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(/^./, (char: string) => char.toUpperCase())\r\n\t);\r\n}\r\n/**\r\n * Given a number, will return a nice string, 1,024 will return 1KB, 100 will return 100 Bytes, and so on.\r\n */\r\nexport function bytesToSize(bytes: number) {\r\n\tif (bytes == 0) return \"0 Byte\";\r\n\r\n\t// Size powers, in English\r\n\tconst sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\r\n\r\n\t// Determine the size power for the number of bytes\r\n\tconst i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n\r\n\t// Return the size, rounded\r\n\treturn `${Math.round(bytes / Math.pow(1024, i))} ${sizes[i]}`;\r\n}\r\n\r\n/**\r\n * Handler for Array.reduce. It takes the array of statistics and sums each value.\r\n * This outputs an object that has total CPU and memory consumption.\r\n */\r\nexport const statReducer = (prev: ProcessType, curr: ProcessType): ProcessType => {\r\n\tconst statistics: ProcessStatisticsType[\"statistics\"] = {};\r\n\tSIMPLE_MODE_STATISTICS.forEach((stat) => {\r\n\t\tif (typeof prev.statistics[stat.value] === \"undefined\" || typeof curr.statistics[stat.value] === \"undefined\") {\r\n\t\t\tstatistics[stat.value] = undefined;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstatistics[stat.value] = (prev.statistics[stat.value] ?? 0) + (curr.statistics[stat.value] ?? 0);\r\n\t});\r\n\r\n\tstatistics.name = \"Totals\";\r\n\tstatistics.uuid = \"Totals\";\r\n\r\n\treturn {\r\n\t\tvisible: curr.visible,\r\n\t\tstatistics,\r\n\t};\r\n};\r\n\r\n/**\r\n * Convenience function for rounding decimals to a given precision\r\n * Note that \"precision\" here means \"number of digits to the right of the decimal point\"\r\n */\r\nexport const roundDecimalToPrecision = (number: number, precision: number): number => {\r\n\t// Example: number = .12345, precision = 2\r\n\tconst shiftedNumber = number * Math.pow(10, precision); // example: 12.345\r\n\tconst roundedShiftedNumber = Math.round(shiftedNumber); // example: 12\r\n\treturn roundedShiftedNumber / Math.pow(10, precision); // example: .12\r\n};\r\n\r\ntype WindowViewItemType = {\r\n\twindowName: string;\r\n\tviewId: string;\r\n};\r\n/**\r\n * Gives a standard name for a view, given a window or view object\r\n * @returns string\r\n */\r\nexport const getViewName = (item: WindowViewItemType) => `${item.windowName}${VIEW_DELIMITER}${item.viewId}`;\r\n\r\ntype ViewObjectType = {\r\n\ttype: string;\r\n\tname: string;\r\n};\r\n/**\r\n * Returns the name of the parent window for the view by stripping the standard view identifier, or else return the supplied name if item is not a view\r\n */\r\nexport const getViewBaseName = (view: ViewObjectType): string => {\r\n\tif (view.type === \"view\") {\r\n\t\t// The `!` is TS's non-null assertion operator\r\n\t\treturn view.name.match(VIEW_NAME_REGEXP)![1];\r\n\t}\r\n\treturn view.name;\r\n};\r\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/processMonitor/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIvF,MAAM,UAAU,YAAY,CAAC,GAAW;IACvC,OAAO,CACN,GAAG;SACD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAE1B,OAAO,CAAC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;AACH,CAAC;AAID,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAGhC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAGhD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAGvD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAMD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAE,IAAiB,EAAe,EAAE;IAChF,MAAM,UAAU,GAAwC,EAAE,CAAC;IAC3D,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;QACvC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE;YAC7G,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;YACnC,OAAO;SACP;QAED,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC3B,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;IAE3B,OAAO;QACN,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU;KACV,CAAC;AACH,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAU,EAAE;IAEpF,MAAM,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAwB,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAS7G,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAoB,EAAU,EAAE;IAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;QAEzB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAE,CAAC,CAAC,CAAC,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC","sourcesContent":["import { SIMPLE_MODE_STATISTICS, VIEW_NAME_REGEXP, VIEW_DELIMITER } from \"./constants\";\nimport { ProcessStatisticsType, ProcessType } from \"./ProcessMonitorTypes\";\n\n// This Is Proper Case\nexport function toProperCase(str: string) {\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(/^./, (char: string) => char.toUpperCase())\n\t);\n}\n/**\n * Given a number, will return a nice string, 1,024 will return 1KB, 100 will return 100 Bytes, and so on.\n */\nexport function bytesToSize(bytes: number) {\n\tif (bytes == 0) return \"0 Byte\";\n\n\t// Size powers, in English\n\tconst sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\n\t// Determine the size power for the number of bytes\n\tconst i = Math.floor(Math.log(bytes) / Math.log(1024));\n\n\t// Return the size, rounded\n\treturn `${Math.round(bytes / Math.pow(1024, i))} ${sizes[i]}`;\n}\n\n/**\n * Handler for Array.reduce. It takes the array of statistics and sums each value.\n * This outputs an object that has total CPU and memory consumption.\n */\nexport const statReducer = (prev: ProcessType, curr: ProcessType): ProcessType => {\n\tconst statistics: ProcessStatisticsType[\"statistics\"] = {};\n\tSIMPLE_MODE_STATISTICS.forEach((stat) => {\n\t\tif (typeof prev.statistics[stat.value] === \"undefined\" || typeof curr.statistics[stat.value] === \"undefined\") {\n\t\t\tstatistics[stat.value] = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tstatistics[stat.value] = (prev.statistics[stat.value] ?? 0) + (curr.statistics[stat.value] ?? 0);\n\t});\n\n\tstatistics.name = \"Totals\";\n\tstatistics.uuid = \"Totals\";\n\n\treturn {\n\t\tvisible: curr.visible,\n\t\tstatistics,\n\t};\n};\n\n/**\n * Convenience function for rounding decimals to a given precision\n * Note that \"precision\" here means \"number of digits to the right of the decimal point\"\n */\nexport const roundDecimalToPrecision = (number: number, precision: number): number => {\n\t// Example: number = .12345, precision = 2\n\tconst shiftedNumber = number * Math.pow(10, precision); // example: 12.345\n\tconst roundedShiftedNumber = Math.round(shiftedNumber); // example: 12\n\treturn roundedShiftedNumber / Math.pow(10, precision); // example: .12\n};\n\ntype WindowViewItemType = {\n\twindowName: string;\n\tviewId: string;\n};\n/**\n * Gives a standard name for a view, given a window or view object\n * @returns string\n */\nexport const getViewName = (item: WindowViewItemType) => `${item.windowName}${VIEW_DELIMITER}${item.viewId}`;\n\ntype ViewObjectType = {\n\ttype: string;\n\tname: string;\n};\n/**\n * Returns the name of the parent window for the view by stripping the standard view identifier, or else return the supplied name if item is not a view\n */\nexport const getViewBaseName = (view: ViewObjectType): string => {\n\tif (view.type === \"view\") {\n\t\t// The `!` is TS's non-null assertion operator\n\t\treturn view.name.match(VIEW_NAME_REGEXP)![1];\n\t}\n\treturn view.name;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../../../src/components/processMonitor/helpers.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEjE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACtB;YACC,CAAC,CAAC,EAAE,QAAQ,CAAC;YACb,CAAC,CAAC,EAAE,SAAS,CAAC;YACd,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,CAAC;YACpB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,CAAC;YACpB,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC;YAClB,CAAC,IAAI,GAAG,IAAI,EAAE,SAAS,CAAC;YACxB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;YAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;YAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;YAC7B,MAAM,CAAC,WAAW,CAAC,KAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAClC;YACC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACX,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACb,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACb,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;YAClB,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC;YACnB,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC;YACpB,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;YACrB,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;YACrB,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC;SACxB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE;YACnD,MAAM,CAAC,uBAAuB,CAAC,WAAqB,EAAE,cAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it } from \"mocha\";\r\nimport { expect } from \"chai\";\r\n\r\nimport { bytesToSize, roundDecimalToPrecision } from \"./helpers\";\r\n\r\ndescribe(\"Process Monitor helpers\", () => {\r\n\tit(\"bytesToSize\", () => {\r\n\t\t[\r\n\t\t\t[0, \"0 Byte\"],\r\n\t\t\t[1, \"1 Bytes\"],\r\n\t\t\t[1023, \"1023 Bytes\"],\r\n\t\t\t[1024, \"1 KB\"],\r\n\t\t\t[1025, \"1 KB\"],\r\n\t\t\t[1024 * 1.4, \"1 KB\"],\r\n\t\t\t[1024 * 1.5, \"2 KB\"],\r\n\t\t\t[1024 * 2, \"2 KB\"],\r\n\t\t\t[1024 * 1000, \"1000 KB\"],\r\n\t\t\t[Math.pow(1024, 2), \"1 MB\"],\r\n\t\t\t[Math.pow(1024, 3), \"1 GB\"],\r\n\t\t\t[Math.pow(1024, 4), \"1 TB\"],\r\n\t\t].forEach(([input, output]) => {\r\n\t\t\texpect(bytesToSize(input as number)).to.be.equal(output);\r\n\t\t});\r\n\t});\r\n\r\n\tit(\"roundDecimalToPrecision\", () => {\r\n\t\t[\r\n\t\t\t[1000, 2, 1000],\r\n\t\t\t[1, 2, 1],\r\n\t\t\t[0, 1, 0],\r\n\t\t\t[1, 0, 1],\r\n\t\t\t[0.5, 0, 1],\r\n\t\t\t[0.5, 1, 0.5],\r\n\t\t\t[0.5, 2, 0.5],\r\n\t\t\t[0.12345, 1, 0.1],\r\n\t\t\t[0.12345, 2, 0.12],\r\n\t\t\t[0.12345, 3, 0.123],\r\n\t\t\t[0.12345, 4, 0.1235],\r\n\t\t\t[0.12345, 5, 0.12345],\r\n\t\t\t[0.12345, 6, 0.12345],\r\n\t\t\t[1000.12345, 2, 1000.12],\r\n\t\t].forEach(([inputNumber, inputPrecision, output]) => {\r\n\t\t\texpect(roundDecimalToPrecision(inputNumber as number, inputPrecision as number)).to.be.equal(output);\r\n\t\t});\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../../../src/components/processMonitor/helpers.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEjE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACtB;YACC,CAAC,CAAC,EAAE,QAAQ,CAAC;YACb,CAAC,CAAC,EAAE,SAAS,CAAC;YACd,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,CAAC;YACpB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,CAAC;YACpB,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC;YAClB,CAAC,IAAI,GAAG,IAAI,EAAE,SAAS,CAAC;YACxB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;YAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;YAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;YAC7B,MAAM,CAAC,WAAW,CAAC,KAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAClC;YACC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;YACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACX,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACb,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;YACb,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC;YACjB,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;YAClB,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC;YACnB,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC;YACpB,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;YACrB,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;YACrB,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC;SACxB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE;YACnD,MAAM,CAAC,uBAAuB,CAAC,WAAqB,EAAE,cAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\n\nimport { bytesToSize, roundDecimalToPrecision } from \"./helpers\";\n\ndescribe(\"Process Monitor helpers\", () => {\n\tit(\"bytesToSize\", () => {\n\t\t[\n\t\t\t[0, \"0 Byte\"],\n\t\t\t[1, \"1 Bytes\"],\n\t\t\t[1023, \"1023 Bytes\"],\n\t\t\t[1024, \"1 KB\"],\n\t\t\t[1025, \"1 KB\"],\n\t\t\t[1024 * 1.4, \"1 KB\"],\n\t\t\t[1024 * 1.5, \"2 KB\"],\n\t\t\t[1024 * 2, \"2 KB\"],\n\t\t\t[1024 * 1000, \"1000 KB\"],\n\t\t\t[Math.pow(1024, 2), \"1 MB\"],\n\t\t\t[Math.pow(1024, 3), \"1 GB\"],\n\t\t\t[Math.pow(1024, 4), \"1 TB\"],\n\t\t].forEach(([input, output]) => {\n\t\t\texpect(bytesToSize(input as number)).to.be.equal(output);\n\t\t});\n\t});\n\n\tit(\"roundDecimalToPrecision\", () => {\n\t\t[\n\t\t\t[1000, 2, 1000],\n\t\t\t[1, 2, 1],\n\t\t\t[0, 1, 0],\n\t\t\t[1, 0, 1],\n\t\t\t[0.5, 0, 1],\n\t\t\t[0.5, 1, 0.5],\n\t\t\t[0.5, 2, 0.5],\n\t\t\t[0.12345, 1, 0.1],\n\t\t\t[0.12345, 2, 0.12],\n\t\t\t[0.12345, 3, 0.123],\n\t\t\t[0.12345, 4, 0.1235],\n\t\t\t[0.12345, 5, 0.12345],\n\t\t\t[0.12345, 6, 0.12345],\n\t\t\t[1000.12345, 2, 1000.12],\n\t\t].forEach(([inputNumber, inputPrecision, output]) => {\n\t\t\texpect(roundDecimalToPrecision(inputNumber as number, inputPrecision as number)).to.be.equal(output);\n\t\t});\n\t});\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"]}
@@ -64,58 +64,58 @@ const Actions = {
64
64
  });
65
65
  },
66
66
  createDataModel: (processes, cb) => {
67
- let procs = [];
68
- let mode = ProcessMonitorStore === null || ProcessMonitorStore === void 0 ? void 0 : ProcessMonitorStore.getValue({ field: "viewMode" });
69
- for (const proc of processes) {
70
- if (mode === "simple" &&
71
- (proc.name.toLowerCase().includes("service") ||
72
- proc.name.toLowerCase().includes("system") ||
73
- proc.name.toLowerCase().includes("unnamed"))) {
74
- procs.push({
75
- statistics: proc,
76
- visible: false,
77
- });
78
- }
79
- else {
80
- const childWindows = [...proc.windows, ...proc.views]
81
- .filter((item) => {
82
- const name = "name" in item ? item.name : item.windowName;
83
- if (!(mode === "simple" &&
84
- (name.toLowerCase().includes("service") ||
85
- name.toLowerCase().includes("system") ||
86
- name.toLowerCase().includes("unnamed")))) {
87
- return true;
88
- }
89
- return false;
90
- })
91
- .map((item) => {
92
- return {
93
- name: "name" in item
94
- ? item.name
95
- : getViewName({
96
- windowName: item.windowName,
97
- viewId: String(item.id),
98
- }),
99
- type: "name" in item ? "window" : "view",
100
- };
101
- })
102
- .sort((a, b) => {
103
- if (a.name < b.name)
104
- return -1;
105
- if (a.name > b.name)
106
- return 1;
107
- return 0;
67
+ const mode = ProcessMonitorStore === null || ProcessMonitorStore === void 0 ? void 0 : ProcessMonitorStore.getValue({ field: "viewMode" });
68
+ const sortWindow = (a, b) => {
69
+ if (a.name < b.name)
70
+ return -1;
71
+ if (a.name > b.name)
72
+ return 1;
73
+ return 0;
74
+ };
75
+ const viewOrWindowToProc = (item) => {
76
+ const name = "name" in item
77
+ ? item.name
78
+ : getViewName({
79
+ windowName: item.windowName,
80
+ viewId: String(item.id),
108
81
  });
109
- procs.push({
82
+ return {
83
+ name,
84
+ type: "name" in item ? "window" : "view",
85
+ };
86
+ };
87
+ const allowAdvanced = (item) => {
88
+ const windowName = "name" in item ? item.name.toLowerCase() : item.windowName.toLowerCase();
89
+ const windowIsService = windowName.includes("service");
90
+ const windowIsSystem = windowName.includes("system");
91
+ const windowIsUnnamed = windowName.includes("unnamed");
92
+ const windowIsSimple = windowIsService || windowIsSystem || windowIsUnnamed;
93
+ return mode !== "simple" || !windowIsSimple;
94
+ };
95
+ const procs = processes.map((proc) => {
96
+ const procName = proc.name.toLowerCase();
97
+ const isService = procName.includes("service");
98
+ const isSystem = procName.includes("system");
99
+ const isUnnamed = procName.includes("unnamed");
100
+ const procIsSimple = isService || isSystem || isUnnamed;
101
+ if (mode === "simple" && procIsSimple) {
102
+ return {
110
103
  statistics: proc,
111
- visible: true,
112
- type: proc.type,
113
- childWindows,
114
- });
104
+ visible: false,
105
+ };
115
106
  }
116
- }
117
- procs = Actions.sortProcesses(procs);
118
- cb(procs);
107
+ const childWindows = [...proc.windows, ...proc.views]
108
+ .filter(allowAdvanced)
109
+ .map(viewOrWindowToProc)
110
+ .sort(sortWindow);
111
+ return {
112
+ statistics: proc,
113
+ visible: true,
114
+ type: proc.type,
115
+ childWindows,
116
+ };
117
+ });
118
+ cb(Actions.sortProcesses(procs));
119
119
  },
120
120
  sortProcesses: (procs) => {
121
121
  let currentSort = ProcessMonitorStore === null || ProcessMonitorStore === void 0 ? void 0 : ProcessMonitorStore.getValue({ field: "sort" });
@@ -1 +1 @@
1
- {"version":3,"file":"ProcessMonitorStore.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/stores/ProcessMonitorStore.ts"],"names":[],"mappings":"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","sourcesContent":["import { getViewName, getViewBaseName } from \"../helpers\";\r\nimport { ChildWindowType, ProcessType, SortObjectType } from \"../ProcessMonitorTypes\";\r\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\r\nimport { StandardCallback, StandardError } from \"@finsemble/finsemble-core/types/types\";\r\nimport { ProcessInfo } from \"@finsemble/finsemble-core/types/FEA\";\r\nimport { FinsembleWindow } from \"@finsemble/finsemble-core/types/main\";\r\nimport async from \"async\";\r\n\r\nlet ProcessMonitorStore: StoreModel | undefined;\r\n\r\ntype VoidCallback = () => void;\r\n\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\nconst MAGIC_NUMBER_TERMINATION_TIMEOUT = 4000;\r\n\r\nexport let storeWrapper: StoreModel | null | undefined;\r\n\r\nfunction createLocalStore(done: VoidCallback) {\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: StandardError, store?: StoreModel) => {\r\n\t\t\tProcessMonitorStore = store;\r\n\t\t\tstoreWrapper = store;\r\n\t\t\tdone();\r\n\t\t}\r\n\t);\r\n}\r\n\r\nconst 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: (cb: VoidCallback) => {\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: () => {\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: (field: string) => {\r\n\t\tconst 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: (processes: ProcessInfo[]) => {\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: (processes: ProcessInfo[], cb: (procs: ProcessType[]) => void) => {\r\n\t\tlet procs: ProcessType[] = [];\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\tconst childWindows: ChildWindowType[] = [...proc.windows, ...proc.views]\r\n\t\t\t\t\t.filter((item) => {\r\n\t\t\t\t\t\tconst name: string = \"name\" in item ? item.name : item.windowName;\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t!(\r\n\t\t\t\t\t\t\t\tmode === \"simple\" &&\r\n\t\t\t\t\t\t\t\t(name.toLowerCase().includes(\"service\") ||\r\n\t\t\t\t\t\t\t\t\tname.toLowerCase().includes(\"system\") ||\r\n\t\t\t\t\t\t\t\t\tname.toLowerCase().includes(\"unnamed\"))\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\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.map((item) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tname:\r\n\t\t\t\t\t\t\t\t\"name\" in item\r\n\t\t\t\t\t\t\t\t\t? item.name\r\n\t\t\t\t\t\t\t\t\t: getViewName({\r\n\t\t\t\t\t\t\t\t\t\t\twindowName: item.windowName,\r\n\t\t\t\t\t\t\t\t\t\t\tviewId: String(item.id),\r\n\t\t\t\t\t\t\t\t\t }),\r\n\t\t\t\t\t\t\ttype: \"name\" in item ? \"window\" : \"view\",\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.sort((a, b) => {\r\n\t\t\t\t\t\tif (a.name < b.name) return -1;\r\n\t\t\t\t\t\tif (a.name > b.name) return 1;\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t});\r\n\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,\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: (procs: ProcessType[]) => {\r\n\t\tlet currentSort: SortObjectType = ProcessMonitorStore?.getValue({ field: \"sort\" });\r\n\t\tlet sortFN = (a: ProcessType, b: ProcessType) => {\r\n\t\t\tlet aValue = a.statistics[currentSort.field];\r\n\t\t\tlet bValue = b.statistics[currentSort.field];\r\n\r\n\t\t\tif (typeof aValue === \"undefined\" || typeof bValue === \"undefined\") {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\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 (typeof aValue === \"string\") {\r\n\t\t\t\taValue = aValue.toLowerCase();\r\n\t\t\t}\r\n\t\t\tif (typeof bValue === \"string\") {\r\n\t\t\t\tbValue = bValue.toLowerCase();\r\n\t\t\t}\r\n\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: () => {\r\n\t\tconst mode = ProcessMonitorStore?.getValue({ field: \"viewMode\" });\r\n\t\tProcessMonitorStore?.setValue({\r\n\t\t\tfield: \"viewMode\",\r\n\t\t\tvalue: mode === \"advanced\" ? \"simple\" : \"advanced\",\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the current \"flashing\" state - whether the process monitor is currently flashing a window\r\n\t */\r\n\tgetFlashingState: (cb?: StandardCallback) => {\r\n\t\tProcessMonitorStore?.getValue(\"flashing\", cb);\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the current \"flashing\" state for the process monitor\r\n\t */\r\n\tsetFlashingState: (value: boolean, cb?: StandardCallback) => {\r\n\t\tProcessMonitorStore?.setValue({ field: \"flashing\", value }, cb);\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: ChildWindowType) {\r\n\t\tif (winID.name.includes(\"Service\")) return;\r\n\t\t// If the item clicked is a view, the window for that view should flash, thus we need to get that window's name here\r\n\t\tconst baseName = getViewBaseName(winID);\r\n\r\n\t\tthis.setFlashingState(true);\r\n\r\n\t\tconst OPACITY_ANIMATION_DURATION = 200;\r\n\t\tFSBL.FinsembleWindow.getInstance({ name: baseName }, (err: StandardError, win: FinsembleWindow) => {\r\n\t\t\tlet windowState = \"hidden\";\r\n\t\t\tfunction flash(n: any, done: any) {\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({}, (error: StandardError, 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\tasync.timesSeries(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\tthis.setFlashingState(false);\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: (AppIdentifier: { uuid: string }, force = false) => {\r\n\t\t// AppIdentifier should be of type ChildWindow, but that has `uuid` as optional, and\r\n\t\t// uuid is required for this function\r\n\r\n\t\tconst app = FSBL.System.Application.wrap(AppIdentifier.uuid);\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\tconst 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\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\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);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst 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\tconst closeTimeout = setTimeout(() => {\r\n\t\t\t\tonCloseFailure();\r\n\t\t\t}, MAGIC_NUMBER_TERMINATION_TIMEOUT);\r\n\r\n\t\t\tconst 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\tconst 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(\r\n\t\t\t\t() => {},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tFSBL.Clients.DialogManager.open(\r\n\t\t\t\t\t\t\"yesNo\",\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttitle: \"Error\",\r\n\t\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\t\taffirmativeButtonLabel: \"Okay\",\r\n\t\t\t\t\t\t\tshowCancelButton: false,\r\n\t\t\t\t\t\t\tshowNegativeButton: false,\r\n\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\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: StandardError, response: { choice: string }) => {\r\n\t\t\t\tif (err || response.choice === \"affirmative\") {\r\n\t\t\t\t\tforceCloseProcess();\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: { uuid: string; name: string }) {\r\n\t\tlet procs: ProcessType[] = ProcessMonitorStore?.getValue({ field: \"processList\" });\r\n\t\tprocs = procs.map((proc) => {\r\n\t\t\tif (proc.childWindows) {\r\n\t\t\t\tconst 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: { uuid: string; name: string }, force = false) {\r\n\t\tconst win = FSBL.System.Window.wrap(winID.uuid, winID.name);\r\n\r\n\t\t//Make the UI feel snappy.\r\n\t\tActions.removeWindowLocally(winID);\r\n\r\n\t\tconst 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: StandardError, response: { choice: string }) => {\r\n\t\t\t\t\t\tif (err || response.choice === \"affirmative\") {\r\n\t\t\t\t\t\t\treturn Actions.terminateProcess({ uuid: winID.uuid }, 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\r\n\t\t//If we can't close within 4 seconds, something's wrong - try to force close it.\r\n\t\tconst closeTimeout = setTimeout(() => {\r\n\t\t\tonCloseFailure();\r\n\t\t}, MAGIC_NUMBER_TERMINATION_TIMEOUT);\r\n\r\n\t\tconst onCloseSuccess = () => {\r\n\t\t\tclearTimeout(closeTimeout);\r\n\t\t};\r\n\r\n\t\twin.close(force, onCloseSuccess, onCloseFailure);\r\n\t},\r\n};\r\n\r\nexport { ProcessMonitorStore as Store, Actions };\r\n"]}
1
+ {"version":3,"file":"ProcessMonitorStore.js","sourceRoot":"","sources":["../../../../src/components/processMonitor/stores/ProcessMonitorStore.ts"],"names":[],"mappings":"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","sourcesContent":["import { getViewName, getViewBaseName } from \"../helpers\";\nimport { ChildWindowType, ProcessType, SortObjectType } from \"../ProcessMonitorTypes\";\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\nimport { StandardCallback, StandardError } from \"@finsemble/finsemble-core/types/types\";\nimport { ProcessInfo } from \"@finsemble/finsemble-core/types/FEA\";\nimport { FinsembleWindow } from \"@finsemble/finsemble-core/types/main\";\nimport async from \"async\";\n\nlet ProcessMonitorStore: StoreModel | undefined;\n\ntype VoidCallback = () => void;\n\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};\nconst MAGIC_NUMBER_TERMINATION_TIMEOUT = 4000;\n\nexport let storeWrapper: StoreModel | null | undefined;\n\nfunction createLocalStore(done: VoidCallback) {\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: StandardError, store?: StoreModel) => {\n\t\t\tProcessMonitorStore = store;\n\t\t\tstoreWrapper = store;\n\t\t\tdone();\n\t\t}\n\t);\n}\n\nconst Actions = {\n\t/**\n\t * Creates the local store, then gets the first cut at stats for the process list.\n\t */\n\tinitialize: (cb: VoidCallback) => {\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: () => {\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: (field: string) => {\n\t\tconst 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: (processes: ProcessInfo[]) => {\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: (processes: ProcessInfo[], cb: (procs: ProcessType[]) => void) => {\n\t\tconst mode = ProcessMonitorStore?.getValue({ field: \"viewMode\" });\n\n\t\ttype ViewOrWindow = ProcessInfo[\"windows\"][0] | ProcessInfo[\"views\"][0];\n\n\t\tconst sortWindow = (a: { name: string }, b: { name: string }) => {\n\t\t\tif (a.name < b.name) return -1;\n\t\t\tif (a.name > b.name) return 1;\n\t\t\treturn 0;\n\t\t};\n\n\t\tconst viewOrWindowToProc = (item: ViewOrWindow) => {\n\t\t\tconst name =\n\t\t\t\t\"name\" in item\n\t\t\t\t\t? item.name\n\t\t\t\t\t: getViewName({\n\t\t\t\t\t\t\twindowName: item.windowName,\n\t\t\t\t\t\t\tviewId: String(item.id),\n\t\t\t\t\t });\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\ttype: \"name\" in item ? \"window\" : \"view\",\n\t\t\t};\n\t\t};\n\n\t\tconst allowAdvanced = (item: ViewOrWindow) => {\n\t\t\tconst windowName: string = \"name\" in item ? item.name.toLowerCase() : item.windowName.toLowerCase();\n\t\t\tconst windowIsService = windowName.includes(\"service\");\n\t\t\tconst windowIsSystem = windowName.includes(\"system\");\n\t\t\tconst windowIsUnnamed = windowName.includes(\"unnamed\");\n\t\t\tconst windowIsSimple = windowIsService || windowIsSystem || windowIsUnnamed;\n\t\t\treturn mode !== \"simple\" || !windowIsSimple;\n\t\t};\n\n\t\tconst procs: ProcessType[] = processes.map((proc) => {\n\t\t\tconst procName = proc.name.toLowerCase();\n\t\t\tconst isService = procName.includes(\"service\");\n\t\t\tconst isSystem = procName.includes(\"system\");\n\t\t\tconst isUnnamed = procName.includes(\"unnamed\");\n\t\t\tconst procIsSimple = isService || isSystem || isUnnamed;\n\t\t\tif (mode === \"simple\" && procIsSimple) {\n\t\t\t\treturn {\n\t\t\t\t\tstatistics: proc,\n\t\t\t\t\tvisible: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst childWindows: ChildWindowType[] = [...proc.windows, ...proc.views]\n\t\t\t\t.filter(allowAdvanced)\n\t\t\t\t.map(viewOrWindowToProc)\n\t\t\t\t.sort(sortWindow);\n\n\t\t\treturn {\n\t\t\t\tstatistics: proc,\n\t\t\t\tvisible: true,\n\t\t\t\ttype: proc.type,\n\t\t\t\tchildWindows,\n\t\t\t};\n\t\t});\n\n\t\tcb(Actions.sortProcesses(procs));\n\t},\n\n\t/**\n\t * Sorting function. Handles ascending and descending.\n\t */\n\tsortProcesses: (procs: ProcessType[]) => {\n\t\tlet currentSort: SortObjectType = ProcessMonitorStore?.getValue({ field: \"sort\" });\n\t\tlet sortFN = (a: ProcessType, b: ProcessType) => {\n\t\t\tlet aValue = a.statistics[currentSort.field];\n\t\t\tlet bValue = b.statistics[currentSort.field];\n\n\t\t\tif (typeof aValue === \"undefined\" || typeof bValue === \"undefined\") {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t//Comparing upper and lowercase names makes the sort look wrong. we equalize all strings here.\n\t\t\tif (typeof aValue === \"string\") {\n\t\t\t\taValue = aValue.toLowerCase();\n\t\t\t}\n\t\t\tif (typeof bValue === \"string\") {\n\t\t\t\tbValue = bValue.toLowerCase();\n\t\t\t}\n\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: () => {\n\t\tconst mode = ProcessMonitorStore?.getValue({ field: \"viewMode\" });\n\t\tProcessMonitorStore?.setValue({\n\t\t\tfield: \"viewMode\",\n\t\t\tvalue: mode === \"advanced\" ? \"simple\" : \"advanced\",\n\t\t});\n\t},\n\n\t/**\n\t * Gets the current \"flashing\" state - whether the process monitor is currently flashing a window\n\t */\n\tgetFlashingState: (cb?: StandardCallback) => {\n\t\tProcessMonitorStore?.getValue(\"flashing\", cb);\n\t},\n\n\t/**\n\t * Gets the current \"flashing\" state for the process monitor\n\t */\n\tsetFlashingState: (value: boolean, cb?: StandardCallback) => {\n\t\tProcessMonitorStore?.setValue({ field: \"flashing\", value }, cb);\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: ChildWindowType) {\n\t\tif (winID.name.includes(\"Service\")) return;\n\t\t// If the item clicked is a view, the window for that view should flash, thus we need to get that window's name here\n\t\tconst baseName = getViewBaseName(winID);\n\n\t\tthis.setFlashingState(true);\n\n\t\tconst OPACITY_ANIMATION_DURATION = 200;\n\t\tFSBL.FinsembleWindow.getInstance({ name: baseName }, (err: StandardError, win: FinsembleWindow) => {\n\t\t\tlet windowState = \"hidden\";\n\t\t\tfunction flash(n: any, done: any) {\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({}, (error: StandardError, 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\tasync.timesSeries(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\tthis.setFlashingState(false);\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: (AppIdentifier: { uuid: string }, force = false) => {\n\t\t// AppIdentifier should be of type ChildWindow, but that has `uuid` as optional, and\n\t\t// uuid is required for this function\n\n\t\tconst app = FSBL.System.Application.wrap(AppIdentifier.uuid);\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\tconst 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\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\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);\n\t\t\t}\n\t\t};\n\n\t\tconst 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\tconst closeTimeout = setTimeout(() => {\n\t\t\t\tonCloseFailure();\n\t\t\t}, MAGIC_NUMBER_TERMINATION_TIMEOUT);\n\n\t\t\tconst 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\tconst 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(\n\t\t\t\t() => {},\n\t\t\t\t() => {\n\t\t\t\t\tFSBL.Clients.DialogManager.open(\n\t\t\t\t\t\t\"yesNo\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: \"Error\",\n\t\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\t\taffirmativeButtonLabel: \"Okay\",\n\t\t\t\t\t\t\tshowCancelButton: false,\n\t\t\t\t\t\t\tshowNegativeButton: false,\n\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\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: StandardError, response: { choice: string }) => {\n\t\t\t\tif (err || response.choice === \"affirmative\") {\n\t\t\t\t\tforceCloseProcess();\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: { uuid: string; name: string }) {\n\t\tlet procs: ProcessType[] = ProcessMonitorStore?.getValue({ field: \"processList\" });\n\t\tprocs = procs.map((proc) => {\n\t\t\tif (proc.childWindows) {\n\t\t\t\tconst 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: { uuid: string; name: string }, force = false) {\n\t\tconst win = FSBL.System.Window.wrap(winID.uuid, winID.name);\n\n\t\t//Make the UI feel snappy.\n\t\tActions.removeWindowLocally(winID);\n\n\t\tconst 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: StandardError, response: { choice: string }) => {\n\t\t\t\t\t\tif (err || response.choice === \"affirmative\") {\n\t\t\t\t\t\t\treturn Actions.terminateProcess({ uuid: winID.uuid }, 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\n\t\t//If we can't close within 4 seconds, something's wrong - try to force close it.\n\t\tconst closeTimeout = setTimeout(() => {\n\t\t\tonCloseFailure();\n\t\t}, MAGIC_NUMBER_TERMINATION_TIMEOUT);\n\n\t\tconst onCloseSuccess = () => {\n\t\t\tclearTimeout(closeTimeout);\n\t\t};\n\n\t\twin.close(force, onCloseSuccess, onCloseFailure);\n\t},\n};\n\nexport { ProcessMonitorStore as Store, Actions };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"QuickComponentForm.js","sourceRoot":"","sources":["../../../src/components/quickComponentForm/QuickComponentForm.tsx"],"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\ninterface IProps {}\r\n\r\ninterface IState {\r\n\tname: string;\r\n\turl: string;\r\n}\r\n\r\n// @deprecated - Quick Components will be removed in a future version\r\nclass QuickComponentFormBase extends React.Component<IProps, IState> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tFSBL.Clients.Logger.system.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\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(e: KeyboardEvent) {\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\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 */\r\n\tsave() {\r\n\t\tif (!this.state) return FSBL.Clients.DialogManager.respondToOpener({});\r\n\t\tlet { name, 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: Error | string | null | undefined) => {\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 */\r\n\tcancel() {\r\n\t\tArray.from(document.querySelectorAll(\"input\")).forEach((el) => (el.value = \"\"));\r\n\r\n\t\tFSBL.Clients.DialogManager.respondToOpener({});\r\n\t}\r\n\r\n\tsetName(e: React.ChangeEvent<HTMLInputElement>) {\r\n\t\tthis.setState({ name: e.target.value });\r\n\t}\r\n\r\n\tsetURL(e: React.ChangeEvent<HTMLInputElement>) {\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\r\n\t\t\t\t\tonInputChange={this.setURL}\r\n\t\t\t\t\tplaceholder=\"URL\"\r\n\t\t\t\t\tvalue={this.state.url}\r\n\t\t\t\t\tautoFocus={false}\r\n\t\t\t\t/>\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} show={true}>\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} show={true}>\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.tsx"],"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\ninterface IProps {}\n\ninterface IState {\n\tname: string;\n\turl: string;\n}\n\n// @deprecated - Quick Components will be removed in a future version\nclass QuickComponentFormBase extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tFSBL.Clients.Logger.system.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\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(e: KeyboardEvent) {\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\thideWindow() {\n\t\tfinsembleWindow.hide();\n\t}\n\n\t/**\n\t * Persists the quick component to storage.\n\t */\n\tsave() {\n\t\tif (!this.state) return FSBL.Clients.DialogManager.respondToOpener({});\n\t\tlet { name, 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: Error | string | null | undefined) => {\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 */\n\tcancel() {\n\t\tArray.from(document.querySelectorAll(\"input\")).forEach((el) => (el.value = \"\"));\n\n\t\tFSBL.Clients.DialogManager.respondToOpener({});\n\t}\n\n\tsetName(e: React.ChangeEvent<HTMLInputElement>) {\n\t\tthis.setState({ name: e.target.value });\n\t}\n\n\tsetURL(e: React.ChangeEvent<HTMLInputElement>) {\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\n\t\t\t\t\tonInputChange={this.setURL}\n\t\t\t\t\tplaceholder=\"URL\"\n\t\t\t\t\tvalue={this.state.url}\n\t\t\t\t\tautoFocus={false}\n\t\t\t\t/>\n\t\t\t\t<div className=\"button-wrapper\">\n\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.cancel} show={true}>\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} show={true}>\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,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAQrE,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAQnF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAClD,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAErC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;IAEtF,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAsB,CAAC;IAG3B,IAAI;QACH,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,IAAI,aAAa,GAAG,EAAE,IAAI,CAAC,CAAC;KAC/D;IAAC,OAAO,CAAC,EAAE;QACX,KAAK,GAAG,YAAY,CAAC;QACrB,OAAO,CAAC,KAAK,CACZ,6FAA6F,YAAY,4DAA4D,CACrK,CAAC;KACF;IAED,MAAM,QAAQ,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;IAEpF,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 *Encode characters of string\r\n *\r\n * @param {string} str - String to be encoded\r\n * @returns {string} String with all characters encoded\r\n */\r\nconst encodeStringChars = (str: string) => `&#${str.charCodeAt(0)};`;\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, encodeStringChars);\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\r\n\tconst escapedMatch = matchAgainst.replace(/([.*+?^${}()|[\\]\\\\])/g, encodeStringChars);\r\n\r\n\tconst sanitizedHtml = sanitizeHTML(text);\r\n\tlet regex: RegExp | string;\r\n\r\n\t// Catch unexpected cases where some combination of characters break the RegExp\r\n\ttry {\r\n\t\tregex = new RegExp(`(${escapedMatch || sanitizedHtml})`, \"gi\");\r\n\t} catch (e) {\r\n\t\tregex = escapedMatch;\r\n\t\tconsole.error(\r\n\t\t\t`Failure in Highlight component in finsemble-ui. Expected a valid regex. Instead received \"${matchAgainst}\". Please check that your component is passing valid data.`\r\n\t\t);\r\n\t}\r\n\r\n\tconst itemHtml = sanitizedHtml?.replace(regex, `<span class=\"highlight\">$1</span>`);\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,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAQrE,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAQnF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAClD,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAErC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;IAEtF,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAsB,CAAC;IAG3B,IAAI;QACH,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,IAAI,aAAa,GAAG,EAAE,IAAI,CAAC,CAAC;KAC/D;IAAC,OAAO,CAAC,EAAE;QACX,KAAK,GAAG,YAAY,CAAC;QACrB,OAAO,CAAC,KAAK,CACZ,6FAA6F,YAAY,4DAA4D,CACrK,CAAC;KACF;IAED,MAAM,QAAQ,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;IAEpF,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 *Encode characters of string\n *\n * @param {string} str - String to be encoded\n * @returns {string} String with all characters encoded\n */\nconst encodeStringChars = (str: string) => `&#${str.charCodeAt(0)};`;\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, encodeStringChars);\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\n\tconst escapedMatch = matchAgainst.replace(/([.*+?^${}()|[\\]\\\\])/g, encodeStringChars);\n\n\tconst sanitizedHtml = sanitizeHTML(text);\n\tlet regex: RegExp | string;\n\n\t// Catch unexpected cases where some combination of characters break the RegExp\n\ttry {\n\t\tregex = new RegExp(`(${escapedMatch || sanitizedHtml})`, \"gi\");\n\t} catch (e) {\n\t\tregex = escapedMatch;\n\t\tconsole.error(\n\t\t\t`Failure in Highlight component in finsemble-ui. Expected a valid regex. Instead received \"${matchAgainst}\". Please check that your component is passing valid data.`\n\t\t);\n\t}\n\n\tconst itemHtml = sanitizedHtml?.replace(regex, `<span class=\"highlight\">$1</span>`);\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,oBAAM,KAAK,CAAC,IAAuB,EAAI,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,oBAAM,WAAW,CAAC,IAAuB,EAAI,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,oBAAM,iBAAiB,CAAC,IAAuB,EAAI,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,oBAAM,KAAK,CAAC,IAAuB,EAAI,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,oBAAM,WAAW,CAAC,IAAuB,EAAI,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,oBAAM,iBAAiB,CAAC,IAAuB,EAAI,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"]}