@finsemble/finsemble-ui 6.1.1 → 6.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +28 -28
  2. package/package.json +1 -1
  3. package/react/actions/favoriteActions.js.map +1 -1
  4. package/react/actions/linkerActions.js.map +1 -1
  5. package/react/actions/menuActions.js.map +1 -1
  6. package/react/actions/rootActions.js.map +1 -1
  7. package/react/actions/searchActions.js.map +1 -1
  8. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  9. package/react/actions/toolbarActions.js.map +1 -1
  10. package/react/actions/workspaceActions.js.map +1 -1
  11. package/react/assets/css/advancedAppLauncher.css +636 -636
  12. package/react/assets/css/appCatalog.css +1069 -1069
  13. package/react/assets/css/authentication.css +78 -78
  14. package/react/assets/css/button.css +219 -219
  15. package/react/assets/css/core/formElements.css +23 -23
  16. package/react/assets/css/core/icons.css +69 -69
  17. package/react/assets/css/core/notifications.css +75 -75
  18. package/react/assets/css/core/windowFrame.css +36 -36
  19. package/react/assets/css/dashbar.css +78 -78
  20. package/react/assets/css/defaultTheme.css +356 -356
  21. package/react/assets/css/dialogs.css +158 -158
  22. package/react/assets/css/favorites.css +101 -101
  23. package/react/assets/css/finsemble.css +38 -38
  24. package/react/assets/css/focus.css +4 -4
  25. package/react/assets/css/font-finance.css +385 -385
  26. package/react/assets/css/fonts/Open_Sans/LICENSE.txt +202 -202
  27. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +118 -118
  28. package/react/assets/css/fonts/font-finance.svg +124 -124
  29. package/react/assets/css/fonts/icons-reference.html +1174 -1174
  30. package/react/assets/css/linkerWindow.css +124 -124
  31. package/react/assets/css/menus.css +195 -195
  32. package/react/assets/css/notificationsCenter.css +594 -594
  33. package/react/assets/css/processMonitor.css +213 -213
  34. package/react/assets/css/search.css +128 -128
  35. package/react/assets/css/shared/animations.css +99 -99
  36. package/react/assets/css/tags.css +136 -136
  37. package/react/assets/css/toolbar.css +413 -413
  38. package/react/assets/css/userPreferences.css +565 -565
  39. package/react/assets/css/windowTitleBar.css +619 -619
  40. package/react/assets/icons/check.svg +3 -3
  41. package/react/assets/icons/chevron-left.svg +3 -3
  42. package/react/assets/icons/chevron-right.svg +3 -3
  43. package/react/assets/icons/copy.svg +10 -10
  44. package/react/assets/icons/exclamation-circle.svg +4 -4
  45. package/react/assets/icons/external-link.svg +12 -12
  46. package/react/assets/icons/flag.svg +10 -10
  47. package/react/assets/icons/folder.svg +3 -3
  48. package/react/assets/icons/font.svg +3 -3
  49. package/react/assets/icons/globe.svg +3 -3
  50. package/react/assets/icons/hdd.svg +9 -9
  51. package/react/assets/icons/key.svg +10 -10
  52. package/react/assets/icons/life-ring.svg +3 -3
  53. package/react/assets/icons/magic.svg +15 -15
  54. package/react/assets/icons/moon.svg +10 -10
  55. package/react/assets/icons/paint-roller.svg +3 -3
  56. package/react/assets/icons/pencil.svg +10 -10
  57. package/react/assets/icons/plus.svg +3 -3
  58. package/react/assets/icons/question-circle.svg +5 -5
  59. package/react/assets/icons/search.svg +3 -3
  60. package/react/assets/icons/sun.svg +9 -9
  61. package/react/assets/icons/times.svg +3 -3
  62. package/react/assets/icons/toggle-off.svg +6 -6
  63. package/react/assets/icons/toggle-on.svg +6 -6
  64. package/react/assets/icons/tools.svg +3 -3
  65. package/react/assets/icons/trash.svg +12 -12
  66. package/react/assets/icons/upload.svg +10 -10
  67. package/react/assets/icons/window.svg +3 -3
  68. package/react/componentTemplateGenerator.js +85 -85
  69. package/react/componentTemplateGenerator.js.map +1 -1
  70. package/react/components/FinsembleProvider.js.map +1 -1
  71. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  72. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  73. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  74. package/react/components/appCatalog/components/AppList.js.map +1 -1
  75. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  76. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  77. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  78. package/react/components/appCatalog/components/Hero.js.map +1 -1
  79. package/react/components/appCatalog/components/Home.js.map +1 -1
  80. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  81. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  82. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  83. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  84. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  85. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  86. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  87. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  88. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  89. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  90. package/react/components/appCatalog/components/Showcase/defaults.js.map +1 -1
  91. package/react/components/appCatalog/components/Tag.js.map +1 -1
  92. package/react/components/appCatalog/components/Toast.js.map +1 -1
  93. package/react/components/appCatalog/components/helpers.js.map +1 -1
  94. package/react/components/appCatalog/index.js.map +1 -1
  95. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  96. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  97. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  98. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  99. package/react/components/common/Button.js.map +1 -1
  100. package/react/components/common/ButtonIcon.js.map +1 -1
  101. package/react/components/common/ButtonTile.js.map +1 -1
  102. package/react/components/common/ColorPicker.js.map +1 -1
  103. package/react/components/common/DropZone.js.map +1 -1
  104. package/react/components/common/DropdownButton.js.map +1 -1
  105. package/react/components/common/FileInput.js.map +1 -1
  106. package/react/components/common/FinsembleIcon.js.map +1 -1
  107. package/react/components/common/FinsembleSelect.js.map +1 -1
  108. package/react/components/common/FinsembleToggle.js.map +1 -1
  109. package/react/components/common/FontSizeSelector.js.map +1 -1
  110. package/react/components/common/Header.js.map +1 -1
  111. package/react/components/common/ImagePreview.js.map +1 -1
  112. package/react/components/common/LoadingSpinner.js.map +1 -1
  113. package/react/components/common/Tab.js.map +1 -1
  114. package/react/components/common/Tooltip.js.map +1 -1
  115. package/react/components/common/css/application-edit-page.css +117 -117
  116. package/react/components/common/css/application-list.css +47 -47
  117. package/react/components/common/css/button.css +164 -164
  118. package/react/components/common/css/color-picker.css +52 -52
  119. package/react/components/common/css/drop-zone.css +17 -17
  120. package/react/components/common/css/file-input.css +49 -49
  121. package/react/components/common/css/header.css +43 -43
  122. package/react/components/common/css/icon.css +13 -13
  123. package/react/components/common/css/image-preview.css +57 -57
  124. package/react/components/common/css/loading-spinner.css +39 -39
  125. package/react/components/common/css/selector.css +51 -51
  126. package/react/components/common/css/styles.css +128 -128
  127. package/react/components/common/css/tab.css +56 -56
  128. package/react/components/common/css/toggle.css +32 -32
  129. package/react/components/common/css/tooltip.css +68 -68
  130. package/react/components/common/file_helpers.js.map +1 -1
  131. package/react/components/common/fixtures/FinsembleIcon.css +4 -4
  132. package/react/components/common/helpers.js.map +1 -1
  133. package/react/components/common/stories/Button.stories.js.map +1 -1
  134. package/react/components/common/stories/ButtonIcon.stories.js.map +1 -1
  135. package/react/components/common/stories/ButtonTile.stories.js.map +1 -1
  136. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  137. package/react/components/common/stories/DropZone.stories.js.map +1 -1
  138. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  139. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  140. package/react/components/common/stories/FinsembleSelect.stories.js.map +1 -1
  141. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  142. package/react/components/common/stories/FontSizeSelector.stories.js.map +1 -1
  143. package/react/components/common/stories/Header.stories.js.map +1 -1
  144. package/react/components/common/stories/ImagePreview.stories.js.map +1 -1
  145. package/react/components/common/stories/LoadingSpinner.stories.js.map +1 -1
  146. package/react/components/common/stories/Tab.stories.js.map +1 -1
  147. package/react/components/common/stories/Tooltip.stories.js.map +1 -1
  148. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  149. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  150. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  151. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  152. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  153. package/react/components/common/tests/Header.spec.js.map +1 -1
  154. package/react/components/common/tests/ImagePreview.spec.js.map +1 -1
  155. package/react/components/common/tests/Tab.spec.js.map +1 -1
  156. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  157. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  158. package/react/components/favorites/FavoritesShell.js.map +1 -1
  159. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  160. package/react/components/favorites/FavoritesShell.stories.js.map +1 -1
  161. package/react/components/favorites/index.js.map +1 -1
  162. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  163. package/react/components/fdc3Resolver/ResolverDialog.css +125 -125
  164. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  165. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  166. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  167. package/react/components/icon/Icon.js.map +1 -1
  168. package/react/components/icon/index.js.map +1 -1
  169. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  170. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  171. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  172. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  173. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  174. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  175. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  176. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  177. package/react/components/legacyControls/stories/FinsembleDialog.stories.js.map +1 -1
  178. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js.map +1 -1
  179. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js.map +1 -1
  180. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js.map +1 -1
  181. package/react/components/legacyControls/tests/FinsembleDialog.spec.js.map +1 -1
  182. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  183. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js.map +1 -1
  184. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  185. package/react/components/linker/LinkerMenu.js.map +1 -1
  186. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  187. package/react/components/linker/index.js.map +1 -1
  188. package/react/components/linker/remoteRedux.js.map +1 -1
  189. package/react/components/menu/Menu.js.map +1 -1
  190. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  191. package/react/components/menu/MenuContent.js.map +1 -1
  192. package/react/components/menu/MenuHotKey.js.map +1 -1
  193. package/react/components/menu/MenuItem.js.map +1 -1
  194. package/react/components/menu/MenuPortal.js.map +1 -1
  195. package/react/components/menu/MenuShell.js.map +1 -1
  196. package/react/components/menu/MenuToggle.js.map +1 -1
  197. package/react/components/menu/index.js.map +1 -1
  198. package/react/components/menu/keyboardNavigation.js.map +1 -1
  199. package/react/components/menu/menuContext.js.map +1 -1
  200. package/react/components/menu/menuHelpers.js.map +1 -1
  201. package/react/components/notifications/components/NoNotifications.js.map +1 -1
  202. package/react/components/notifications/components/drawer/Drawer.js.map +1 -1
  203. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  204. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  205. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  206. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  207. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  208. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  209. package/react/components/notifications/components/shared/NotificationCardShell.js +1 -1
  210. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  211. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  212. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  213. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.js.map +1 -1
  214. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  215. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  216. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.js.map +1 -1
  217. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  218. package/react/components/notifications/components/views/CardView.js.map +1 -1
  219. package/react/components/notifications/components/views/ListView.js +1 -1
  220. package/react/components/notifications/components/views/ListView.js.map +1 -1
  221. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  222. package/react/components/notifications/constants.js.map +1 -1
  223. package/react/components/notifications/icons/Card.js.map +1 -1
  224. package/react/components/notifications/icons/Chevron.js.map +1 -1
  225. package/react/components/notifications/icons/CloseIcon.js.map +1 -1
  226. package/react/components/notifications/icons/EnvelopeClose.js.map +1 -1
  227. package/react/components/notifications/icons/EnvelopeOpen.js.map +1 -1
  228. package/react/components/notifications/icons/SnoozeIcon.js.map +1 -1
  229. package/react/components/notifications/index.js.map +1 -1
  230. package/react/components/notifications/notificationsContext.js.map +1 -1
  231. package/react/components/notifications/types.js.map +1 -1
  232. package/react/components/notifications/utils.js.map +1 -1
  233. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  234. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  235. package/react/components/processMonitor/components/ChildWindows.js.map +1 -1
  236. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  237. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  238. package/react/components/processMonitor/constants.js.map +1 -1
  239. package/react/components/processMonitor/helpers.js.map +1 -1
  240. package/react/components/processMonitor/index.js.map +1 -1
  241. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  242. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  243. package/react/components/quickComponentForm/index.js.map +1 -1
  244. package/react/components/quickComponentForm/quickComponent.css +3 -3
  245. package/react/components/search/Highlight.js.map +1 -1
  246. package/react/components/search/Highlight.spec.js.map +1 -1
  247. package/react/components/search/Highlight.stories.js.map +1 -1
  248. package/react/components/search/Search.js.map +1 -1
  249. package/react/components/search/SearchBestMatch.js.map +1 -1
  250. package/react/components/search/SearchInput.js.map +1 -1
  251. package/react/components/search/SearchProviderResults.js.map +1 -1
  252. package/react/components/search/SearchResult.js.map +1 -1
  253. package/react/components/search/SearchResults.js.map +1 -1
  254. package/react/components/search/index.js.map +1 -1
  255. package/react/components/shared/Animate.js.map +1 -1
  256. package/react/components/shared/BellIcon.js.map +1 -1
  257. package/react/components/shared/BellIconCrossed.js.map +1 -1
  258. package/react/components/shared/Button.js.map +1 -1
  259. package/react/components/shared/ConditionalWrapper.js.map +1 -1
  260. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  261. package/react/components/shared/NavigationButton.js.map +1 -1
  262. package/react/components/shared/Tag.js.map +1 -1
  263. package/react/components/shared/TagsMenu.js.map +1 -1
  264. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  265. package/react/components/shared/addProtocolToValidURL.spec.js.map +1 -1
  266. package/react/components/shared/linkerUtil.js.map +1 -1
  267. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  268. package/react/components/shared/validateURL.js.map +1 -1
  269. package/react/components/shared/validateURL.spec.js.map +1 -1
  270. package/react/components/singleInputDialog/SingleInputDialog.css +3 -3
  271. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  272. package/react/components/singleInputDialog/SingleInputDialog.spec.js.map +1 -1
  273. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  274. package/react/components/singleInputDialog/index.js.map +1 -1
  275. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  276. package/react/components/smartDesktopDesigner/Appearance.css +94 -94
  277. package/react/components/smartDesktopDesigner/Appearance.helpers.js.map +1 -1
  278. package/react/components/smartDesktopDesigner/Appearance.js.map +1 -1
  279. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  280. package/react/components/smartDesktopDesigner/ApplicationEdit.js.map +1 -1
  281. package/react/components/smartDesktopDesigner/ApplicationList.js.map +1 -1
  282. package/react/components/smartDesktopDesigner/ApplicationSetup.js.map +1 -1
  283. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  284. package/react/components/smartDesktopDesigner/AssetsPage.css +26 -26
  285. package/react/components/smartDesktopDesigner/AssetsPage.js.map +1 -1
  286. package/react/components/smartDesktopDesigner/Authentication.js.map +1 -1
  287. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js.map +1 -1
  288. package/react/components/smartDesktopDesigner/Content.js.map +1 -1
  289. package/react/components/smartDesktopDesigner/CurrentView.js.map +1 -1
  290. package/react/components/smartDesktopDesigner/Export.js.map +1 -1
  291. package/react/components/smartDesktopDesigner/ExportCloud.js.map +1 -1
  292. package/react/components/smartDesktopDesigner/ExportDeployInfo.js.map +1 -1
  293. package/react/components/smartDesktopDesigner/ExportZip.js.map +1 -1
  294. package/react/components/smartDesktopDesigner/GettingStarted.js.map +1 -1
  295. package/react/components/smartDesktopDesigner/Navigation.js.map +1 -1
  296. package/react/components/smartDesktopDesigner/ProjectErrors.js.map +1 -1
  297. package/react/components/smartDesktopDesigner/ProjectHeader.js.map +1 -1
  298. package/react/components/smartDesktopDesigner/Publish.js.map +1 -1
  299. package/react/components/smartDesktopDesigner/PublishProgress.js.map +1 -1
  300. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  301. package/react/components/smartDesktopDesigner/ThemePage.css +110 -110
  302. package/react/components/smartDesktopDesigner/ThemePage.js.map +1 -1
  303. package/react/components/smartDesktopDesigner/Themes.js.map +1 -1
  304. package/react/components/smartDesktopDesigner/View.js.map +1 -1
  305. package/react/components/smartDesktopDesigner/common/fsbl_functions.js.map +1 -1
  306. package/react/components/smartDesktopDesigner/common/getCSSVars.js.map +1 -1
  307. package/react/components/smartDesktopDesigner/common/views.js +2 -2
  308. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  309. package/react/components/smartDesktopDesigner/css/appearance.css +10 -10
  310. package/react/components/smartDesktopDesigner/css/applications.css +89 -89
  311. package/react/components/smartDesktopDesigner/css/authentication.css +125 -125
  312. package/react/components/smartDesktopDesigner/css/buttons.css +12 -12
  313. package/react/components/smartDesktopDesigner/css/export.css +163 -163
  314. package/react/components/smartDesktopDesigner/css/getting-started.css +6 -6
  315. package/react/components/smartDesktopDesigner/css/nav.css +93 -93
  316. package/react/components/smartDesktopDesigner/css/project-errors.css +15 -15
  317. package/react/components/smartDesktopDesigner/css/project-header.css +121 -121
  318. package/react/components/smartDesktopDesigner/css/styles.css +179 -179
  319. package/react/components/smartDesktopDesigner/css/views.css +16 -16
  320. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js.map +1 -1
  321. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js.map +1 -1
  322. package/react/components/smartDesktopDesigner/fixtures/applicationsProps.js.map +1 -1
  323. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  324. package/react/components/smartDesktopDesigner/fixtures/authenticationProps.js.map +1 -1
  325. package/react/components/smartDesktopDesigner/fixtures/configTemplate.js.map +1 -1
  326. package/react/components/smartDesktopDesigner/fixtures/exportProps.js.map +1 -1
  327. package/react/components/smartDesktopDesigner/fixtures/projectErrorsProps.js.map +1 -1
  328. package/react/components/smartDesktopDesigner/fixtures/publishProgress.js.map +1 -1
  329. package/react/components/smartDesktopDesigner/fixtures/themeProps.js.map +1 -1
  330. package/react/components/smartDesktopDesigner/fixtures/views.js.map +1 -1
  331. package/react/components/smartDesktopDesigner/sdd_helpers.js.map +1 -1
  332. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  333. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js.map +1 -1
  334. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js.map +1 -1
  335. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js.map +1 -1
  336. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js.map +1 -1
  337. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  338. package/react/components/smartDesktopDesigner/stories/AssetsPage.stories.js.map +1 -1
  339. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js.map +1 -1
  340. package/react/components/smartDesktopDesigner/stories/Export.stories.js.map +1 -1
  341. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js.map +1 -1
  342. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js.map +1 -1
  343. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js.map +1 -1
  344. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js.map +1 -1
  345. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js.map +1 -1
  346. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js.map +1 -1
  347. package/react/components/smartDesktopDesigner/stories/Publish.stories.js.map +1 -1
  348. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js.map +1 -1
  349. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js.map +1 -1
  350. package/react/components/smartDesktopDesigner/stories/ThemePage.stories.js.map +1 -1
  351. package/react/components/smartDesktopDesigner/stories/Themes.stories.js.map +1 -1
  352. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  353. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js.map +1 -1
  354. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js.map +1 -1
  355. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js.map +1 -1
  356. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  357. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js.map +1 -1
  358. package/react/components/smartDesktopDesigner/tests/Export.spec.js.map +1 -1
  359. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js.map +1 -1
  360. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js.map +1 -1
  361. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js.map +1 -1
  362. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js.map +1 -1
  363. package/react/components/smartDesktopDesigner/tests/Publish.spec.js.map +1 -1
  364. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js.map +1 -1
  365. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js.map +1 -1
  366. package/react/components/smartDesktopDesigner/tests/Themes.spec.js.map +1 -1
  367. package/react/components/smartDesktopDesigner/tests/a11y_helper.js +3 -3
  368. package/react/components/smartDesktopDesigner/tests/a11y_helper.js.map +1 -1
  369. package/react/components/smartDesktopDesigner/themeDefinitions.js.map +1 -1
  370. package/react/components/system/System.js.map +1 -1
  371. package/react/components/system/System.spec.js.map +1 -1
  372. package/react/components/system/System.stories.js.map +1 -1
  373. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  374. package/react/components/system/index.js.map +1 -1
  375. package/react/components/toolbar/AutoArrange.js.map +1 -1
  376. package/react/components/toolbar/DragHandle.js.map +1 -1
  377. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  378. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  379. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  380. package/react/components/toolbar/NotificationControl.js.map +1 -1
  381. package/react/components/toolbar/RevealAll.js.map +1 -1
  382. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  383. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  384. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  385. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  386. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  387. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  388. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  389. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  390. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  391. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  392. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  393. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js.map +1 -1
  394. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  395. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  396. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  397. package/react/components/toolbar/advancedAppLauncher/components/LeftNav.js.map +1 -1
  398. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  399. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js.map +1 -1
  400. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  401. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js.map +1 -1
  402. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js.map +1 -1
  403. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  404. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  405. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  406. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  407. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js.map +1 -1
  408. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  409. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  410. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  411. package/react/components/toolbar/appLauncher/DynamicAppLauncher.js.map +1 -1
  412. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  413. package/react/components/toolbar/appLauncher/appLauncher.css +30 -30
  414. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  415. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  416. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  417. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  418. package/react/components/toolbar/index.js.map +1 -1
  419. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  420. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  421. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  422. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  423. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  424. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +94 -94
  425. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  426. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  427. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  428. package/react/components/userPreferences/components/Checkbox.js.map +1 -1
  429. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  430. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  431. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  432. package/react/components/userPreferences/components/content/General.js.map +1 -1
  433. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  434. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  435. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  436. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  437. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  438. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  439. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  440. package/react/components/userPreferences/index.js.map +1 -1
  441. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  442. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  443. package/react/components/utils.js.map +1 -1
  444. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  445. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  446. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  447. package/react/components/windowTitleBar/components/center/TabRegion.js.map +1 -1
  448. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  449. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  450. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  451. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  452. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  453. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  454. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  455. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  456. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  457. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  458. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  459. package/react/components/windowTitleBar/index.js.map +1 -1
  460. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  461. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +1 -1
  462. package/react/components/windowTitleBar/windowTitleBarContext.js.map +1 -1
  463. package/react/components/yesNoDialog/Timer.spec.js.map +1 -1
  464. package/react/components/yesNoDialog/Timer.stories.js.map +1 -1
  465. package/react/components/yesNoDialog/YesNoDialog.css +3 -3
  466. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  467. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  468. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  469. package/react/components/yesNoDialog/index.js.map +1 -1
  470. package/react/components/yesNoDialog/timer.js.map +1 -1
  471. package/react/enzymeSetup.js.map +1 -1
  472. package/react/hooks/index.js.map +1 -1
  473. package/react/hooks/useAuth.js.map +1 -1
  474. package/react/hooks/useDeepEffect.js.map +1 -1
  475. package/react/hooks/useFavorites.js.map +1 -1
  476. package/react/hooks/useFavoritesShell.js.map +1 -1
  477. package/react/hooks/useHotkey.js.map +1 -1
  478. package/react/hooks/useLinker.js.map +1 -1
  479. package/react/hooks/useMenu.js.map +1 -1
  480. package/react/hooks/useNotifications.js.map +1 -1
  481. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  482. package/react/hooks/usePubSub.js.map +1 -1
  483. package/react/hooks/useSearch.js.map +1 -1
  484. package/react/hooks/useToolbar.js.map +1 -1
  485. package/react/hooks/useWorkspace.js.map +1 -1
  486. package/react/reducers/favoriteReducer.js.map +1 -1
  487. package/react/reducers/linkerReducer.js.map +1 -1
  488. package/react/reducers/menuReducer.js.map +1 -1
  489. package/react/reducers/rootReducer.js.map +1 -1
  490. package/react/reducers/searchReducer.js.map +1 -1
  491. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  492. package/react/reducers/toolbarReducer.js.map +1 -1
  493. package/react/reducers/workspaceReducer.js.map +1 -1
  494. package/react/store.js.map +1 -1
  495. package/react/types/advancedAppLauncherTypes.js.map +1 -1
  496. package/react/types/dashbarTypes.js.map +1 -1
  497. package/react/types/favoriteTypes.js.map +1 -1
  498. package/react/types/fdc3.js.map +1 -1
  499. package/react/types/hotkeyTypes.js.map +1 -1
  500. package/react/types/iconTypes.js.map +1 -1
  501. package/react/types/linkerTypes.js.map +1 -1
  502. package/react/types/searchTypes.js.map +1 -1
  503. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  504. package/react/types/workspaceTypes.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"StaticAppLauncherMenu.js","sourceRoot":"","sources":["../../../../src/components/toolbar/appLauncher/StaticAppLauncherMenu.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,mBAAmB,CAAC;AAW3B,MAAM,OAAO,qBAAsB,SAAQ,KAAK,CAAC,SAAS;IACzD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACZ,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,KAAK;SAClB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,QAAQ,CAAC;YACb,WAAW,EAAE,IAAI;SACjB,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB;QAChB,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,YAAY,CAAC,UAAU,EAAE,CAAC;QAG1B,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9C,eAAe,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC5G;IACF,CAAC;IAED,oBAAoB;QACnB,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAGD,kBAAkB;QAEjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM;QACL,IAAI,aAAa,GAAG;YACnB,GAAG,IAAI,CAAC,KAAK;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG;YAC9B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,iBAAiB;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM;YACjC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,0BAA0B;SAC7D,CAAC;QAEF,OAAO,CACN,oBAAC,IAAI,OAAK,aAAa;YACrB,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,CAC3C,6BAAK,SAAS,EAAC,gBAAgB;gBAC9B,oBAAC,QAAQ,IAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,cAAoB,CACzD,CACN,CAAC,CAAC,CAAC,IAAI;YACP,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAC1B,oBAAC,aAAa,IACb,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAC3C,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAC9C,CACF,CACK,CACP,CAAC;IACH,CAAC;CACD","sourcesContent":["import * as React from \"react\";\r\nimport { Menu } from \"../../menu/Menu\";\r\nimport { MenuItem } from \"../../menu/MenuItem\";\r\nimport ComponentList from \"./components/componentList\";\r\nimport { storeManager } from \"./stores/appLauncherStore\";\r\n\r\nimport \"./appLauncher.css\";\r\n\r\n/**\r\n * The \"app\" button that launches the AppLauncher menu from the toolbar.\r\n * The app launcher lists all configured Finsemble applications.\r\n *\r\n * @param {boolean} [enableQuickComponents=false] DEPRECATED: Set to true to allow users to create their own components\r\n * @param {string} [title] The title of the menu, as viewed in the toolbar\r\n * @param {string[]} [componentFilter] Custom list of menu items to display\r\n * @param {boolean} [suppressFavorites=false]\r\n */\r\nexport class StaticAppLauncherMenu extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tdimensions: {},\r\n\t\t\tcomponentList: {},\r\n\t\t\tinitialized: false,\r\n\t\t};\r\n\t\tthis.onInitialized = this.onInitialized.bind(this);\r\n\t}\r\n\r\n\tonInitialized() {\r\n\t\tthis.setState({\r\n\t\t\tinitialized: true,\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tstoreManager.addInitializedListener(this.onInitialized);\r\n\t\tstoreManager.initialize();\r\n\r\n\t\t// Focus on the window when it is shown so that a click elsewhere will trigger a blur.\r\n\t\tfinsembleWindow.addEventListener(\"shown\", () => {\r\n\t\t\tfinsembleWindow.focus();\r\n\t\t});\r\n\r\n\t\tif (this.props.enableQuickComponents) {\r\n\t\t\tFSBL.Clients.Logger.system.error(\"QuickComponents are deprecated and will be removed in a future release.\");\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tstoreManager.removeInitializedListener(this.onInitialized);\r\n\t}\r\n\r\n\t// @deprecated - Quick Components will be removed in a future version\r\n\topenQuickComponent() {\r\n\t\t// FSBL.Clients.LauncherClient.spawn(\"QuickComponentForm\", { monitor: \"mine\" });\r\n\t\tFSBL.Clients.DialogManager.open(\"QuickComponentForm\", {}, () => {});\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet completeProps = {\r\n\t\t\t...this.props,\r\n\t\t\twidth: this.props.width ?? 300,\r\n\t\t\tid: this.props.id ?? \"AppLauncherMenu\",\r\n\t\t\ttitle: this.props.title ?? \"Apps\",\r\n\t\t\tclassName: this.props.className ?? \"menu-portal app-launcher\",\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t<Menu {...completeProps}>\r\n\t\t\t\t{this.props.enableQuickComponents == true ? (\r\n\t\t\t\t\t<div className=\"menu-secondary\">\r\n\t\t\t\t\t\t<MenuItem onClick={this.openQuickComponent}>New App</MenuItem>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t) : null}\r\n\t\t\t\t{this.state.initialized && (\r\n\t\t\t\t\t<ComponentList\r\n\t\t\t\t\t\tcomponentFilter={this.props.componentFilter}\r\n\t\t\t\t\t\tsuppressFavorites={this.props.suppressFavorites}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t</Menu>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"StaticAppLauncherMenu.js","sourceRoot":"","sources":["../../../../src/components/toolbar/appLauncher/StaticAppLauncherMenu.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,mBAAmB,CAAC;AAW3B,MAAM,OAAO,qBAAsB,SAAQ,KAAK,CAAC,SAAS;IACzD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACZ,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,KAAK;SAClB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,QAAQ,CAAC;YACb,WAAW,EAAE,IAAI;SACjB,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB;QAChB,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,YAAY,CAAC,UAAU,EAAE,CAAC;QAG1B,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9C,eAAe,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC5G;IACF,CAAC;IAED,oBAAoB;QACnB,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAGD,kBAAkB;QAEjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM;QACL,IAAI,aAAa,GAAG;YACnB,GAAG,IAAI,CAAC,KAAK;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG;YAC9B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,iBAAiB;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM;YACjC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,0BAA0B;SAC7D,CAAC;QAEF,OAAO,CACN,oBAAC,IAAI,OAAK,aAAa;YACrB,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,CAC3C,6BAAK,SAAS,EAAC,gBAAgB;gBAC9B,oBAAC,QAAQ,IAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,cAAoB,CACzD,CACN,CAAC,CAAC,CAAC,IAAI;YACP,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAC1B,oBAAC,aAAa,IACb,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAC3C,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAC9C,CACF,CACK,CACP,CAAC;IACH,CAAC;CACD","sourcesContent":["import * as React from \"react\";\nimport { Menu } from \"../../menu/Menu\";\nimport { MenuItem } from \"../../menu/MenuItem\";\nimport ComponentList from \"./components/componentList\";\nimport { storeManager } from \"./stores/appLauncherStore\";\n\nimport \"./appLauncher.css\";\n\n/**\n * The \"app\" button that launches the AppLauncher menu from the toolbar.\n * The app launcher lists all configured Finsemble applications.\n *\n * @param {boolean} [enableQuickComponents=false] DEPRECATED: Set to true to allow users to create their own components\n * @param {string} [title] The title of the menu, as viewed in the toolbar\n * @param {string[]} [componentFilter] Custom list of menu items to display\n * @param {boolean} [suppressFavorites=false]\n */\nexport class StaticAppLauncherMenu extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tdimensions: {},\n\t\t\tcomponentList: {},\n\t\t\tinitialized: false,\n\t\t};\n\t\tthis.onInitialized = this.onInitialized.bind(this);\n\t}\n\n\tonInitialized() {\n\t\tthis.setState({\n\t\t\tinitialized: true,\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tstoreManager.addInitializedListener(this.onInitialized);\n\t\tstoreManager.initialize();\n\n\t\t// Focus on the window when it is shown so that a click elsewhere will trigger a blur.\n\t\tfinsembleWindow.addEventListener(\"shown\", () => {\n\t\t\tfinsembleWindow.focus();\n\t\t});\n\n\t\tif (this.props.enableQuickComponents) {\n\t\t\tFSBL.Clients.Logger.system.error(\"QuickComponents are deprecated and will be removed in a future release.\");\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstoreManager.removeInitializedListener(this.onInitialized);\n\t}\n\n\t// @deprecated - Quick Components will be removed in a future version\n\topenQuickComponent() {\n\t\t// FSBL.Clients.LauncherClient.spawn(\"QuickComponentForm\", { monitor: \"mine\" });\n\t\tFSBL.Clients.DialogManager.open(\"QuickComponentForm\", {}, () => {});\n\t}\n\n\trender() {\n\t\tlet completeProps = {\n\t\t\t...this.props,\n\t\t\twidth: this.props.width ?? 300,\n\t\t\tid: this.props.id ?? \"AppLauncherMenu\",\n\t\t\ttitle: this.props.title ?? \"Apps\",\n\t\t\tclassName: this.props.className ?? \"menu-portal app-launcher\",\n\t\t};\n\n\t\treturn (\n\t\t\t<Menu {...completeProps}>\n\t\t\t\t{this.props.enableQuickComponents == true ? (\n\t\t\t\t\t<div className=\"menu-secondary\">\n\t\t\t\t\t\t<MenuItem onClick={this.openQuickComponent}>New App</MenuItem>\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t{this.state.initialized && (\n\t\t\t\t\t<ComponentList\n\t\t\t\t\t\tcomponentFilter={this.props.componentFilter}\n\t\t\t\t\t\tsuppressFavorites={this.props.suppressFavorites}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Menu>\n\t\t);\n\t}\n}\n"]}
@@ -1,30 +1,30 @@
1
- /*!
2
- * appLauncher.css
3
- * Copyright 2017 - 2020 by ChartIQ, Inc.
4
- * All rights reserved.
5
- */
6
-
7
- @import url("../../../assets/css/menus.css");
8
-
9
- .app-launcher-list {
10
- padding-top: 4px;
11
- }
12
-
13
- /* hover must be set again after overwriting focus for highlight to continue to work on hover after favoriting*/
14
- .app-launcher-list .menu-item:hover {
15
- background: var(--menu-content-hover-color);
16
- outline: none;
17
- }
18
-
19
- .app-launcher .icon-avatar {
20
- position: relative;
21
- top: -4px;
22
- }
23
-
24
- /*
25
- This code prevents a "long word" in a flexbox from pushing other children off the edge of the screen.
26
- */
27
- .app-launcher .menu-item-row > *:first-child {
28
- min-width: 1%;
29
- overflow: hidden;
30
- }
1
+ /*!
2
+ * appLauncher.css
3
+ * Copyright 2017 - 2020 by ChartIQ, Inc.
4
+ * All rights reserved.
5
+ */
6
+
7
+ @import url("../../../assets/css/menus.css");
8
+
9
+ .app-launcher-list {
10
+ padding-top: 4px;
11
+ }
12
+
13
+ /* hover must be set again after overwriting focus for highlight to continue to work on hover after favoriting*/
14
+ .app-launcher-list .menu-item:hover {
15
+ background: var(--menu-content-hover-color);
16
+ outline: none;
17
+ }
18
+
19
+ .app-launcher .icon-avatar {
20
+ position: relative;
21
+ top: -4px;
22
+ }
23
+
24
+ /*
25
+ This code prevents a "long word" in a flexbox from pushing other children off the edge of the screen.
26
+ */
27
+ .app-launcher .menu-item-row > *:first-child {
28
+ min-width: 1%;
29
+ overflow: hidden;
30
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"componentList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/appLauncher/components/componentList.jsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,IAAI,gBAAgB,CAAC;AAMrB,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;IACjC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC;IACvD,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,EAAE;QAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;YACnE,IAAI,UAAU,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;gBACpC,cAAc,CAAC,IAAI,CAAC,CAAC;aACrB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CACN,8BAAM,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAC,gBAAgB;QAC3D,2BAAG,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAC,QAAQ,GAAK,CACjD,CACP,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,KAAK,CAAC,SAAS;IAChE,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG;YACZ,aAAa,EAAE,EAAE;YAEjB,wBAAwB,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;SACrD,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB,CAAC,SAAS;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,eAAe,EAAE;YAC7D,IAAI,CAAC,QAAQ,CAAC;gBACb,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE;aAC1D,CAAC,CAAC;SACH;IACF,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,qBAAqB,CAAC,GAAG,EAAE,IAAI;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC;YACb,aAAa,EAAE,IAAI,CAAC,KAAK;SACzB,CAAC,CAAC;IACJ,CAAC;IAED,eAAe;QACd,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC;gBACb,aAAa,EAAE,IAAI;aACnB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB;QAChB,gBAAgB,GAAG,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,gBAAgB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtF,CAAC;IAED,oBAAoB;QACnB,gBAAgB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACzF,CAAC;IAED,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;QAEpC,IAAI,SAAS,CAAC,KAAK,EAAE;YACpB,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC1C,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;oBAC5B,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC;iBAChD;gBACD,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;aAClE;SACD;aAAM;YACN,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;gBACpC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;aACnD;YACD,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;SAC1D;IACF,CAAC;IAED,kBAAkB,CAAC,MAAM;QACxB,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,WAAW,GAAG,GAAG,CAAC;QAGtB,IACC,CAAC,CAAC,MAAM;YACP,CAAC,MAAM,CAAC,MAAM;YACd,CAAC,MAAM,CAAC,OAAO;YACf,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU;YAC1B,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAC1C,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC;YAC7D,CAAC,MAAM,CAAC,KAAK,EACZ;YACD,OAAO;SACP;QAGD,IAAI,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC5C,OAAO;SACP;QAGD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;YACrD,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;SACrC;QACD,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACrF,OAAO,CACN,oBAAC,QAAQ,IACR,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,EAC/C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;YAED,6BAAK,SAAS,EAAC,eAAe;gBAC7B,8BAAM,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,WAAW,IAC3C,WAAW,CACN;gBACP,8BAAM,SAAS,EAAC,0BAA0B;oBACxC,aAAa,IAAI,oBAAC,eAAe,IAAC,IAAI,EAAE,WAAW,GAAI;oBACvD,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CACjC,oBAAC,aAAa,IACb,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAC3B,QAAQ,EAAC,aAAa,EACtB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAC,gBAAgB,GACzB,CACF,CACK,CACF,CACI,CACX,CAAC;IACH,CAAC;IAED,oBAAoB;QACnB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE;YAC5E,IAAI,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE;gBAC1C,OAAO,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;aAC9D;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAGH,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,OAAO,CACN,6BAAK,SAAS,EAAC,mBAAmB,IAChC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CACvB,aAAa,CACb,CAAC,CAAC,CAAC,CACH;YACE,GAAG;8HAGD,CACJ,CACI,CACN,CAAC;IACH,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,gCAAW,CAAC;IAC7E,CAAC;CACD","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n */\r\n/**\r\n * This is the list of all components in the appLauncher.\r\n */\r\nimport React from \"react\";\r\nimport { getStore, Actions as appLauncherActions } from \"../stores/appLauncherStore\";\r\nimport { MenuItem } from \"../../../menu/MenuItem\";\r\nimport { FavoriteMaker } from \"../../../favorites/FavoriteMaker\";\r\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\r\nimport { iconFromConfig } from \"../../../icon/Icon\";\r\n\r\nlet appLauncherStore;\r\n\r\n/**\r\n * Handles deleting a component and removing it from favorites if necessary\r\n * @param {} props\r\n */\r\nconst DeleteComponent = (props) => {\r\n\tconst { name } = props;\r\n\tconst { isFavorited, removeFavorite } = useFavorites();\r\n\tconst doDeleteComponent = (e) => {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tappLauncherActions.handleRemoveCustomComponent(name, (wasDeleted) => {\r\n\t\t\tif (wasDeleted && isFavorited(name)) {\r\n\t\t\t\tremoveFavorite(name);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\treturn (\r\n\t\t<span onClick={doDeleteComponent} className=\"menu-item-icon\">\r\n\t\t\t<i className=\"ff-adp-trash-outline\" title=\"Delete\"></i>\r\n\t\t</span>\r\n\t);\r\n};\r\n\r\nexport default class appLauncherContainer extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t\tcomponentList: {},\r\n\t\t\t// list of components to display instead of all components\r\n\t\t\tfilteredListOfComponents: props.componentFilter ?? [],\r\n\t\t};\r\n\t\tthis.bindCorrectContext();\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps) {\r\n\t\tif (this.props.componentFilter !== prevProps.componentFilter) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tfilteredListOfComponents: this.props.componentFilter ?? [],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tbindCorrectContext() {\r\n\t\tthis.onComponentListUpdate = this.onComponentListUpdate.bind(this);\r\n\t\tthis.buildComponentItem = this.buildComponentItem.bind(this);\r\n\t}\r\n\r\n\tonComponentListUpdate(err, data) {\r\n\t\tFSBL.Clients.Logger.debug(\"appLauncher onComponentListUpdate\");\r\n\t\tthis.setState({\r\n\t\t\tcomponentList: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tsetInitialState() {\r\n\t\tlet self = this;\r\n\t\tappLauncherStore.getValue({ field: \"componentList\" }, (err, data) => {\r\n\t\t\tself.setState({\r\n\t\t\t\tcomponentList: data,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tappLauncherStore = getStore();\r\n\t\tthis.setInitialState();\r\n\t\tappLauncherStore.addListener({ field: \"componentList\" }, this.onComponentListUpdate);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tappLauncherStore.removeListener({ field: \"componentList\" }, this.onComponentListUpdate);\r\n\t}\r\n\r\n\tlaunchComponent(component, params, cb) {\r\n\t\t// If we are launching a group\r\n\t\tif (component.group) {\r\n\t\t\tfor (let i of Object.keys(component.list)) {\r\n\t\t\t\tlet cloneParams = Object.assign({}, params);\r\n\t\t\t\tlet c = component.list[i];\r\n\t\t\t\tif (c.component.windowGroup) {\r\n\t\t\t\t\tcloneParams.groupName = c.component.windowGroup;\r\n\t\t\t\t}\r\n\t\t\t\tappLauncherActions.launchComponent(component.list[i], params, cb);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (component.component.windowGroup) {\r\n\t\t\t\tparams.groupName = component.component.windowGroup;\r\n\t\t\t}\r\n\t\t\tappLauncherActions.launchComponent(component, params, cb);\r\n\t\t}\r\n\t}\r\n\r\n\tbuildComponentItem(params) {\r\n\t\tconst { key, isUserDefined } = params;\r\n\t\tconst config = this.state.componentList[key];\r\n\t\tlet displayName = key;\r\n\r\n\t\t// If the app isn't launchable by the user, don't show it\r\n\t\tif (\r\n\t\t\t(!config ||\r\n\t\t\t\t!config.window ||\r\n\t\t\t\t!config.foreign ||\r\n\t\t\t\t!config.foreign.components ||\r\n\t\t\t\t!config.foreign.components[\"App Launcher\"] ||\r\n\t\t\t\t!config.foreign.components[\"App Launcher\"].launchableByUser) &&\r\n\t\t\t!config.group\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If the app is temporary (actively being configured in the Smart Desktop Designer), don't show it\r\n\t\tif (config?.appDConfig?.manifest?.temporary) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Component developers can define a display name that will show instead of the component's type.\r\n\t\tif (config.component && config.component.displayName) {\r\n\t\t\t({ displayName } = config.component);\r\n\t\t}\r\n\t\tconst iconObject = iconFromConfig(config?.foreign?.components?.Toolbar, displayName);\r\n\t\treturn (\r\n\t\t\t<MenuItem\r\n\t\t\t\tkey={key}\r\n\t\t\t\tonClick={() => this.launchComponent(config, {})}\r\n\t\t\t\tonKeyDown={(e) => {\r\n\t\t\t\t\tconsole.log(e);\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t<div className=\"menu-item-row\">\r\n\t\t\t\t\t<span className=\"app-name\" title={displayName}>\r\n\t\t\t\t\t\t{displayName}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<span className=\"menu-item-row-push-right\">\r\n\t\t\t\t\t\t{isUserDefined && <DeleteComponent name={displayName} />}\r\n\t\t\t\t\t\t{!this.props.suppressFavorites && (\r\n\t\t\t\t\t\t\t<FavoriteMaker\r\n\t\t\t\t\t\t\t\tid={config?.component?.type}\r\n\t\t\t\t\t\t\t\tcategory=\"Application\"\r\n\t\t\t\t\t\t\t\tname={displayName}\r\n\t\t\t\t\t\t\t\ticon={iconObject}\r\n\t\t\t\t\t\t\t\tclassName=\"menu-item-icon\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</div>\r\n\t\t\t</MenuItem>\r\n\t\t);\r\n\t}\r\n\r\n\trenderComponentsList() {\r\n\t\tconst { state } = this;\r\n\t\tconst components = Object.keys(state.componentList).filter((componentType) => {\r\n\t\t\tif (state.filteredListOfComponents.length) {\r\n\t\t\t\treturn state.filteredListOfComponents.includes(componentType);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\t// if this is greater than 0, we don't show a note telling the user to check their configs.\r\n\t\t// iterate through componentList and render a componentItem for each one.\r\n\t\tconst componentList = components.map((key, i) => {\r\n\t\t\tconst { component } = state.componentList[key];\r\n\t\t\tconst isUserDefined = Boolean(component && component.isUserDefined);\r\n\t\t\treturn this.buildComponentItem({ i, key, isUserDefined });\r\n\t\t});\r\n\t\treturn (\r\n\t\t\t<div className=\"app-launcher-list\">\r\n\t\t\t\t{componentList.length ? (\r\n\t\t\t\t\tcomponentList\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<p>\r\n\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\tNo components loaded. Make sure to check ./src/components.json to make sure you&apos;ve set everything up\r\n\t\t\t\t\t\tcorrectly.\r\n\t\t\t\t\t</p>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn this.state.componentList ? this.renderComponentsList() : <div></div>;\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"componentList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/appLauncher/components/componentList.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\n/**\n * This is the list of all components in the appLauncher.\n */\nimport React from \"react\";\nimport { getStore, Actions as appLauncherActions } from \"../stores/appLauncherStore\";\nimport { MenuItem } from \"../../../menu/MenuItem\";\nimport { FavoriteMaker } from \"../../../favorites/FavoriteMaker\";\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\nimport { iconFromConfig } from \"../../../icon/Icon\";\n\nlet appLauncherStore;\n\n/**\n * Handles deleting a component and removing it from favorites if necessary\n * @param {} props\n */\nconst DeleteComponent = (props) => {\n\tconst { name } = props;\n\tconst { isFavorited, removeFavorite } = useFavorites();\n\tconst doDeleteComponent = (e) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tappLauncherActions.handleRemoveCustomComponent(name, (wasDeleted) => {\n\t\t\tif (wasDeleted && isFavorited(name)) {\n\t\t\t\tremoveFavorite(name);\n\t\t\t}\n\t\t});\n\t};\n\treturn (\n\t\t<span onClick={doDeleteComponent} className=\"menu-item-icon\">\n\t\t\t<i className=\"ff-adp-trash-outline\" title=\"Delete\"></i>\n\t\t</span>\n\t);\n};\n\nexport default class appLauncherContainer extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tcomponentList: {},\n\t\t\t// list of components to display instead of all components\n\t\t\tfilteredListOfComponents: props.componentFilter ?? [],\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.componentFilter !== prevProps.componentFilter) {\n\t\t\tthis.setState({\n\t\t\t\tfilteredListOfComponents: this.props.componentFilter ?? [],\n\t\t\t});\n\t\t}\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.onComponentListUpdate = this.onComponentListUpdate.bind(this);\n\t\tthis.buildComponentItem = this.buildComponentItem.bind(this);\n\t}\n\n\tonComponentListUpdate(err, data) {\n\t\tFSBL.Clients.Logger.debug(\"appLauncher onComponentListUpdate\");\n\t\tthis.setState({\n\t\t\tcomponentList: data.value,\n\t\t});\n\t}\n\n\tsetInitialState() {\n\t\tlet self = this;\n\t\tappLauncherStore.getValue({ field: \"componentList\" }, (err, data) => {\n\t\t\tself.setState({\n\t\t\t\tcomponentList: data,\n\t\t\t});\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tappLauncherStore = getStore();\n\t\tthis.setInitialState();\n\t\tappLauncherStore.addListener({ field: \"componentList\" }, this.onComponentListUpdate);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tappLauncherStore.removeListener({ field: \"componentList\" }, this.onComponentListUpdate);\n\t}\n\n\tlaunchComponent(component, params, cb) {\n\t\t// If we are launching a group\n\t\tif (component.group) {\n\t\t\tfor (let i of Object.keys(component.list)) {\n\t\t\t\tlet cloneParams = Object.assign({}, params);\n\t\t\t\tlet c = component.list[i];\n\t\t\t\tif (c.component.windowGroup) {\n\t\t\t\t\tcloneParams.groupName = c.component.windowGroup;\n\t\t\t\t}\n\t\t\t\tappLauncherActions.launchComponent(component.list[i], params, cb);\n\t\t\t}\n\t\t} else {\n\t\t\tif (component.component.windowGroup) {\n\t\t\t\tparams.groupName = component.component.windowGroup;\n\t\t\t}\n\t\t\tappLauncherActions.launchComponent(component, params, cb);\n\t\t}\n\t}\n\n\tbuildComponentItem(params) {\n\t\tconst { key, isUserDefined } = params;\n\t\tconst config = this.state.componentList[key];\n\t\tlet displayName = key;\n\n\t\t// If the app isn't launchable by the user, don't show it\n\t\tif (\n\t\t\t(!config ||\n\t\t\t\t!config.window ||\n\t\t\t\t!config.foreign ||\n\t\t\t\t!config.foreign.components ||\n\t\t\t\t!config.foreign.components[\"App Launcher\"] ||\n\t\t\t\t!config.foreign.components[\"App Launcher\"].launchableByUser) &&\n\t\t\t!config.group\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the app is temporary (actively being configured in the Smart Desktop Designer), don't show it\n\t\tif (config?.appDConfig?.manifest?.temporary) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Component developers can define a display name that will show instead of the component's type.\n\t\tif (config.component && config.component.displayName) {\n\t\t\t({ displayName } = config.component);\n\t\t}\n\t\tconst iconObject = iconFromConfig(config?.foreign?.components?.Toolbar, displayName);\n\t\treturn (\n\t\t\t<MenuItem\n\t\t\t\tkey={key}\n\t\t\t\tonClick={() => this.launchComponent(config, {})}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tconsole.log(e);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"menu-item-row\">\n\t\t\t\t\t<span className=\"app-name\" title={displayName}>\n\t\t\t\t\t\t{displayName}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span className=\"menu-item-row-push-right\">\n\t\t\t\t\t\t{isUserDefined && <DeleteComponent name={displayName} />}\n\t\t\t\t\t\t{!this.props.suppressFavorites && (\n\t\t\t\t\t\t\t<FavoriteMaker\n\t\t\t\t\t\t\t\tid={config?.component?.type}\n\t\t\t\t\t\t\t\tcategory=\"Application\"\n\t\t\t\t\t\t\t\tname={displayName}\n\t\t\t\t\t\t\t\ticon={iconObject}\n\t\t\t\t\t\t\t\tclassName=\"menu-item-icon\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\n\trenderComponentsList() {\n\t\tconst { state } = this;\n\t\tconst components = Object.keys(state.componentList).filter((componentType) => {\n\t\t\tif (state.filteredListOfComponents.length) {\n\t\t\t\treturn state.filteredListOfComponents.includes(componentType);\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\t// if this is greater than 0, we don't show a note telling the user to check their configs.\n\t\t// iterate through componentList and render a componentItem for each one.\n\t\tconst componentList = components.map((key, i) => {\n\t\t\tconst { component } = state.componentList[key];\n\t\t\tconst isUserDefined = Boolean(component && component.isUserDefined);\n\t\t\treturn this.buildComponentItem({ i, key, isUserDefined });\n\t\t});\n\t\treturn (\n\t\t\t<div className=\"app-launcher-list\">\n\t\t\t\t{componentList.length ? (\n\t\t\t\t\tcomponentList\n\t\t\t\t) : (\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\tNo components loaded. Make sure to check ./src/components.json to make sure you&apos;ve set everything up\n\t\t\t\t\t\tcorrectly.\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn this.state.componentList ? this.renderComponentsList() : <div></div>;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"appLauncherStore.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/appLauncher/stores/appLauncherStore.js"],"names":[],"mappings":"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","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n */\r\n\r\nimport async from \"async\";\r\nlet appLauncherStore;\r\nlet windowGroupStore;\r\nvar COMPONENT_UPDATE_CHANNEL;\r\n\r\nvar Actions = {\r\n\tinitialize: function (cb) {\r\n\t\tasync.parallel(\r\n\t\t\t[\r\n\t\t\t\tActions.initializeComponentList,\r\n\t\t\t\tActions.getUserDefinedComponentList,\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\r\n\t\t\t\tsetupHotkeys,\r\n\t\t\t],\r\n\t\t\t(err) => {\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\tFSBL.Clients.Logger.debug(\"Actions.initialize done\");\r\n\t\t\t\tcb();\r\n\t\t\t}\r\n\t\t);\r\n\t},\r\n\tgetComponentList(cb) {\r\n\t\tFSBL.Clients.LauncherClient.getComponentList((err, response) => {\r\n\t\t\tif (err) {\r\n\t\t\t\tthrow new Error(err);\r\n\t\t\t}\r\n\t\t\t// Each AppLauncher\r\n\t\t\tFSBL.Clients.Logger.debug(\"getComponentList from LauncherClient\", response);\r\n\t\t\tActions.filterComponents(response);\r\n\t\t\tif (cb) {\r\n\t\t\t\tcb();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\tinitializeComponentList(cb) {\r\n\t\tvar self = Actions;\r\n\t\tvar firstTime = true;\r\n\r\n\t\t// When an app launcher button is clicked, it sends over the types of components that the app launcher can spawn. We assign that data to an object in the windowClient, and then use that to render the app launcher.\r\n\t\tFSBL.Clients.RouterClient.subscribe(COMPONENT_UPDATE_CHANNEL, (err, response) => {\r\n\t\t\tif (!FSBL.Clients.WindowClient.options.customData.spawnData) {\r\n\t\t\t\tFSBL.Clients.WindowClient.options.customData.spawnData = {};\r\n\t\t\t}\r\n\t\t\tObject.assign(FSBL.Clients.WindowClient.options.customData.spawnData, response.data);\r\n\t\t\tif (firstTime) {\r\n\t\t\t\t// only update component list the first time to eliminate re-rendering the menu\r\n\t\t\t\tActions.getComponentList(cb);\r\n\t\t\t\tfirstTime = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Whenever we add or remove a component, this event is fired. We get a list of all components, then filter it out to include only the ones that this particular launcher is capable of spawning.\r\n\t\tFSBL.Clients.RouterClient.subscribe(\"Launcher.update\", (err, response) => {\r\n\t\t\tFSBL.Clients.Logger.debug(\"list updated\", err, response);\r\n\t\t\tif (err) {\r\n\t\t\t\treturn console.error(err);\r\n\t\t\t}\r\n\t\t\tself.filterComponents(response.data.componentList);\r\n\t\t});\r\n\t},\r\n\t// get quick components that the user created from storage.\r\n\tgetUserDefinedComponentList(cb) {\r\n\t\treturn cb();\r\n\t},\r\n\t// saves quick components\r\n\tsaveCustomComponents() {\r\n\t\tvar UDCs = {};\r\n\t\tvar components = Object.keys(Actions.componentList);\r\n\t\tfor (var i = 0; i < components.length; i++) {\r\n\t\t\tvar config = Actions.componentList[components[i]];\r\n\t\t\tif (config.component && config.component.isUserDefined) {\r\n\t\t\t\tUDCs[config.component.type] = config;\r\n\t\t\t}\r\n\t\t}\r\n\t\tFSBL.Clients.StorageClient.save({\r\n\t\t\ttopic: \"finsemble\",\r\n\t\t\tkey: \"userDefinedComponents\",\r\n\t\t\tvalue: UDCs,\r\n\t\t});\r\n\t},\r\n\t// This filters components based on the mode and list settings in customData\r\n\t// Available settings are list - where you list specific individual component Types, mode - which piggybacks on config.mode and lists all components where the mode matches\r\n\t// If neither mode not list are set, all components are shown\r\n\t// Custom Components are always shown @TODO - make this a setting\r\n\tfilterComponents(components) {\r\n\t\tvar self = this;\r\n\t\tvar settings = FSBL.Clients.WindowClient.getSpawnData();\r\n\t\tvar componentList = {};\r\n\t\tvar keys = Object.keys(components);\r\n\t\tif (!settings) {\r\n\t\t\tsettings = {};\r\n\t\t\tFSBL.Clients.Logger.system.warn(\"appLauncherStore.js: `settings` is null or undefined\");\r\n\t\t}\r\n\t\tif (settings.mode) {\r\n\t\t\tif (!Array.isArray(settings.mode)) {\r\n\t\t\t\tsettings.mode = [settings.mode];\r\n\t\t\t}\r\n\t\t\tkeys.forEach((componentType) => {\r\n\t\t\t\tvar config = components[componentType];\r\n\t\t\t\tvar componentMode = config.component && config.component.mode ? config.component.mode : \"\";\r\n\r\n\t\t\t\tif (componentMode || componentMode === \"\") {\r\n\t\t\t\t\t// component.mode can either be a string or an array of strings. So rationalize it to an array.\r\n\t\t\t\t\tif (componentMode.constructor !== Array) {\r\n\t\t\t\t\t\tcomponentMode = [componentMode];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet commonModes = componentMode.filter((n) => settings.mode.indexOf(n) !== -1);\r\n\r\n\t\t\t\t\t// If the current mode isn't in the list of modes for the component then don't include it in our list\r\n\t\t\t\t\tif (commonModes.length) {\r\n\t\t\t\t\t\tcomponentList[componentType] = components[componentType];\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\tif (settings.list) {\r\n\t\t\tvar commonItems = settings.list.filter((n) => keys.indexOf(n) !== -1);\r\n\r\n\t\t\tfor (let i = 0; i < commonItems.length; i++) {\r\n\t\t\t\tcomponentList[commonItems[i]] = components[commonItems[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!settings.mode && !settings.list) {\r\n\t\t\tcomponentList = components;\r\n\t\t} else {\r\n\t\t\tfor (let i = 0; i < keys.length; i++) {\r\n\t\t\t\tlet component = components[keys[i]];\r\n\t\t\t\tif (component.component.isUserDefined) {\r\n\t\t\t\t\tcomponentList[keys[i]] = component;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tself.componentList = componentList;\r\n\r\n\t\tFSBL.Clients.Logger.debug(\r\n\t\t\t\"appLauncher filterComponents\",\r\n\t\t\tself.componentList,\r\n\t\t\t\"settings\",\r\n\t\t\tsettings,\r\n\t\t\t\"customData\",\r\n\t\t\tFSBL.Clients.WindowClient.options.customData\r\n\t\t);\r\n\t\tappLauncherStore.setValue({\r\n\t\t\tfield: \"componentList\",\r\n\t\t\tvalue: self.componentList,\r\n\t\t});\r\n\t\tself.saveCustomComponents();\r\n\t},\r\n\t// Handler for when the user wants to remove a quick component.\r\n\thandleRemoveCustomComponent(componentName, cb = Function.prototype) {\r\n\t\tvar self = this;\r\n\t\tFSBL.Clients.DialogManager.open(\r\n\t\t\t\"yesNo\",\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Delete this App?\",\r\n\t\t\t\tquestion: `Are you sure you would like to delete \"${componentName}\"?`,\r\n\t\t\t\taffirmativeResponseLabel: \"Delete\",\r\n\t\t\t\tshowNegativeButton: false,\r\n\t\t\t},\r\n\t\t\t(err, response) => {\r\n\t\t\t\t// If the user chooses \"affirmative\" then delete the component.\r\n\t\t\t\t// We should never get an error, but if we do then go ahead and delete the component too.\r\n\t\t\t\tif (err || response.choice === \"affirmative\") {\r\n\t\t\t\t\tcb(true);\r\n\t\t\t\t\tself.removeCustomComponent(componentName);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcb(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t},\r\n\t// Remove the component, notify others.\r\n\tremoveCustomComponent(componentName) {\r\n\t\tFSBL.Clients.LauncherClient.removeUserDefinedComponent(\r\n\t\t\t{\r\n\t\t\t\tname: componentName,\r\n\t\t\t},\r\n\t\t\t(err) => {\r\n\t\t\t\tif (err) {\r\n\t\t\t\t\treturn console.error(err);\r\n\t\t\t\t}\r\n\t\t\t\tActions.getComponentList();\r\n\t\t\t}\r\n\t\t);\r\n\t},\r\n\t// Hide the window.\r\n\thideWindow() {\r\n\t\tfinsembleWindow.hide();\r\n\t},\r\n\t// Spawn a component.\r\n\tlaunchComponent(config, params, cb) {\r\n\t\t// Actions.hideWindow();\r\n\t\tconsole.log(\"launchComponent\");\r\n\t\tlet defaultParams = {\r\n\t\t\taddToWorkspace: true,\r\n\t\t\tmonitor: \"mine\",\r\n\t\t\toptions: { customData: {} },\r\n\t\t};\r\n\t\tparams = Object.assign(defaultParams, params);\r\n\t\tif (!params.options.customData) {\r\n\t\t\tparams.options.customData = {};\r\n\t\t}\r\n\t\tif (!params.options.customData.component) {\r\n\t\t\tparams.options.customData.component = {};\r\n\t\t}\r\n\t\tif (config.component.windowGroup) {\r\n\t\t\tparams.groupName = config.component.windowGroup;\r\n\t\t}\r\n\t\tFSBL.Clients.LauncherClient.spawn(config.component.type, params, (err, windowInfo) => {\r\n\t\t\tif (cb) {\r\n\t\t\t\tcb(windowInfo.windowIdentifier);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\tcreateNewWindowGroup(groupPrefix, cb) {\r\n\t\twindowGroupStore.getValue({ field: groupPrefix }, (err, value) => {\r\n\t\t\tvar currentGroup = 1;\r\n\t\t\tif (value) {\r\n\t\t\t\tcurrentGroup = Math.max(...Object.keys(value)) + 1;\r\n\t\t\t}\r\n\t\t\tlet groupName = `${groupPrefix}.${currentGroup}`;\r\n\t\t\tFSBL.Clients.LauncherClient.createWindowGroup(\r\n\t\t\t\t{\r\n\t\t\t\t\tgroupName: groupName,\r\n\t\t\t\t},\r\n\t\t\t\t() => {\r\n\t\t\t\t\tcb(groupName);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t},\r\n};\r\n\r\nfunction createLocalStore(done) {\r\n\tlet defaultData = {\r\n\t\tcomponentList: {},\r\n\t\tmonitorDimensions: {},\r\n\t};\r\n\r\n\tFSBL.Clients.DistributedStoreClient.createStore(\r\n\t\t{ store: \"Finsemble-AppLauncher-Local-Store\", values: defaultData },\r\n\t\t(err, store) => {\r\n\t\t\tappLauncherStore = store;\r\n\t\t\tdone();\r\n\t\t}\r\n\t);\r\n}\r\n\r\nfunction getWindowGroupStore(done) {\r\n\tFSBL.Clients.DistributedStoreClient.getStore({ global: true, store: \"Finsemble-WindowGroups\" }, (err, store) => {\r\n\t\twindowGroupStore = store;\r\n\t\tdone();\r\n\t});\r\n}\r\n\r\nfunction initialize(cb) {\r\n\tCOMPONENT_UPDATE_CHANNEL = `${finsembleWindow.name}.ComponentsToRender`;\r\n\tFSBL.Clients.RouterClient.addPubSubResponder(COMPONENT_UPDATE_CHANNEL, {});\r\n\tasync.parallel([createLocalStore, getWindowGroupStore, Actions.initialize], (err) => {\r\n\t\tif (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t}\r\n\t\tFSBL.Clients.Logger.debug(\"appLauncherstore init done\");\r\n\t\tcb(appLauncherStore);\r\n\t});\r\n}\r\nvar keys = {};\r\nfunction setupHotkeys(cb) {\r\n\tFSBL.Clients.RouterClient.subscribe(\"humanInterface.keydown\", (err, response) => {\r\n\t\tif (!keys[response.data.key]) {\r\n\t\t\tkeys[response.data.key] = {};\r\n\t\t}\r\n\t\tkeys[response.data.key] = true;\r\n\t\tif (keys[160] && keys[162] && keys[68]) {\r\n\t\t\tif (Actions.componentList[\"Advanced Chart\"]) {\r\n\t\t\t\tFSBL.Clients.LauncherClient.spawn(\"Advanced Chart\", { addToWorkspace: true }, { monitor: \"mine\" });\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tFSBL.Clients.RouterClient.subscribe(\"humanInterface.keyup\", (err, response) => {\r\n\t\tif (!keys[response.data.key]) {\r\n\t\t\tkeys[response.data.key] = {};\r\n\t\t}\r\n\t\tkeys[response.data.key] = false;\r\n\t});\r\n\r\n\treturn cb();\r\n}\r\nlet getStore = () => appLauncherStore;\r\n\r\n/**\r\n * This is a quick little initialization manager that Terry hacked up.\r\n * Ultimately everything in this file should be rewritten in hooks/redux pattern.\r\n */\r\nclass StoreManager {\r\n\tconstructor() {\r\n\t\tthis.initialized = false;\r\n\t\tthis.initializing = false;\r\n\t\tthis.callbacks = [];\r\n\t\tthis.store = null;\r\n\t}\r\n\r\n\tinitialize() {\r\n\t\tif (this.initializing) return;\r\n\t\tthis.initializing = true;\r\n\t\tinitialize((store) => {\r\n\t\t\tthis.initialized = true;\r\n\t\t\tthis.store = store;\r\n\t\t\tthis.callbacks.forEach((cb) => cb(store));\r\n\t\t});\r\n\t}\r\n\r\n\taddInitializedListener(cb) {\r\n\t\tif (this.initialized) return cb(this.store);\r\n\t\tthis.callbacks.push(cb);\r\n\t}\r\n\r\n\tremoveInitializedListener(cb) {\r\n\t\tthis.callbacks = this.callbacks.filter((entry) => entry !== cb);\r\n\t}\r\n}\r\nconst storeManager = new StoreManager();\r\n\r\nexport { storeManager };\r\nexport { initialize };\r\nexport { appLauncherStore as Store };\r\nexport { Actions };\r\nexport { getStore };\r\n"]}
1
+ {"version":3,"file":"appLauncherStore.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/appLauncher/stores/appLauncherStore.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\n\nimport async from \"async\";\nlet appLauncherStore;\nlet windowGroupStore;\nvar COMPONENT_UPDATE_CHANNEL;\n\nvar Actions = {\n\tinitialize: function (cb) {\n\t\tasync.parallel(\n\t\t\t[\n\t\t\t\tActions.initializeComponentList,\n\t\t\t\tActions.getUserDefinedComponentList,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\t\t\tsetupHotkeys,\n\t\t\t],\n\t\t\t(err) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t}\n\t\t\t\tFSBL.Clients.Logger.debug(\"Actions.initialize done\");\n\t\t\t\tcb();\n\t\t\t}\n\t\t);\n\t},\n\tgetComponentList(cb) {\n\t\tFSBL.Clients.LauncherClient.getComponentList((err, response) => {\n\t\t\tif (err) {\n\t\t\t\tthrow new Error(err);\n\t\t\t}\n\t\t\t// Each AppLauncher\n\t\t\tFSBL.Clients.Logger.debug(\"getComponentList from LauncherClient\", response);\n\t\t\tActions.filterComponents(response);\n\t\t\tif (cb) {\n\t\t\t\tcb();\n\t\t\t}\n\t\t});\n\t},\n\tinitializeComponentList(cb) {\n\t\tvar self = Actions;\n\t\tvar firstTime = true;\n\n\t\t// When an app launcher button is clicked, it sends over the types of components that the app launcher can spawn. We assign that data to an object in the windowClient, and then use that to render the app launcher.\n\t\tFSBL.Clients.RouterClient.subscribe(COMPONENT_UPDATE_CHANNEL, (err, response) => {\n\t\t\tif (!FSBL.Clients.WindowClient.options.customData.spawnData) {\n\t\t\t\tFSBL.Clients.WindowClient.options.customData.spawnData = {};\n\t\t\t}\n\t\t\tObject.assign(FSBL.Clients.WindowClient.options.customData.spawnData, response.data);\n\t\t\tif (firstTime) {\n\t\t\t\t// only update component list the first time to eliminate re-rendering the menu\n\t\t\t\tActions.getComponentList(cb);\n\t\t\t\tfirstTime = false;\n\t\t\t}\n\t\t});\n\n\t\t// Whenever we add or remove a component, this event is fired. We get a list of all components, then filter it out to include only the ones that this particular launcher is capable of spawning.\n\t\tFSBL.Clients.RouterClient.subscribe(\"Launcher.update\", (err, response) => {\n\t\t\tFSBL.Clients.Logger.debug(\"list updated\", err, response);\n\t\t\tif (err) {\n\t\t\t\treturn console.error(err);\n\t\t\t}\n\t\t\tself.filterComponents(response.data.componentList);\n\t\t});\n\t},\n\t// get quick components that the user created from storage.\n\tgetUserDefinedComponentList(cb) {\n\t\treturn cb();\n\t},\n\t// saves quick components\n\tsaveCustomComponents() {\n\t\tvar UDCs = {};\n\t\tvar components = Object.keys(Actions.componentList);\n\t\tfor (var i = 0; i < components.length; i++) {\n\t\t\tvar config = Actions.componentList[components[i]];\n\t\t\tif (config.component && config.component.isUserDefined) {\n\t\t\t\tUDCs[config.component.type] = config;\n\t\t\t}\n\t\t}\n\t\tFSBL.Clients.StorageClient.save({\n\t\t\ttopic: \"finsemble\",\n\t\t\tkey: \"userDefinedComponents\",\n\t\t\tvalue: UDCs,\n\t\t});\n\t},\n\t// This filters components based on the mode and list settings in customData\n\t// Available settings are list - where you list specific individual component Types, mode - which piggybacks on config.mode and lists all components where the mode matches\n\t// If neither mode not list are set, all components are shown\n\t// Custom Components are always shown @TODO - make this a setting\n\tfilterComponents(components) {\n\t\tvar self = this;\n\t\tvar settings = FSBL.Clients.WindowClient.getSpawnData();\n\t\tvar componentList = {};\n\t\tvar keys = Object.keys(components);\n\t\tif (!settings) {\n\t\t\tsettings = {};\n\t\t\tFSBL.Clients.Logger.system.warn(\"appLauncherStore.js: `settings` is null or undefined\");\n\t\t}\n\t\tif (settings.mode) {\n\t\t\tif (!Array.isArray(settings.mode)) {\n\t\t\t\tsettings.mode = [settings.mode];\n\t\t\t}\n\t\t\tkeys.forEach((componentType) => {\n\t\t\t\tvar config = components[componentType];\n\t\t\t\tvar componentMode = config.component && config.component.mode ? config.component.mode : \"\";\n\n\t\t\t\tif (componentMode || componentMode === \"\") {\n\t\t\t\t\t// component.mode can either be a string or an array of strings. So rationalize it to an array.\n\t\t\t\t\tif (componentMode.constructor !== Array) {\n\t\t\t\t\t\tcomponentMode = [componentMode];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet commonModes = componentMode.filter((n) => settings.mode.indexOf(n) !== -1);\n\n\t\t\t\t\t// If the current mode isn't in the list of modes for the component then don't include it in our list\n\t\t\t\t\tif (commonModes.length) {\n\t\t\t\t\t\tcomponentList[componentType] = components[componentType];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (settings.list) {\n\t\t\tvar commonItems = settings.list.filter((n) => keys.indexOf(n) !== -1);\n\n\t\t\tfor (let i = 0; i < commonItems.length; i++) {\n\t\t\t\tcomponentList[commonItems[i]] = components[commonItems[i]];\n\t\t\t}\n\t\t}\n\t\tif (!settings.mode && !settings.list) {\n\t\t\tcomponentList = components;\n\t\t} else {\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tlet component = components[keys[i]];\n\t\t\t\tif (component.component.isUserDefined) {\n\t\t\t\t\tcomponentList[keys[i]] = component;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tself.componentList = componentList;\n\n\t\tFSBL.Clients.Logger.debug(\n\t\t\t\"appLauncher filterComponents\",\n\t\t\tself.componentList,\n\t\t\t\"settings\",\n\t\t\tsettings,\n\t\t\t\"customData\",\n\t\t\tFSBL.Clients.WindowClient.options.customData\n\t\t);\n\t\tappLauncherStore.setValue({\n\t\t\tfield: \"componentList\",\n\t\t\tvalue: self.componentList,\n\t\t});\n\t\tself.saveCustomComponents();\n\t},\n\t// Handler for when the user wants to remove a quick component.\n\thandleRemoveCustomComponent(componentName, cb = Function.prototype) {\n\t\tvar self = this;\n\t\tFSBL.Clients.DialogManager.open(\n\t\t\t\"yesNo\",\n\t\t\t{\n\t\t\t\ttitle: \"Delete this App?\",\n\t\t\t\tquestion: `Are you sure you would like to delete \"${componentName}\"?`,\n\t\t\t\taffirmativeResponseLabel: \"Delete\",\n\t\t\t\tshowNegativeButton: false,\n\t\t\t},\n\t\t\t(err, response) => {\n\t\t\t\t// If the user chooses \"affirmative\" then delete the component.\n\t\t\t\t// We should never get an error, but if we do then go ahead and delete the component too.\n\t\t\t\tif (err || response.choice === \"affirmative\") {\n\t\t\t\t\tcb(true);\n\t\t\t\t\tself.removeCustomComponent(componentName);\n\t\t\t\t} else {\n\t\t\t\t\tcb(false);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t},\n\t// Remove the component, notify others.\n\tremoveCustomComponent(componentName) {\n\t\tFSBL.Clients.LauncherClient.removeUserDefinedComponent(\n\t\t\t{\n\t\t\t\tname: componentName,\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn console.error(err);\n\t\t\t\t}\n\t\t\t\tActions.getComponentList();\n\t\t\t}\n\t\t);\n\t},\n\t// Hide the window.\n\thideWindow() {\n\t\tfinsembleWindow.hide();\n\t},\n\t// Spawn a component.\n\tlaunchComponent(config, params, cb) {\n\t\t// Actions.hideWindow();\n\t\tconsole.log(\"launchComponent\");\n\t\tlet defaultParams = {\n\t\t\taddToWorkspace: true,\n\t\t\tmonitor: \"mine\",\n\t\t\toptions: { customData: {} },\n\t\t};\n\t\tparams = Object.assign(defaultParams, params);\n\t\tif (!params.options.customData) {\n\t\t\tparams.options.customData = {};\n\t\t}\n\t\tif (!params.options.customData.component) {\n\t\t\tparams.options.customData.component = {};\n\t\t}\n\t\tif (config.component.windowGroup) {\n\t\t\tparams.groupName = config.component.windowGroup;\n\t\t}\n\t\tFSBL.Clients.LauncherClient.spawn(config.component.type, params, (err, windowInfo) => {\n\t\t\tif (cb) {\n\t\t\t\tcb(windowInfo.windowIdentifier);\n\t\t\t}\n\t\t});\n\t},\n\tcreateNewWindowGroup(groupPrefix, cb) {\n\t\twindowGroupStore.getValue({ field: groupPrefix }, (err, value) => {\n\t\t\tvar currentGroup = 1;\n\t\t\tif (value) {\n\t\t\t\tcurrentGroup = Math.max(...Object.keys(value)) + 1;\n\t\t\t}\n\t\t\tlet groupName = `${groupPrefix}.${currentGroup}`;\n\t\t\tFSBL.Clients.LauncherClient.createWindowGroup(\n\t\t\t\t{\n\t\t\t\t\tgroupName: groupName,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tcb(groupName);\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t},\n};\n\nfunction createLocalStore(done) {\n\tlet defaultData = {\n\t\tcomponentList: {},\n\t\tmonitorDimensions: {},\n\t};\n\n\tFSBL.Clients.DistributedStoreClient.createStore(\n\t\t{ store: \"Finsemble-AppLauncher-Local-Store\", values: defaultData },\n\t\t(err, store) => {\n\t\t\tappLauncherStore = store;\n\t\t\tdone();\n\t\t}\n\t);\n}\n\nfunction getWindowGroupStore(done) {\n\tFSBL.Clients.DistributedStoreClient.getStore({ global: true, store: \"Finsemble-WindowGroups\" }, (err, store) => {\n\t\twindowGroupStore = store;\n\t\tdone();\n\t});\n}\n\nfunction initialize(cb) {\n\tCOMPONENT_UPDATE_CHANNEL = `${finsembleWindow.name}.ComponentsToRender`;\n\tFSBL.Clients.RouterClient.addPubSubResponder(COMPONENT_UPDATE_CHANNEL, {});\n\tasync.parallel([createLocalStore, getWindowGroupStore, Actions.initialize], (err) => {\n\t\tif (err) {\n\t\t\tconsole.error(err);\n\t\t}\n\t\tFSBL.Clients.Logger.debug(\"appLauncherstore init done\");\n\t\tcb(appLauncherStore);\n\t});\n}\nvar keys = {};\nfunction setupHotkeys(cb) {\n\tFSBL.Clients.RouterClient.subscribe(\"humanInterface.keydown\", (err, response) => {\n\t\tif (!keys[response.data.key]) {\n\t\t\tkeys[response.data.key] = {};\n\t\t}\n\t\tkeys[response.data.key] = true;\n\t\tif (keys[160] && keys[162] && keys[68]) {\n\t\t\tif (Actions.componentList[\"Advanced Chart\"]) {\n\t\t\t\tFSBL.Clients.LauncherClient.spawn(\"Advanced Chart\", { addToWorkspace: true }, { monitor: \"mine\" });\n\t\t\t}\n\t\t}\n\t});\n\tFSBL.Clients.RouterClient.subscribe(\"humanInterface.keyup\", (err, response) => {\n\t\tif (!keys[response.data.key]) {\n\t\t\tkeys[response.data.key] = {};\n\t\t}\n\t\tkeys[response.data.key] = false;\n\t});\n\n\treturn cb();\n}\nlet getStore = () => appLauncherStore;\n\n/**\n * This is a quick little initialization manager that Terry hacked up.\n * Ultimately everything in this file should be rewritten in hooks/redux pattern.\n */\nclass StoreManager {\n\tconstructor() {\n\t\tthis.initialized = false;\n\t\tthis.initializing = false;\n\t\tthis.callbacks = [];\n\t\tthis.store = null;\n\t}\n\n\tinitialize() {\n\t\tif (this.initializing) return;\n\t\tthis.initializing = true;\n\t\tinitialize((store) => {\n\t\t\tthis.initialized = true;\n\t\t\tthis.store = store;\n\t\t\tthis.callbacks.forEach((cb) => cb(store));\n\t\t});\n\t}\n\n\taddInitializedListener(cb) {\n\t\tif (this.initialized) return cb(this.store);\n\t\tthis.callbacks.push(cb);\n\t}\n\n\tremoveInitializedListener(cb) {\n\t\tthis.callbacks = this.callbacks.filter((entry) => entry !== cb);\n\t}\n}\nconst storeManager = new StoreManager();\n\nexport { storeManager };\nexport { initialize };\nexport { appLauncherStore as Store };\nexport { Actions };\nexport { getStore };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Dashbar.js","sourceRoot":"","sources":["../../../../src/components/toolbar/dashbar/Dashbar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport { DashbarItem } from \"./DashbarItem\";\r\nimport { Dashbar as DashbarType, DashbarItem as DashbarItemType, DashbarView } from \"../../../types/dashbarTypes\";\r\nimport { useToolbar } from \"../../../hooks/useToolbar\";\r\nimport { FinsembleDnDContext, AllowableDnDAxis } from \"../../legacyControls/FinsembleDnDContext\";\r\n\r\nimport \"../../../assets/css/dashbar.css\";\r\nimport { FinsembleWindow } from \"common/window/FinsembleWindow\";\r\n\r\ntype DashbarViews = {\r\n\t[key: string]: DashbarView;\r\n} & {};\r\n\r\nlet cachedWidgetTop: number;\r\nlet cachedWidgetHeight: number;\r\n\r\nexport const Dashbar = ({ className, children, widgetTitleGenerator }: DashbarType) => {\r\n\tconst { dashbarItems, reorderDashbarItems, launchPreferences } = useToolbar();\r\n\r\n\tconst [widgets, setWidgets] = useState({});\r\n\tconst [horizontalBounds, setHorizontalBounds] = useState(0);\r\n\tconst [wasReorganized, setReorganized] = useState(false);\r\n\tconst [totalWidgetsWidth, setTotalWidgetsWidth] = useState(0);\r\n\r\n\tlet movingIndex: number | null = null; // The dasharItem index being dragged, null if none\r\n\tlet titleGrabPosition: number | null = null; // The mouse of event when a widget title is dragged\r\n\tlet offsetX: number | null = null; // The original grab location of a given view titlebar\r\n\r\n\tconst WIDGET_COUNT: number = Object.keys(widgets).length;\r\n\tconst SCROLL_BUTTON_WIDTH = 30;\r\n\r\n\t/**\r\n\t *\r\n\t * @param {object} params\r\n\t * @param {number} oldIndex The index of the item being moved\r\n\t * @param {number} newIndex The index to move the item to\r\n\t */\r\n\tconst reorderItems = ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => {\r\n\t\tmovingIndex = null;\r\n\t\ttitleGrabPosition = null;\r\n\t\toffsetX = null;\r\n\t\tsetReorganized(true);\r\n\t\t// Update the redux store\r\n\t\treorderDashbarItems({ oldIndex, newIndex });\r\n\t};\r\n\r\n\tconst launchDashbar = () => {\r\n\t\tlaunchPreferences(\"Dashbar\");\r\n\t};\r\n\r\n\tconst { dashbar } = FSBL.Clients.WindowClient.getSpawnData();\r\n\r\n\t// Dashbar is disabled (no config in toolbar) or dashbar height is not specified\r\n\tif (!dashbar || !dashbar.height) {\r\n\t\treturn null;\r\n\t}\r\n\tconst toolbarHeight = finsembleWindow.windowOptions.height;\r\n\tconst dashbarHeight = `${dashbar.height}px`;\r\n\tconst verticalBounds = toolbarHeight - dashbar.height;\r\n\tconst widgetDividerWidth = dashbar.widgetDividerWidth || 0;\r\n\r\n\tconst wrapperClasses = `finsemble-dashbar ${className || \"\"}`.trim();\r\n\r\n\tconst getTotalWidth = () => {\r\n\t\tlet totalWidth = 0;\r\n\t\tdashbarItems.forEach((item: DashbarItemType) => {\r\n\t\t\ttotalWidth = totalWidth + item.width;\r\n\t\t});\r\n\t\treturn totalWidth;\r\n\t};\r\n\r\n\tconst [leftButtonTooltip, setLeftButtonTooltip] = useState(\"\");\r\n\tconst [rightButtonTooltip, setRightButtonTooltip] = useState(\"\");\r\n\r\n\tconst setWidgetsPositions = (isCalledFromDashbar: boolean | undefined) => {\r\n\t\t// This type conversion is safe and was put in place to remove the TS error\r\n\t\t// Currently getCurrentWindow return type is openFin window\r\n\t\t// which apparently does not have a getBounds property, however, the method exists and this\r\n\t\t// is working as expected.\r\n\t\tconst fsblWindow = FSBL.Clients.WindowClient.getCurrentWindow() as unknown as FinsembleWindow;\r\n\t\tfsblWindow.getBounds((bounds: any) => {\r\n\t\t\tconst toolbarWidth = bounds.width ? bounds.width : 0;\r\n\t\t\tconst elements = document.getElementsByClassName(\"dashbar-item-frame\");\r\n\r\n\t\t\tlet tempLeft = 0;\r\n\t\t\tif (toolbarWidth < totalWidgetsWidth) {\r\n\t\t\t\ttempLeft = SCROLL_BUTTON_WIDTH;\r\n\t\t\t}\r\n\r\n\t\t\tlet leftItemsCount = 0;\r\n\t\t\tlet rightItemsCount = 0;\r\n\r\n\t\t\tfor (const element of elements) {\r\n\t\t\t\tconst rect = element.getBoundingClientRect();\r\n\t\t\t\tconst widget = (widgets as DashbarViews)[element.id];\r\n\r\n\t\t\t\tif (rect.left < SCROLL_BUTTON_WIDTH && toolbarWidth < totalWidgetsWidth) {\r\n\t\t\t\t\twidget.bounds.width = 0;\r\n\t\t\t\t\twidget.bounds.left = tempLeft;\r\n\t\t\t\t\tleftItemsCount++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twidget.bounds.width = rect.width - widgetDividerWidth;\r\n\t\t\t\t\twidget.bounds.left = tempLeft;\r\n\t\t\t\t}\r\n\t\t\t\ttempLeft = tempLeft + widget.bounds.width + widgetDividerWidth;\r\n\r\n\t\t\t\tlet offsetRight = rect.left + rect.width - (toolbarWidth - SCROLL_BUTTON_WIDTH) + widgetDividerWidth;\r\n\t\t\t\tif (offsetRight > 0) {\r\n\t\t\t\t\t// hide title for invisible items\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\telement.childNodes[0].style.visibility = \"hidden\";\r\n\t\t\t\t\twidget.bounds.width = 0;\r\n\t\t\t\t\trightItemsCount++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\telement.childNodes[0].style.visibility = \"visible\";\r\n\t\t\t\t}\r\n\t\t\t\twidget.view.setBounds(widget.bounds);\r\n\t\t\t}\r\n\r\n\t\t\tsetLeftButtonTooltip(`${leftItemsCount} more`);\r\n\t\t\tsetRightButtonTooltip(`${rightItemsCount} more`);\r\n\t\t});\r\n\r\n\t\t//double call for fix fake empty space between widgets while scrolling\r\n\t\tif (!isCalledFromDashbar) {\r\n\t\t\tsetWidgetsPositions(true);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * When the distributed store's 'dashbaritems' is updated it will cause this hook to\r\n\t * execute. The local representation of widgets will be mutated, then a call to\r\n\t * setWidgets will re-render the component\r\n\t */\r\n\tlet isUpdatingState = false;\r\n\tuseEffect(() => {\r\n\t\tconst updateItems = async () => {\r\n\t\t\tisUpdatingState = true;\r\n\t\t\tconst _widgets: DashbarViews = widgets;\r\n\r\n\t\t\tconst addWidgets = async () => {\r\n\t\t\t\tlet tempHorizontalBounds = horizontalBounds;\r\n\r\n\t\t\t\tfor (const item of dashbarItems) {\r\n\t\t\t\t\tconst widgetBounds = {\r\n\t\t\t\t\t\ttop: verticalBounds,\r\n\t\t\t\t\t\tleft: tempHorizontalBounds,\r\n\t\t\t\t\t\twidth: item.width - widgetDividerWidth,\r\n\t\t\t\t\t\theight: item.height || dashbar.height,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (!_widgets.hasOwnProperty(item.id)) {\r\n\t\t\t\t\t\tconst res: any = await finsembleWindow.addBrowserView({\r\n\t\t\t\t\t\t\turl: item.url,\r\n\t\t\t\t\t\t\tbounds: widgetBounds,\r\n\t\t\t\t\t\t\tallowAutoResize: false,\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t_widgets[item.id] = {\r\n\t\t\t\t\t\t\turl: item.url,\r\n\t\t\t\t\t\t\ttitle: item.title,\r\n\t\t\t\t\t\t\tbounds: widgetBounds,\r\n\t\t\t\t\t\t\tview: res,\r\n\t\t\t\t\t\t\twidth: item.width,\r\n\t\t\t\t\t\t\traiseIntentOptions: item.raiseIntentOptions,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\ttempHorizontalBounds = tempHorizontalBounds + item.width;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetWidgets(_widgets);\r\n\t\t\t\tisUpdatingState = false;\r\n\t\t\t\tsetHorizontalBounds(tempHorizontalBounds);\r\n\t\t\t};\r\n\r\n\t\t\tconst removeWidgets = () => {\r\n\t\t\t\t// Widgets is an object, with each key being a reference to an item in dashbarItems\r\n\t\t\t\t// but dashbarItems is an array of objects. Its necessary to loop through them to determine\r\n\t\t\t\t// the differences to figure out which items were removed.\r\n\t\t\t\tconst toRemove: string[] = [];\r\n\t\t\t\tObject.keys(_widgets).map((widgetId) => {\r\n\t\t\t\t\tlet found = false;\r\n\t\t\t\t\tfor (let i = 0; i < dashbarItems.length; i++) {\r\n\t\t\t\t\t\tconst dashItem = dashbarItems[i];\r\n\t\t\t\t\t\tif (dashItem.id === widgetId) {\r\n\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!found) {\r\n\t\t\t\t\t\ttoRemove.push(widgetId);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// toRemove is an array of widgetIds which were no longer found in dashbarItems\r\n\t\t\t\t// As items are removed, the remaining items have to be shuffled to fill the space\r\n\t\t\t\tfor (const id of toRemove) {\r\n\t\t\t\t\tif (_widgets.hasOwnProperty(id)) {\r\n\t\t\t\t\t\tlet tempNewHorizontalBounds = 0;\r\n\t\t\t\t\t\t_widgets[id].view.remove(() => {\r\n\t\t\t\t\t\t\tdelete _widgets[id];\r\n\t\t\t\t\t\t\t// Shuffle remaining views to fill any gaps that were left\r\n\t\t\t\t\t\t\tObject.values(_widgets).map((widget) => {\r\n\t\t\t\t\t\t\t\twidget.bounds = {\r\n\t\t\t\t\t\t\t\t\twidth: widget.bounds.width,\r\n\t\t\t\t\t\t\t\t\theight: widget.bounds.height,\r\n\t\t\t\t\t\t\t\t\tleft: tempNewHorizontalBounds,\r\n\t\t\t\t\t\t\t\t\ttop: widget.bounds.top,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\twidget.view.setBounds(widget.bounds);\r\n\t\t\t\t\t\t\t\ttempNewHorizontalBounds = tempNewHorizontalBounds + widget.bounds.width;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tsetWidgets(_widgets);\r\n\t\t\t\t\t\t\tisUpdatingState = false;\r\n\t\t\t\t\t\t\tsetHorizontalBounds(tempNewHorizontalBounds);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tFSBL.Clients.Logger.error(`Error removing widget: ${id} from dashbar`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst reorganizeWidgets = () => {\r\n\t\t\t\t// Each view needs to be resituated to fill any holes\r\n\t\t\t\t// left by views that have been removed. Use a tempBounds\r\n\t\t\t\t// int to keep track of new widths and set the overall width\r\n\t\t\t\t// once everything is re-seated\r\n\t\t\t\tlet tempBounds = 0;\r\n\t\t\t\tdashbarItems.map((item) => {\r\n\t\t\t\t\tconst widget = _widgets[item.id];\r\n\r\n\t\t\t\t\twidget.bounds = {\r\n\t\t\t\t\t\theight: cachedWidgetHeight || widget.bounds.height,\r\n\t\t\t\t\t\twidth: widget.bounds.width,\r\n\t\t\t\t\t\ttop: cachedWidgetTop || verticalBounds,\r\n\t\t\t\t\t\tleft: tempBounds,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\twidget.view.setBounds(widget.bounds);\r\n\r\n\t\t\t\t\tdelete _widgets[item.id];\r\n\t\t\t\t\t_widgets[item.id] = widget;\r\n\r\n\t\t\t\t\ttempBounds = tempBounds + item.width;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tsetReorganized(false);\r\n\t\t\t\tsetWidgets(_widgets);\r\n\t\t\t\tisUpdatingState = false;\r\n\t\t\t\tsetHorizontalBounds(tempBounds);\r\n\t\t\t};\r\n\r\n\t\t\tif (dashbarItems.length > WIDGET_COUNT) {\r\n\t\t\t\t//Items have been added\r\n\t\t\t\tawait addWidgets();\r\n\t\t\t\tsetTotalWidgetsWidth(getTotalWidth());\r\n\t\t\t} else if (dashbarItems.length < WIDGET_COUNT) {\r\n\t\t\t\t//Items have been removed\r\n\t\t\t\tremoveWidgets();\r\n\t\t\t\tsetTotalWidgetsWidth(getTotalWidth());\r\n\t\t\t} else if (wasReorganized) {\r\n\t\t\t\tif (movingIndex) return;\r\n\t\t\t\t// Length is the same, order has changed\r\n\t\t\t\treorganizeWidgets();\r\n\t\t\t}\r\n\t\t\tsetWidgetsPositions(true);\r\n\t\t};\r\n\r\n\t\tif (isUpdatingState === false) updateItems();\r\n\t}, [dashbarItems]);\r\n\r\n\t/**\r\n\t * Sets the title height as determined by the DashbarItem\r\n\t * component, since the CSS can be changed by the user\r\n\t * the component will render the title and pass back\r\n\t * computed height of that title, then the Dashbar will\r\n\t * make room for item\r\n\t *\r\n\t * @param {number} titleHeight The height of the span containing the title\r\n\t * @param {string} id The key'ed id of the view\r\n\t */\r\n\tconst setTitleHeight = (titleHeight: number, id: string) => {\r\n\t\tconst _widgets: DashbarViews = widgets;\r\n\t\tconst widget = _widgets[id];\r\n\t\tif (cachedWidgetTop) {\r\n\t\t\ttitleHeight = 0;\r\n\t\t}\r\n\r\n\t\tconst newBounds = {\r\n\t\t\ttop: cachedWidgetTop || widget.bounds.top + titleHeight,\r\n\t\t\tleft: widget.bounds.left,\r\n\t\t\theight: cachedWidgetHeight || widget.bounds.height - titleHeight,\r\n\t\t\twidth: widget.bounds.width,\r\n\t\t};\r\n\t\tcachedWidgetTop = newBounds.top;\r\n\t\tcachedWidgetHeight = newBounds.height;\r\n\r\n\t\twidget.view.setBounds(newBounds);\r\n\t\twidget.bounds = newBounds;\r\n\t\tsetWidgets(_widgets);\r\n\t};\r\n\r\n\t/**\r\n\t * When a view starts moving, bring it to the front\r\n\t *\r\n\t * @param {MouseEvent} event The event passed by react-sortable-hoc\r\n\t */\r\n\tconst startMove = (node: any, event: any) => {\r\n\t\tmovingIndex = node.index;\r\n\t\tif (offsetX === null && titleGrabPosition !== null) {\r\n\t\t\toffsetX = event.clientX - titleGrabPosition;\r\n\t\t}\r\n\t\tconst widget = Object.values(widgets)[node.index] as DashbarView;\r\n\t\twidget.view.bringToFront();\r\n\t};\r\n\r\n\t/**\r\n\t * Event triggered by view movement\r\n\t *\r\n\t * @param {MouseEvent} event\r\n\t */\r\n\tconst moveItem = (event: any) => {\r\n\t\t// if (movingIndex !== null && titleGrabPosition !== null) {\r\n\t\t// \t//@ts-ignore: Checked above if movingIndex is null, will always have a value below\r\n\t\tif (movingIndex !== null) {\r\n\t\t\tconst movingWidget = Object.values(widgets)[movingIndex] as DashbarView;\r\n\r\n\t\t\tmovingWidget.view.setBounds({\r\n\t\t\t\ttop: movingWidget.bounds.top,\r\n\t\t\t\theight: movingWidget.bounds.height,\r\n\t\t\t\twidth: movingWidget.bounds.width,\r\n\t\t\t\tleft: event.clientX - (offsetX || 0),\r\n\t\t\t});\r\n\r\n\t\t\t// Some completely not react very hacky stuff to make browserviews move in conjunction with the titles\r\n\t\t\tconst elements = document.getElementsByClassName(\"dashbar-item-frame\");\r\n\t\t\tfor (const element of elements) {\r\n\t\t\t\tconst rect = element.getBoundingClientRect();\r\n\t\t\t\tconst widget = (widgets as any)[element.id];\r\n\t\t\t\tif (widget !== movingWidget && widget.bounds.left !== rect.left) {\r\n\t\t\t\t\twidget.bounds.left = rect.left;\r\n\t\t\t\t\twidget.view.setBounds(widget.bounds);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst setGrabLocation = (location: number) => {\r\n\t\ttitleGrabPosition = location;\r\n\t};\r\n\r\n\treturn (\r\n\t\t<div className={wrapperClasses} style={{ height: dashbarHeight }}>\r\n\t\t\t{WIDGET_COUNT > 0 && (\r\n\t\t\t\t<FinsembleDnDContext\r\n\t\t\t\t\tonDragEnd={reorderItems}\r\n\t\t\t\t\tonDragStart={startMove}\r\n\t\t\t\t\tonDragMove={moveItem}\r\n\t\t\t\t\tonLayoutUpdate={setWidgetsPositions}\r\n\t\t\t\t\tclassName=\"finsemble-dashbar-section rearrange-region\"\r\n\t\t\t\t\tid=\"dashbar-container\"\r\n\t\t\t\t\taxis={AllowableDnDAxis.x}\r\n\t\t\t\t\tlockAxis={AllowableDnDAxis.x}\r\n\t\t\t\t\tallowHorizontalScroll={true}\r\n\t\t\t\t\tshowScrollButtonsTooltip={true}\r\n\t\t\t\t\tleftButtonTooltip={leftButtonTooltip}\r\n\t\t\t\t\trightButtonTooltip={rightButtonTooltip}\r\n\t\t\t\t>\r\n\t\t\t\t\t{Object.values(widgets).map((widget, i) => (\r\n\t\t\t\t\t\t<DashbarItem\r\n\t\t\t\t\t\t\tkey={i}\r\n\t\t\t\t\t\t\tid={Object.keys(widgets)[i]}\r\n\t\t\t\t\t\t\tindex={i}\r\n\t\t\t\t\t\t\twidgetTitleGenerator={widgetTitleGenerator}\r\n\t\t\t\t\t\t\twidget={widget as DashbarView}\r\n\t\t\t\t\t\t\tdashbarHeight={dashbar.height}\r\n\t\t\t\t\t\t\twidgetDividerWidth={widgetDividerWidth}\r\n\t\t\t\t\t\t\tsetTitleHeight={setTitleHeight}\r\n\t\t\t\t\t\t\tsetGrabLocation={setGrabLocation}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</FinsembleDnDContext>\r\n\t\t\t)}\r\n\t\t\t{WIDGET_COUNT === 0 && (\r\n\t\t\t\t<div className=\"add-dashbar-item-button\" onClick={launchDashbar}>\r\n\t\t\t\t\t<span>\r\n\t\t\t\t\t\t<i className=\"ff-plus\"></i>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</div>\r\n\t\t\t)}\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"Dashbar.js","sourceRoot":"","sources":["../../../../src/components/toolbar/dashbar/Dashbar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { DashbarItem } from \"./DashbarItem\";\nimport { Dashbar as DashbarType, DashbarItem as DashbarItemType, DashbarView } from \"../../../types/dashbarTypes\";\nimport { useToolbar } from \"../../../hooks/useToolbar\";\nimport { FinsembleDnDContext, AllowableDnDAxis } from \"../../legacyControls/FinsembleDnDContext\";\n\nimport \"../../../assets/css/dashbar.css\";\nimport { FinsembleWindow } from \"common/window/FinsembleWindow\";\n\ntype DashbarViews = {\n\t[key: string]: DashbarView;\n} & {};\n\nlet cachedWidgetTop: number;\nlet cachedWidgetHeight: number;\n\nexport const Dashbar = ({ className, children, widgetTitleGenerator }: DashbarType) => {\n\tconst { dashbarItems, reorderDashbarItems, launchPreferences } = useToolbar();\n\n\tconst [widgets, setWidgets] = useState({});\n\tconst [horizontalBounds, setHorizontalBounds] = useState(0);\n\tconst [wasReorganized, setReorganized] = useState(false);\n\tconst [totalWidgetsWidth, setTotalWidgetsWidth] = useState(0);\n\n\tlet movingIndex: number | null = null; // The dasharItem index being dragged, null if none\n\tlet titleGrabPosition: number | null = null; // The mouse of event when a widget title is dragged\n\tlet offsetX: number | null = null; // The original grab location of a given view titlebar\n\n\tconst WIDGET_COUNT: number = Object.keys(widgets).length;\n\tconst SCROLL_BUTTON_WIDTH = 30;\n\n\t/**\n\t *\n\t * @param {object} params\n\t * @param {number} oldIndex The index of the item being moved\n\t * @param {number} newIndex The index to move the item to\n\t */\n\tconst reorderItems = ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => {\n\t\tmovingIndex = null;\n\t\ttitleGrabPosition = null;\n\t\toffsetX = null;\n\t\tsetReorganized(true);\n\t\t// Update the redux store\n\t\treorderDashbarItems({ oldIndex, newIndex });\n\t};\n\n\tconst launchDashbar = () => {\n\t\tlaunchPreferences(\"Dashbar\");\n\t};\n\n\tconst { dashbar } = FSBL.Clients.WindowClient.getSpawnData();\n\n\t// Dashbar is disabled (no config in toolbar) or dashbar height is not specified\n\tif (!dashbar || !dashbar.height) {\n\t\treturn null;\n\t}\n\tconst toolbarHeight = finsembleWindow.windowOptions.height;\n\tconst dashbarHeight = `${dashbar.height}px`;\n\tconst verticalBounds = toolbarHeight - dashbar.height;\n\tconst widgetDividerWidth = dashbar.widgetDividerWidth || 0;\n\n\tconst wrapperClasses = `finsemble-dashbar ${className || \"\"}`.trim();\n\n\tconst getTotalWidth = () => {\n\t\tlet totalWidth = 0;\n\t\tdashbarItems.forEach((item: DashbarItemType) => {\n\t\t\ttotalWidth = totalWidth + item.width;\n\t\t});\n\t\treturn totalWidth;\n\t};\n\n\tconst [leftButtonTooltip, setLeftButtonTooltip] = useState(\"\");\n\tconst [rightButtonTooltip, setRightButtonTooltip] = useState(\"\");\n\n\tconst setWidgetsPositions = (isCalledFromDashbar: boolean | undefined) => {\n\t\t// This type conversion is safe and was put in place to remove the TS error\n\t\t// Currently getCurrentWindow return type is openFin window\n\t\t// which apparently does not have a getBounds property, however, the method exists and this\n\t\t// is working as expected.\n\t\tconst fsblWindow = FSBL.Clients.WindowClient.getCurrentWindow() as unknown as FinsembleWindow;\n\t\tfsblWindow.getBounds((bounds: any) => {\n\t\t\tconst toolbarWidth = bounds.width ? bounds.width : 0;\n\t\t\tconst elements = document.getElementsByClassName(\"dashbar-item-frame\");\n\n\t\t\tlet tempLeft = 0;\n\t\t\tif (toolbarWidth < totalWidgetsWidth) {\n\t\t\t\ttempLeft = SCROLL_BUTTON_WIDTH;\n\t\t\t}\n\n\t\t\tlet leftItemsCount = 0;\n\t\t\tlet rightItemsCount = 0;\n\n\t\t\tfor (const element of elements) {\n\t\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\t\tconst widget = (widgets as DashbarViews)[element.id];\n\n\t\t\t\tif (rect.left < SCROLL_BUTTON_WIDTH && toolbarWidth < totalWidgetsWidth) {\n\t\t\t\t\twidget.bounds.width = 0;\n\t\t\t\t\twidget.bounds.left = tempLeft;\n\t\t\t\t\tleftItemsCount++;\n\t\t\t\t} else {\n\t\t\t\t\twidget.bounds.width = rect.width - widgetDividerWidth;\n\t\t\t\t\twidget.bounds.left = tempLeft;\n\t\t\t\t}\n\t\t\t\ttempLeft = tempLeft + widget.bounds.width + widgetDividerWidth;\n\n\t\t\t\tlet offsetRight = rect.left + rect.width - (toolbarWidth - SCROLL_BUTTON_WIDTH) + widgetDividerWidth;\n\t\t\t\tif (offsetRight > 0) {\n\t\t\t\t\t// hide title for invisible items\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\telement.childNodes[0].style.visibility = \"hidden\";\n\t\t\t\t\twidget.bounds.width = 0;\n\t\t\t\t\trightItemsCount++;\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\telement.childNodes[0].style.visibility = \"visible\";\n\t\t\t\t}\n\t\t\t\twidget.view.setBounds(widget.bounds);\n\t\t\t}\n\n\t\t\tsetLeftButtonTooltip(`${leftItemsCount} more`);\n\t\t\tsetRightButtonTooltip(`${rightItemsCount} more`);\n\t\t});\n\n\t\t//double call for fix fake empty space between widgets while scrolling\n\t\tif (!isCalledFromDashbar) {\n\t\t\tsetWidgetsPositions(true);\n\t\t}\n\t};\n\n\t/**\n\t * When the distributed store's 'dashbaritems' is updated it will cause this hook to\n\t * execute. The local representation of widgets will be mutated, then a call to\n\t * setWidgets will re-render the component\n\t */\n\tlet isUpdatingState = false;\n\tuseEffect(() => {\n\t\tconst updateItems = async () => {\n\t\t\tisUpdatingState = true;\n\t\t\tconst _widgets: DashbarViews = widgets;\n\n\t\t\tconst addWidgets = async () => {\n\t\t\t\tlet tempHorizontalBounds = horizontalBounds;\n\n\t\t\t\tfor (const item of dashbarItems) {\n\t\t\t\t\tconst widgetBounds = {\n\t\t\t\t\t\ttop: verticalBounds,\n\t\t\t\t\t\tleft: tempHorizontalBounds,\n\t\t\t\t\t\twidth: item.width - widgetDividerWidth,\n\t\t\t\t\t\theight: item.height || dashbar.height,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (!_widgets.hasOwnProperty(item.id)) {\n\t\t\t\t\t\tconst res: any = await finsembleWindow.addBrowserView({\n\t\t\t\t\t\t\turl: item.url,\n\t\t\t\t\t\t\tbounds: widgetBounds,\n\t\t\t\t\t\t\tallowAutoResize: false,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t_widgets[item.id] = {\n\t\t\t\t\t\t\turl: item.url,\n\t\t\t\t\t\t\ttitle: item.title,\n\t\t\t\t\t\t\tbounds: widgetBounds,\n\t\t\t\t\t\t\tview: res,\n\t\t\t\t\t\t\twidth: item.width,\n\t\t\t\t\t\t\traiseIntentOptions: item.raiseIntentOptions,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\ttempHorizontalBounds = tempHorizontalBounds + item.width;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsetWidgets(_widgets);\n\t\t\t\tisUpdatingState = false;\n\t\t\t\tsetHorizontalBounds(tempHorizontalBounds);\n\t\t\t};\n\n\t\t\tconst removeWidgets = () => {\n\t\t\t\t// Widgets is an object, with each key being a reference to an item in dashbarItems\n\t\t\t\t// but dashbarItems is an array of objects. Its necessary to loop through them to determine\n\t\t\t\t// the differences to figure out which items were removed.\n\t\t\t\tconst toRemove: string[] = [];\n\t\t\t\tObject.keys(_widgets).map((widgetId) => {\n\t\t\t\t\tlet found = false;\n\t\t\t\t\tfor (let i = 0; i < dashbarItems.length; i++) {\n\t\t\t\t\t\tconst dashItem = dashbarItems[i];\n\t\t\t\t\t\tif (dashItem.id === widgetId) {\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!found) {\n\t\t\t\t\t\ttoRemove.push(widgetId);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// toRemove is an array of widgetIds which were no longer found in dashbarItems\n\t\t\t\t// As items are removed, the remaining items have to be shuffled to fill the space\n\t\t\t\tfor (const id of toRemove) {\n\t\t\t\t\tif (_widgets.hasOwnProperty(id)) {\n\t\t\t\t\t\tlet tempNewHorizontalBounds = 0;\n\t\t\t\t\t\t_widgets[id].view.remove(() => {\n\t\t\t\t\t\t\tdelete _widgets[id];\n\t\t\t\t\t\t\t// Shuffle remaining views to fill any gaps that were left\n\t\t\t\t\t\t\tObject.values(_widgets).map((widget) => {\n\t\t\t\t\t\t\t\twidget.bounds = {\n\t\t\t\t\t\t\t\t\twidth: widget.bounds.width,\n\t\t\t\t\t\t\t\t\theight: widget.bounds.height,\n\t\t\t\t\t\t\t\t\tleft: tempNewHorizontalBounds,\n\t\t\t\t\t\t\t\t\ttop: widget.bounds.top,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twidget.view.setBounds(widget.bounds);\n\t\t\t\t\t\t\t\ttempNewHorizontalBounds = tempNewHorizontalBounds + widget.bounds.width;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tsetWidgets(_widgets);\n\t\t\t\t\t\t\tisUpdatingState = false;\n\t\t\t\t\t\t\tsetHorizontalBounds(tempNewHorizontalBounds);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tFSBL.Clients.Logger.error(`Error removing widget: ${id} from dashbar`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst reorganizeWidgets = () => {\n\t\t\t\t// Each view needs to be resituated to fill any holes\n\t\t\t\t// left by views that have been removed. Use a tempBounds\n\t\t\t\t// int to keep track of new widths and set the overall width\n\t\t\t\t// once everything is re-seated\n\t\t\t\tlet tempBounds = 0;\n\t\t\t\tdashbarItems.map((item) => {\n\t\t\t\t\tconst widget = _widgets[item.id];\n\n\t\t\t\t\twidget.bounds = {\n\t\t\t\t\t\theight: cachedWidgetHeight || widget.bounds.height,\n\t\t\t\t\t\twidth: widget.bounds.width,\n\t\t\t\t\t\ttop: cachedWidgetTop || verticalBounds,\n\t\t\t\t\t\tleft: tempBounds,\n\t\t\t\t\t};\n\n\t\t\t\t\twidget.view.setBounds(widget.bounds);\n\n\t\t\t\t\tdelete _widgets[item.id];\n\t\t\t\t\t_widgets[item.id] = widget;\n\n\t\t\t\t\ttempBounds = tempBounds + item.width;\n\t\t\t\t});\n\n\t\t\t\tsetReorganized(false);\n\t\t\t\tsetWidgets(_widgets);\n\t\t\t\tisUpdatingState = false;\n\t\t\t\tsetHorizontalBounds(tempBounds);\n\t\t\t};\n\n\t\t\tif (dashbarItems.length > WIDGET_COUNT) {\n\t\t\t\t//Items have been added\n\t\t\t\tawait addWidgets();\n\t\t\t\tsetTotalWidgetsWidth(getTotalWidth());\n\t\t\t} else if (dashbarItems.length < WIDGET_COUNT) {\n\t\t\t\t//Items have been removed\n\t\t\t\tremoveWidgets();\n\t\t\t\tsetTotalWidgetsWidth(getTotalWidth());\n\t\t\t} else if (wasReorganized) {\n\t\t\t\tif (movingIndex) return;\n\t\t\t\t// Length is the same, order has changed\n\t\t\t\treorganizeWidgets();\n\t\t\t}\n\t\t\tsetWidgetsPositions(true);\n\t\t};\n\n\t\tif (isUpdatingState === false) updateItems();\n\t}, [dashbarItems]);\n\n\t/**\n\t * Sets the title height as determined by the DashbarItem\n\t * component, since the CSS can be changed by the user\n\t * the component will render the title and pass back\n\t * computed height of that title, then the Dashbar will\n\t * make room for item\n\t *\n\t * @param {number} titleHeight The height of the span containing the title\n\t * @param {string} id The key'ed id of the view\n\t */\n\tconst setTitleHeight = (titleHeight: number, id: string) => {\n\t\tconst _widgets: DashbarViews = widgets;\n\t\tconst widget = _widgets[id];\n\t\tif (cachedWidgetTop) {\n\t\t\ttitleHeight = 0;\n\t\t}\n\n\t\tconst newBounds = {\n\t\t\ttop: cachedWidgetTop || widget.bounds.top + titleHeight,\n\t\t\tleft: widget.bounds.left,\n\t\t\theight: cachedWidgetHeight || widget.bounds.height - titleHeight,\n\t\t\twidth: widget.bounds.width,\n\t\t};\n\t\tcachedWidgetTop = newBounds.top;\n\t\tcachedWidgetHeight = newBounds.height;\n\n\t\twidget.view.setBounds(newBounds);\n\t\twidget.bounds = newBounds;\n\t\tsetWidgets(_widgets);\n\t};\n\n\t/**\n\t * When a view starts moving, bring it to the front\n\t *\n\t * @param {MouseEvent} event The event passed by react-sortable-hoc\n\t */\n\tconst startMove = (node: any, event: any) => {\n\t\tmovingIndex = node.index;\n\t\tif (offsetX === null && titleGrabPosition !== null) {\n\t\t\toffsetX = event.clientX - titleGrabPosition;\n\t\t}\n\t\tconst widget = Object.values(widgets)[node.index] as DashbarView;\n\t\twidget.view.bringToFront();\n\t};\n\n\t/**\n\t * Event triggered by view movement\n\t *\n\t * @param {MouseEvent} event\n\t */\n\tconst moveItem = (event: any) => {\n\t\t// if (movingIndex !== null && titleGrabPosition !== null) {\n\t\t// \t//@ts-ignore: Checked above if movingIndex is null, will always have a value below\n\t\tif (movingIndex !== null) {\n\t\t\tconst movingWidget = Object.values(widgets)[movingIndex] as DashbarView;\n\n\t\t\tmovingWidget.view.setBounds({\n\t\t\t\ttop: movingWidget.bounds.top,\n\t\t\t\theight: movingWidget.bounds.height,\n\t\t\t\twidth: movingWidget.bounds.width,\n\t\t\t\tleft: event.clientX - (offsetX || 0),\n\t\t\t});\n\n\t\t\t// Some completely not react very hacky stuff to make browserviews move in conjunction with the titles\n\t\t\tconst elements = document.getElementsByClassName(\"dashbar-item-frame\");\n\t\t\tfor (const element of elements) {\n\t\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\t\tconst widget = (widgets as any)[element.id];\n\t\t\t\tif (widget !== movingWidget && widget.bounds.left !== rect.left) {\n\t\t\t\t\twidget.bounds.left = rect.left;\n\t\t\t\t\twidget.view.setBounds(widget.bounds);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst setGrabLocation = (location: number) => {\n\t\ttitleGrabPosition = location;\n\t};\n\n\treturn (\n\t\t<div className={wrapperClasses} style={{ height: dashbarHeight }}>\n\t\t\t{WIDGET_COUNT > 0 && (\n\t\t\t\t<FinsembleDnDContext\n\t\t\t\t\tonDragEnd={reorderItems}\n\t\t\t\t\tonDragStart={startMove}\n\t\t\t\t\tonDragMove={moveItem}\n\t\t\t\t\tonLayoutUpdate={setWidgetsPositions}\n\t\t\t\t\tclassName=\"finsemble-dashbar-section rearrange-region\"\n\t\t\t\t\tid=\"dashbar-container\"\n\t\t\t\t\taxis={AllowableDnDAxis.x}\n\t\t\t\t\tlockAxis={AllowableDnDAxis.x}\n\t\t\t\t\tallowHorizontalScroll={true}\n\t\t\t\t\tshowScrollButtonsTooltip={true}\n\t\t\t\t\tleftButtonTooltip={leftButtonTooltip}\n\t\t\t\t\trightButtonTooltip={rightButtonTooltip}\n\t\t\t\t>\n\t\t\t\t\t{Object.values(widgets).map((widget, i) => (\n\t\t\t\t\t\t<DashbarItem\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tid={Object.keys(widgets)[i]}\n\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\twidgetTitleGenerator={widgetTitleGenerator}\n\t\t\t\t\t\t\twidget={widget as DashbarView}\n\t\t\t\t\t\t\tdashbarHeight={dashbar.height}\n\t\t\t\t\t\t\twidgetDividerWidth={widgetDividerWidth}\n\t\t\t\t\t\t\tsetTitleHeight={setTitleHeight}\n\t\t\t\t\t\t\tsetGrabLocation={setGrabLocation}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</FinsembleDnDContext>\n\t\t\t)}\n\t\t\t{WIDGET_COUNT === 0 && (\n\t\t\t\t<div className=\"add-dashbar-item-button\" onClick={launchDashbar}>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i className=\"ff-plus\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DashbarItem.js","sourceRoot":"","sources":["../../../../src/components/toolbar/dashbar/DashbarItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,eAAe,EAAa,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,iCAAiC,CAAC;AAezC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC3B,EAAE,EACF,KAAK,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,oBAAoB,GACF,EAAE,EAAE;IACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAEpE,eAAe,CAAC,GAAG,EAAE;QACpB,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,aAAa,EAAE;YAGlD,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;YAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;YAClE,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SAChC;IACF,CAAC,CAAC,CAAC;IAOH,MAAM,gBAAgB,GAAG,CAAC,KAAmD,EAAE,EAAE;QAChF,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YAE7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACpD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IACF,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,0BAA0B,SAAS,IAAI,EAAE,EAAE,CAAC;IACjE,MAAM,SAAS,GAAG;QACjB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,GAAG,kBAAkB,uCAAuC;KACzE,CAAC;IAEF,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,OAAO,CACN,oBAAC,kBAAkB,IAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY;QACrF,6BAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,SAAS;YACvG,iCAAM,KAAK,CAAO;YAClB,6BAAK,SAAS,EAAC,aAAa,GAAO,CAC9B,CACc,CACrB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { useRef, useLayoutEffect, useEffect } from \"react\";\r\nimport { FinsembleDraggable } from \"../../legacyControls/FinsembleDraggable\";\r\nimport { DashbarView } from \"../../../types/dashbarTypes\";\r\n\r\nimport \"../../../assets/css/dashbar.css\";\r\n\r\ntype DashbarItemProps = {\r\n\tid?: string;\r\n\tindex: number;\r\n\tclassName?: string;\r\n\theight?: number;\r\n\twidget: DashbarView;\r\n\tdashbarHeight?: number;\r\n\twidgetDividerWidth?: number;\r\n\tsetTitleHeight: Function;\r\n\tsetGrabLocation: Function;\r\n\twidgetTitleGenerator: Function;\r\n};\r\n\r\nexport const DashbarItem = ({\r\n\tid,\r\n\tindex,\r\n\tclassName,\r\n\twidget,\r\n\theight,\r\n\tdashbarHeight,\r\n\twidgetDividerWidth,\r\n\tsetTitleHeight,\r\n\tsetGrabLocation,\r\n\twidgetTitleGenerator,\r\n}: DashbarItemProps) => {\r\n\tconst titleRef = useRef(null);\r\n\tconst divRef = useRef(null);\r\n\r\n\tid = id ? id : `finsemble-draggable-${Date.now()}-${Math.random()}`;\r\n\r\n\tuseLayoutEffect(() => {\r\n\t\tif (titleRef && titleRef.current && dashbarHeight) {\r\n\t\t\t// The following ignore is safe because we just checked whether titleRef and titleRef.current are defined\r\n\t\t\t// @ts-ignore: Object is possibly 'null'.\r\n\t\t\tconst { offsetHeight } = titleRef.current;\r\n\r\n\t\t\tconst titleHeight = height ? height + offsetHeight : offsetHeight;\r\n\t\t\tsetTitleHeight(titleHeight, id);\r\n\t\t}\r\n\t});\r\n\r\n\t/**\r\n\t * Sets the location the titlebar of a view is clicked on when a user grabs a dashbar item\r\n\t *\r\n\t * @param event\r\n\t */\r\n\tconst _setGrabLocation = (event: React.MouseEvent<HTMLDivElement> | undefined) => {\r\n\t\tif (divRef && divRef.current) {\r\n\t\t\t//@ts-ignore: Won't access object unless it is defined\r\n\t\t\tconst rect = divRef.current.getBoundingClientRect();\r\n\t\t\tsetGrabLocation(rect.left);\r\n\t\t}\r\n\t};\r\n\r\n\tconst wrapperClass = `finsemble-dashbar-item ${className || \"\"}`;\r\n\tconst itemStyle = {\r\n\t\tdisplay: \"flex\",\r\n\t\twidth: widget.width,\r\n\t\tborderRight: `${widgetDividerWidth}px solid var(--dashbar-divider-color)`,\r\n\t};\r\n\r\n\tconst title = widgetTitleGenerator(widget, titleRef);\r\n\r\n\treturn (\r\n\t\t<FinsembleDraggable draggableId={id} index={index} key={id} wrapperClass={wrapperClass}>\r\n\t\t\t<div ref={divRef} id={id} onMouseDown={_setGrabLocation} className=\"dashbar-item-frame\" style={itemStyle}>\r\n\t\t\t\t<div>{title}</div>\r\n\t\t\t\t<div className=\"empty-space\"></div>\r\n\t\t\t</div>\r\n\t\t</FinsembleDraggable>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"DashbarItem.js","sourceRoot":"","sources":["../../../../src/components/toolbar/dashbar/DashbarItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,eAAe,EAAa,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,iCAAiC,CAAC;AAezC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC3B,EAAE,EACF,KAAK,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,oBAAoB,GACF,EAAE,EAAE;IACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAEpE,eAAe,CAAC,GAAG,EAAE;QACpB,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,aAAa,EAAE;YAGlD,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;YAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;YAClE,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SAChC;IACF,CAAC,CAAC,CAAC;IAOH,MAAM,gBAAgB,GAAG,CAAC,KAAmD,EAAE,EAAE;QAChF,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YAE7B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACpD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;IACF,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,0BAA0B,SAAS,IAAI,EAAE,EAAE,CAAC;IACjE,MAAM,SAAS,GAAG;QACjB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,GAAG,kBAAkB,uCAAuC;KACzE,CAAC;IAEF,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,OAAO,CACN,oBAAC,kBAAkB,IAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY;QACrF,6BAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE,SAAS;YACvG,iCAAM,KAAK,CAAO;YAClB,6BAAK,SAAS,EAAC,aAAa,GAAO,CAC9B,CACc,CACrB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { useRef, useLayoutEffect, useEffect } from \"react\";\nimport { FinsembleDraggable } from \"../../legacyControls/FinsembleDraggable\";\nimport { DashbarView } from \"../../../types/dashbarTypes\";\n\nimport \"../../../assets/css/dashbar.css\";\n\ntype DashbarItemProps = {\n\tid?: string;\n\tindex: number;\n\tclassName?: string;\n\theight?: number;\n\twidget: DashbarView;\n\tdashbarHeight?: number;\n\twidgetDividerWidth?: number;\n\tsetTitleHeight: Function;\n\tsetGrabLocation: Function;\n\twidgetTitleGenerator: Function;\n};\n\nexport const DashbarItem = ({\n\tid,\n\tindex,\n\tclassName,\n\twidget,\n\theight,\n\tdashbarHeight,\n\twidgetDividerWidth,\n\tsetTitleHeight,\n\tsetGrabLocation,\n\twidgetTitleGenerator,\n}: DashbarItemProps) => {\n\tconst titleRef = useRef(null);\n\tconst divRef = useRef(null);\n\n\tid = id ? id : `finsemble-draggable-${Date.now()}-${Math.random()}`;\n\n\tuseLayoutEffect(() => {\n\t\tif (titleRef && titleRef.current && dashbarHeight) {\n\t\t\t// The following ignore is safe because we just checked whether titleRef and titleRef.current are defined\n\t\t\t// @ts-ignore: Object is possibly 'null'.\n\t\t\tconst { offsetHeight } = titleRef.current;\n\n\t\t\tconst titleHeight = height ? height + offsetHeight : offsetHeight;\n\t\t\tsetTitleHeight(titleHeight, id);\n\t\t}\n\t});\n\n\t/**\n\t * Sets the location the titlebar of a view is clicked on when a user grabs a dashbar item\n\t *\n\t * @param event\n\t */\n\tconst _setGrabLocation = (event: React.MouseEvent<HTMLDivElement> | undefined) => {\n\t\tif (divRef && divRef.current) {\n\t\t\t//@ts-ignore: Won't access object unless it is defined\n\t\t\tconst rect = divRef.current.getBoundingClientRect();\n\t\t\tsetGrabLocation(rect.left);\n\t\t}\n\t};\n\n\tconst wrapperClass = `finsemble-dashbar-item ${className || \"\"}`;\n\tconst itemStyle = {\n\t\tdisplay: \"flex\",\n\t\twidth: widget.width,\n\t\tborderRight: `${widgetDividerWidth}px solid var(--dashbar-divider-color)`,\n\t};\n\n\tconst title = widgetTitleGenerator(widget, titleRef);\n\n\treturn (\n\t\t<FinsembleDraggable draggableId={id} index={index} key={id} wrapperClass={wrapperClass}>\n\t\t\t<div ref={divRef} id={id} onMouseDown={_setGrabLocation} className=\"dashbar-item-frame\" style={itemStyle}>\n\t\t\t\t<div>{title}</div>\n\t\t\t\t<div className=\"empty-space\"></div>\n\t\t\t</div>\n\t\t</FinsembleDraggable>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export { ToolbarShell } from \"./ToolbarShell\";\r\nexport { AutoArrange } from \"./AutoArrange\";\r\nexport { MinimizeAll } from \"./MinimizeAll\";\r\nexport { NotificationControl } from \"./NotificationControl\";\r\nexport { RevealAll } from \"./RevealAll\";\r\nexport { ToolbarSection } from \"./ToolbarSection\";\r\nexport { AppLauncherMenu } from \"./appLauncher/AppLauncherMenu\";\r\nexport { AdvancedAppLauncherMenu } from \"./advancedAppLauncher/AdvancedAppLauncherMenu\";\r\nexport { WorkspaceManagementMenu } from \"./workspaceManagementMenu/WorkspaceManagementMenu\";\r\nexport { Dashbar } from \"./dashbar/Dashbar\";\r\nexport { DashbarItem } from \"./dashbar/DashbarItem\";\r\nexport { Search } from \"../search/Search\";\r\nexport { DragHandle } from \"./DragHandle\";\r\nexport { ToolbarIcon } from \"./ToolbarIcon\";\r\nexport { FavoritesShell } from \"../favorites/FavoritesShell\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export { ToolbarShell } from \"./ToolbarShell\";\nexport { AutoArrange } from \"./AutoArrange\";\nexport { MinimizeAll } from \"./MinimizeAll\";\nexport { NotificationControl } from \"./NotificationControl\";\nexport { RevealAll } from \"./RevealAll\";\nexport { ToolbarSection } from \"./ToolbarSection\";\nexport { AppLauncherMenu } from \"./appLauncher/AppLauncherMenu\";\nexport { AdvancedAppLauncherMenu } from \"./advancedAppLauncher/AdvancedAppLauncherMenu\";\nexport { WorkspaceManagementMenu } from \"./workspaceManagementMenu/WorkspaceManagementMenu\";\nexport { Dashbar } from \"./dashbar/Dashbar\";\nexport { DashbarItem } from \"./dashbar/DashbarItem\";\nexport { Search } from \"../search/Search\";\nexport { DragHandle } from \"./DragHandle\";\nexport { ToolbarIcon } from \"./ToolbarIcon\";\nexport { FavoritesShell } from \"../favorites/FavoritesShell\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceManagementMenu.js","sourceRoot":"","sources":["../../../../src/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n */\r\nimport React from \"react\";\r\nimport { Actions as WorkspaceManagementMenuActions } from \"./stores/workspaceManagementMenuStore\";\r\nimport WorkspaceActions from \"./components/WorkspaceActions\";\r\nimport WorkspaceList from \"./components/WorkspaceList\";\r\nimport { Menu } from \"../../menu/Menu\";\r\nimport { storeManager } from \"./stores/workspaceManagementMenuStore\";\r\n\r\nimport \"./workspaceManagementMenu.css\";\r\n\r\n/**\r\n * A button that opens the workspace management menu when clicked.\r\n */\r\nexport class WorkspaceManagementMenu extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.bindCorrectContext();\r\n\t\tthis.store = null;\r\n\t\tthis.state = {\r\n\t\t\tWorkspaceList: [],\r\n\t\t\tactiveWorkspace: null,\r\n\t\t\tinitialized: false,\r\n\t\t};\r\n\t}\r\n\r\n\tbindCorrectContext() {\r\n\t\tthis.onStoreChange = this.onStoreChange.bind(this);\r\n\t\tthis.onInitialized = this.onInitialized.bind(this);\r\n\t}\r\n\r\n\tonInitialized(store) {\r\n\t\tthis.store = store;\r\n\t\tthis.store.addListeners([\r\n\t\t\t{ field: \"WorkspaceList\", listener: this.onStoreChange },\r\n\t\t\t{ field: \"activeWorkspace\", listener: this.onStoreChange },\r\n\t\t\t{ field: \"isSwitchingWorkspaces\", listener: this.onStoreChange },\r\n\t\t]);\r\n\t\tthis.onStoreChange();\r\n\t\tthis.setState({\r\n\t\t\tinitialized: true,\r\n\t\t});\r\n\t}\r\n\r\n\tonStoreChange() {\r\n\t\tthis.setState({\r\n\t\t\tWorkspaceList: WorkspaceManagementMenuActions.getWorkspaceList(),\r\n\t\t\tactiveWorkspace: WorkspaceManagementMenuActions.getActiveWorkspace(),\r\n\t\t\tisSwitchingWorksapces: WorkspaceManagementMenuActions.getIsSwitchingWorkspaces(),\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tstoreManager.addInitializedListener(this.onInitialized);\r\n\t\tstoreManager.initialize();\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tstoreManager.removeInitializedListener(this.onInitialized);\r\n\t\tif (this.state.initialized)\r\n\t\t\tthis.store.removeListeners([\r\n\t\t\t\t{ field: \"WorkspaceList\", listener: this.onStoreChange },\r\n\t\t\t\t{ field: \"activeWorkspace\", listener: this.onStoreChange },\r\n\t\t\t\t{ field: \"isSwitchingWorkspaces\", listener: this.onStoreChange },\r\n\t\t\t]);\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet completeProps = {\r\n\t\t\t...this.props,\r\n\t\t\twidth: this.props.width ?? 330,\r\n\t\t\tclassName: this.props.className ?? \"workspace-management-menu\",\r\n\t\t\tid: this.props.id ?? \"WorkspaceMenu\",\r\n\t\t\ttitle: this.state.activeWorkspace?.name,\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t<Menu {...completeProps}>\r\n\t\t\t\t{this.state.initialized ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<WorkspaceActions />\r\n\t\t\t\t\t\t<WorkspaceList\r\n\t\t\t\t\t\t\tisSwitchingWorkspaces={this.state.isSwitchingWorksapces}\r\n\t\t\t\t\t\t\tactiveWorkspace={this.state.activeWorkspace}\r\n\t\t\t\t\t\t\tworkspaces={this.state.WorkspaceList}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</>\r\n\t\t\t\t) : null}\r\n\t\t\t</Menu>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"WorkspaceManagementMenu.js","sourceRoot":"","sources":["../../../../src/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React from \"react\";\nimport { Actions as WorkspaceManagementMenuActions } from \"./stores/workspaceManagementMenuStore\";\nimport WorkspaceActions from \"./components/WorkspaceActions\";\nimport WorkspaceList from \"./components/WorkspaceList\";\nimport { Menu } from \"../../menu/Menu\";\nimport { storeManager } from \"./stores/workspaceManagementMenuStore\";\n\nimport \"./workspaceManagementMenu.css\";\n\n/**\n * A button that opens the workspace management menu when clicked.\n */\nexport class WorkspaceManagementMenu extends React.Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.bindCorrectContext();\n\t\tthis.store = null;\n\t\tthis.state = {\n\t\t\tWorkspaceList: [],\n\t\t\tactiveWorkspace: null,\n\t\t\tinitialized: false,\n\t\t};\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.onStoreChange = this.onStoreChange.bind(this);\n\t\tthis.onInitialized = this.onInitialized.bind(this);\n\t}\n\n\tonInitialized(store) {\n\t\tthis.store = store;\n\t\tthis.store.addListeners([\n\t\t\t{ field: \"WorkspaceList\", listener: this.onStoreChange },\n\t\t\t{ field: \"activeWorkspace\", listener: this.onStoreChange },\n\t\t\t{ field: \"isSwitchingWorkspaces\", listener: this.onStoreChange },\n\t\t]);\n\t\tthis.onStoreChange();\n\t\tthis.setState({\n\t\t\tinitialized: true,\n\t\t});\n\t}\n\n\tonStoreChange() {\n\t\tthis.setState({\n\t\t\tWorkspaceList: WorkspaceManagementMenuActions.getWorkspaceList(),\n\t\t\tactiveWorkspace: WorkspaceManagementMenuActions.getActiveWorkspace(),\n\t\t\tisSwitchingWorksapces: WorkspaceManagementMenuActions.getIsSwitchingWorkspaces(),\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tstoreManager.addInitializedListener(this.onInitialized);\n\t\tstoreManager.initialize();\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstoreManager.removeInitializedListener(this.onInitialized);\n\t\tif (this.state.initialized)\n\t\t\tthis.store.removeListeners([\n\t\t\t\t{ field: \"WorkspaceList\", listener: this.onStoreChange },\n\t\t\t\t{ field: \"activeWorkspace\", listener: this.onStoreChange },\n\t\t\t\t{ field: \"isSwitchingWorkspaces\", listener: this.onStoreChange },\n\t\t\t]);\n\t}\n\n\trender() {\n\t\tlet completeProps = {\n\t\t\t...this.props,\n\t\t\twidth: this.props.width ?? 330,\n\t\t\tclassName: this.props.className ?? \"workspace-management-menu\",\n\t\t\tid: this.props.id ?? \"WorkspaceMenu\",\n\t\t\ttitle: this.state.activeWorkspace?.name,\n\t\t};\n\n\t\treturn (\n\t\t\t<Menu {...completeProps}>\n\t\t\t\t{this.state.initialized ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<WorkspaceActions />\n\t\t\t\t\t\t<WorkspaceList\n\t\t\t\t\t\t\tisSwitchingWorkspaces={this.state.isSwitchingWorksapces}\n\t\t\t\t\t\t\tactiveWorkspace={this.state.activeWorkspace}\n\t\t\t\t\t\t\tworkspaces={this.state.WorkspaceList}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) : null}\n\t\t\t</Menu>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Workspace.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/workspaceManagementMenu/components/Workspace.jsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC;IACvD,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,EAAE;QACrC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QAIpB,8BAA8B,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE;YACxE,IAAI,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC9C,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC/B;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACN,8BAAM,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAC,gBAAgB;QACjE,2BAAG,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAC,QAAQ,GAAK,CACjD,CACP,CAAC;AACH,CAAC,CAAC;AACF,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,KAAK,CAAC,SAAS;IACrD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAOD,kBAAkB;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAOD,OAAO;QACN,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;SAC/B,CAAC,CAAC;IACJ,CAAC;IAQD,MAAM;QACL,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAIvF,MAAM,WAAW,GAAG,qBAAqB,IAAI,iBAAiB,CAAC;QAE/D,IAAI,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,0BAA0B,CAAC;QAE3G,OAAO,CACN,oBAAC,QAAQ,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO;YAClD,6BAAK,SAAS,EAAC,eAAe;gBAC5B,WAAW,IAAI,8BAAM,SAAS,EAAC,aAAa,iBAAkB;gBAC9D,CAAC,WAAW,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,IAAI,8BAAM,SAAS,EAAE,UAAU,CAAC,SAAS,GAAS;gBACrG,8BAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IACpD,SAAS,CAAC,IAAI,CACT;gBACP,6BAAK,SAAS,EAAC,0BAA0B;oBACvC,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,oBAAC,eAAe,IAAC,SAAS,EAAE,SAAS,GAAI;oBACxF,oBAAC,aAAa,IACb,EAAE,EAAE,SAAS,CAAC,IAAI,EAClB,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAC,gBAAgB,GACzB,CACG,CACD,CACI,CACX,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n * This is a single workspace. When clicked, it requests that the app switch to the clicked workspace.\r\n */\r\n\r\nimport React from \"react\";\r\nimport { MenuItem } from \"../../../menu/MenuItem\";\r\nimport { Actions as WorkspaceManagementMenuActions } from \"../stores/workspaceManagementMenuStore\";\r\nimport { FavoriteMaker } from \"../../../favorites/FavoriteMaker\";\r\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\r\nconst RemoveWorkspace = (props) => {\r\n\tconst { workspace } = props;\r\n\tconst { isFavorited, removeFavorite } = useFavorites();\r\n\tconst actuallyRemoveWorkspace = (e) => {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\t// Trigger the remove. This will throw a dialog. It will return a boolean\r\n\t\t// for whether it was or was not deleted.\r\n\t\t// If the thing was deleted, remove it from favorites.\r\n\t\tWorkspaceManagementMenuActions.removeWorkspace(workspace, (wasDeleted) => {\r\n\t\t\tif (wasDeleted && isFavorited(workspace.name)) {\r\n\t\t\t\tremoveFavorite(workspace.name);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t<span onClick={actuallyRemoveWorkspace} className=\"menu-item-icon\">\r\n\t\t\t<i className=\"ff-adp-trash-outline\" title=\"Delete\"></i>\r\n\t\t</span>\r\n\t);\r\n};\r\nexport default class Workspace extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.bindCorrectContext();\r\n\t}\r\n\r\n\t/**\r\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\r\n\t *\r\n\t * @memberof LinkerButton\r\n\t */\r\n\tbindCorrectContext() {\r\n\t\tthis.onClick = this.onClick.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * When the main body of the component is clicked, we fire off the mainAction. By default this is to switch workspaces.\r\n\t *\r\n\t * @memberof Workspace\r\n\t */\r\n\tonClick() {\r\n\t\tthis.props.mainAction({\r\n\t\t\tname: this.props.workspace.name,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Render method.\r\n\t *\r\n\t * @returns\r\n\t * @memberof Workspace\r\n\t */\r\n\trender() {\r\n\t\tconst { isSwitchingWorkspaces, workspace, isActiveWorkspace, dragHandle } = this.props;\r\n\r\n\t\t// Actions are remove and pin workspace.\r\n\r\n\t\tconst showSpinner = isSwitchingWorkspaces && isActiveWorkspace;\r\n\r\n\t\tlet classes = isActiveWorkspace ? \"menu-item active-workspace workspace-name\" : \"menu-item workspace-name\";\r\n\r\n\t\treturn (\r\n\t\t\t<MenuItem onClick={this.onClick} className={classes}>\r\n\t\t\t\t<div className=\"menu-item-row\">\r\n\t\t\t\t\t{showSpinner && <span className=\"fsbl-loader\">Loading...</span>}\r\n\t\t\t\t\t{!showSpinner && dragHandle && dragHandle.iconClass && <span className={dragHandle.iconClass}></span>}\r\n\t\t\t\t\t<span className=\"workspace-name\" title={workspace.name}>\r\n\t\t\t\t\t\t{workspace.name}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t<div className=\"menu-item-row-push-right\">\r\n\t\t\t\t\t\t{!isActiveWorkspace && !workspace.permanent && <RemoveWorkspace workspace={workspace} />}\r\n\t\t\t\t\t\t<FavoriteMaker\r\n\t\t\t\t\t\t\tid={workspace.name}\r\n\t\t\t\t\t\t\tname={workspace.name}\r\n\t\t\t\t\t\t\tcategory={\"Workspace\"}\r\n\t\t\t\t\t\t\tclassName=\"menu-item-icon\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</MenuItem>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"Workspace.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/workspaceManagementMenu/components/Workspace.jsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC;IACvD,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,EAAE;QACrC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QAIpB,8BAA8B,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE;YACxE,IAAI,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC9C,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC/B;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACN,8BAAM,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAC,gBAAgB;QACjE,2BAAG,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAC,QAAQ,GAAK,CACjD,CACP,CAAC;AACH,CAAC,CAAC;AACF,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,KAAK,CAAC,SAAS;IACrD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAOD,kBAAkB;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAOD,OAAO;QACN,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACrB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;SAC/B,CAAC,CAAC;IACJ,CAAC;IAQD,MAAM;QACL,MAAM,EAAE,qBAAqB,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAIvF,MAAM,WAAW,GAAG,qBAAqB,IAAI,iBAAiB,CAAC;QAE/D,IAAI,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,0BAA0B,CAAC;QAE3G,OAAO,CACN,oBAAC,QAAQ,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO;YAClD,6BAAK,SAAS,EAAC,eAAe;gBAC5B,WAAW,IAAI,8BAAM,SAAS,EAAC,aAAa,iBAAkB;gBAC9D,CAAC,WAAW,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,IAAI,8BAAM,SAAS,EAAE,UAAU,CAAC,SAAS,GAAS;gBACrG,8BAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IACpD,SAAS,CAAC,IAAI,CACT;gBACP,6BAAK,SAAS,EAAC,0BAA0B;oBACvC,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,oBAAC,eAAe,IAAC,SAAS,EAAE,SAAS,GAAI;oBACxF,oBAAC,aAAa,IACb,EAAE,EAAE,SAAS,CAAC,IAAI,EAClB,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAC,gBAAgB,GACzB,CACG,CACD,CACI,CACX,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n * This is a single workspace. When clicked, it requests that the app switch to the clicked workspace.\n */\n\nimport React from \"react\";\nimport { MenuItem } from \"../../../menu/MenuItem\";\nimport { Actions as WorkspaceManagementMenuActions } from \"../stores/workspaceManagementMenuStore\";\nimport { FavoriteMaker } from \"../../../favorites/FavoriteMaker\";\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\nconst RemoveWorkspace = (props) => {\n\tconst { workspace } = props;\n\tconst { isFavorited, removeFavorite } = useFavorites();\n\tconst actuallyRemoveWorkspace = (e) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\t// Trigger the remove. This will throw a dialog. It will return a boolean\n\t\t// for whether it was or was not deleted.\n\t\t// If the thing was deleted, remove it from favorites.\n\t\tWorkspaceManagementMenuActions.removeWorkspace(workspace, (wasDeleted) => {\n\t\t\tif (wasDeleted && isFavorited(workspace.name)) {\n\t\t\t\tremoveFavorite(workspace.name);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn (\n\t\t<span onClick={actuallyRemoveWorkspace} className=\"menu-item-icon\">\n\t\t\t<i className=\"ff-adp-trash-outline\" title=\"Delete\"></i>\n\t\t</span>\n\t);\n};\nexport default class Workspace extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.bindCorrectContext();\n\t}\n\n\t/**\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\n\t *\n\t * @memberof LinkerButton\n\t */\n\tbindCorrectContext() {\n\t\tthis.onClick = this.onClick.bind(this);\n\t}\n\n\t/**\n\t * When the main body of the component is clicked, we fire off the mainAction. By default this is to switch workspaces.\n\t *\n\t * @memberof Workspace\n\t */\n\tonClick() {\n\t\tthis.props.mainAction({\n\t\t\tname: this.props.workspace.name,\n\t\t});\n\t}\n\n\t/**\n\t * Render method.\n\t *\n\t * @returns\n\t * @memberof Workspace\n\t */\n\trender() {\n\t\tconst { isSwitchingWorkspaces, workspace, isActiveWorkspace, dragHandle } = this.props;\n\n\t\t// Actions are remove and pin workspace.\n\n\t\tconst showSpinner = isSwitchingWorkspaces && isActiveWorkspace;\n\n\t\tlet classes = isActiveWorkspace ? \"menu-item active-workspace workspace-name\" : \"menu-item workspace-name\";\n\n\t\treturn (\n\t\t\t<MenuItem onClick={this.onClick} className={classes}>\n\t\t\t\t<div className=\"menu-item-row\">\n\t\t\t\t\t{showSpinner && <span className=\"fsbl-loader\">Loading...</span>}\n\t\t\t\t\t{!showSpinner && dragHandle && dragHandle.iconClass && <span className={dragHandle.iconClass}></span>}\n\t\t\t\t\t<span className=\"workspace-name\" title={workspace.name}>\n\t\t\t\t\t\t{workspace.name}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div className=\"menu-item-row-push-right\">\n\t\t\t\t\t\t{!isActiveWorkspace && !workspace.permanent && <RemoveWorkspace workspace={workspace} />}\n\t\t\t\t\t\t<FavoriteMaker\n\t\t\t\t\t\t\tid={workspace.name}\n\t\t\t\t\t\t\tname={workspace.name}\n\t\t\t\t\t\t\tcategory={\"Workspace\"}\n\t\t\t\t\t\t\tclassName=\"menu-item-icon\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</MenuItem>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceActions.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.jsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,OAAO,IAAI,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,KAAK,CAAC,SAAS;IAC5D;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG;YAClB;gBACC,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,KAAK,EAAE,eAAe;gBACtB,EAAE,EAAE,cAAc;aAClB;YACD;gBACC,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,MAAM;gBACb,EAAE,EAAE,eAAe;aACnB;YACD;gBACC,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,KAAK,EAAE,SAAS;gBAChB,EAAE,EAAE,iBAAiB;aACrB;SACD,CAAC;IACH,CAAC;IAOD,eAAe;QACd,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,YAAY,EAAE,CAAC;IAC/C,CAAC;IAOD,aAAa;QACZ,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC;IAOD,eAAe;QACd,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAED,eAAe;QACd,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAQD,MAAM;QAIL,OAAO,CACN,6BAAK,SAAS,EAAC,kCAAkC,IAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,oBAAC,QAAQ,IAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,IAC1C,MAAM,CAAC,KAAK,CACH,CACX,CAAC,CACG,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n * This is the list of actions the user can take; it's placed above the list of workspaces..\r\n */\r\nimport React from \"react\";\r\nimport { getStore, Actions as WorkspaceManagementMenuActions } from \"../stores/workspaceManagementMenuStore\";\r\nimport { MenuItem } from \"../../../menu/MenuItem\";\r\nexport default class WorkspaceActions extends React.Component {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.userActions = [\r\n\t\t\t{\r\n\t\t\t\tmethod: this.createWorkspace,\r\n\t\t\t\tlabel: \"New workspace\",\r\n\t\t\t\tid: \"NewWorkspace\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tmethod: this.saveWorkspace,\r\n\t\t\t\tlabel: \"Save\",\r\n\t\t\t\tid: \"SaveWorkspace\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tmethod: this.saveWorkspaceAs,\r\n\t\t\t\tlabel: \"Save as\",\r\n\t\t\t\tid: \"SaveWorkspaceAs\",\r\n\t\t\t},\r\n\t\t];\r\n\t}\r\n\r\n\t/**\r\n\t * Blurs window. Pops up a dialog asking for a name for the new workspace.\r\n\t *\r\n\t * @memberof WorkspaceActions\r\n\t */\r\n\tcreateWorkspace() {\r\n\t\tWorkspaceManagementMenuActions.blurWindow();\r\n\t\tWorkspaceManagementMenuActions.newWorkspace();\r\n\t}\r\n\r\n\t/**\r\n\t * Blurs window. Persists activeWorkspace to the storage.\r\n\t *\r\n\t * @memberof WorkspaceActions\r\n\t */\r\n\tsaveWorkspace() {\r\n\t\tWorkspaceManagementMenuActions.blurWindow();\r\n\t\tWorkspaceManagementMenuActions.saveWorkspace();\r\n\t}\r\n\r\n\t/**\r\n\t * Blurs window. Pops up a dialog asking for a name for the new workspace.\r\n\t *\r\n\t * @memberof WorkspaceActions\r\n\t */\r\n\tsaveWorkspaceAs() {\r\n\t\tWorkspaceManagementMenuActions.blurWindow();\r\n\t\tWorkspaceManagementMenuActions.saveWorkspaceAs();\r\n\t}\r\n\r\n\tshowPreferences() {\r\n\t\tWorkspaceManagementMenuActions.blurWindow();\r\n\t\tWorkspaceManagementMenuActions.showPreferences();\r\n\t}\r\n\r\n\t/**\r\n\t * Render method.\r\n\t *\r\n\t * @returns\r\n\t * @memberof WorkspaceActions\r\n\t */\r\n\trender() {\r\n\t\t/**\r\n\t\t * Iterates through the list of actions defined in the constructor, creating an `li` for each.\r\n\t\t */\r\n\t\treturn (\r\n\t\t\t<div className=\"menu-secondary workspace-actions\">\r\n\t\t\t\t{this.userActions.map((action, index) => (\r\n\t\t\t\t\t<MenuItem key={index} onClick={action.method}>\r\n\t\t\t\t\t\t{action.label}\r\n\t\t\t\t\t</MenuItem>\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"WorkspaceActions.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.jsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAY,OAAO,IAAI,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,KAAK,CAAC,SAAS;IAC5D;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG;YAClB;gBACC,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,KAAK,EAAE,eAAe;gBACtB,EAAE,EAAE,cAAc;aAClB;YACD;gBACC,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,MAAM;gBACb,EAAE,EAAE,eAAe;aACnB;YACD;gBACC,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC5B,KAAK,EAAE,SAAS;gBAChB,EAAE,EAAE,iBAAiB;aACrB;SACD,CAAC;IACH,CAAC;IAOD,eAAe;QACd,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,YAAY,EAAE,CAAC;IAC/C,CAAC;IAOD,aAAa;QACZ,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC;IAOD,eAAe;QACd,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAED,eAAe;QACd,8BAA8B,CAAC,UAAU,EAAE,CAAC;QAC5C,8BAA8B,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;IAQD,MAAM;QAIL,OAAO,CACN,6BAAK,SAAS,EAAC,kCAAkC,IAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,oBAAC,QAAQ,IAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,IAC1C,MAAM,CAAC,KAAK,CACH,CACX,CAAC,CACG,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n * This is the list of actions the user can take; it's placed above the list of workspaces..\n */\nimport React from \"react\";\nimport { getStore, Actions as WorkspaceManagementMenuActions } from \"../stores/workspaceManagementMenuStore\";\nimport { MenuItem } from \"../../../menu/MenuItem\";\nexport default class WorkspaceActions extends React.Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.userActions = [\n\t\t\t{\n\t\t\t\tmethod: this.createWorkspace,\n\t\t\t\tlabel: \"New workspace\",\n\t\t\t\tid: \"NewWorkspace\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmethod: this.saveWorkspace,\n\t\t\t\tlabel: \"Save\",\n\t\t\t\tid: \"SaveWorkspace\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmethod: this.saveWorkspaceAs,\n\t\t\t\tlabel: \"Save as\",\n\t\t\t\tid: \"SaveWorkspaceAs\",\n\t\t\t},\n\t\t];\n\t}\n\n\t/**\n\t * Blurs window. Pops up a dialog asking for a name for the new workspace.\n\t *\n\t * @memberof WorkspaceActions\n\t */\n\tcreateWorkspace() {\n\t\tWorkspaceManagementMenuActions.blurWindow();\n\t\tWorkspaceManagementMenuActions.newWorkspace();\n\t}\n\n\t/**\n\t * Blurs window. Persists activeWorkspace to the storage.\n\t *\n\t * @memberof WorkspaceActions\n\t */\n\tsaveWorkspace() {\n\t\tWorkspaceManagementMenuActions.blurWindow();\n\t\tWorkspaceManagementMenuActions.saveWorkspace();\n\t}\n\n\t/**\n\t * Blurs window. Pops up a dialog asking for a name for the new workspace.\n\t *\n\t * @memberof WorkspaceActions\n\t */\n\tsaveWorkspaceAs() {\n\t\tWorkspaceManagementMenuActions.blurWindow();\n\t\tWorkspaceManagementMenuActions.saveWorkspaceAs();\n\t}\n\n\tshowPreferences() {\n\t\tWorkspaceManagementMenuActions.blurWindow();\n\t\tWorkspaceManagementMenuActions.showPreferences();\n\t}\n\n\t/**\n\t * Render method.\n\t *\n\t * @returns\n\t * @memberof WorkspaceActions\n\t */\n\trender() {\n\t\t/**\n\t\t * Iterates through the list of actions defined in the constructor, creating an `li` for each.\n\t\t */\n\t\treturn (\n\t\t\t<div className=\"menu-secondary workspace-actions\">\n\t\t\t\t{this.userActions.map((action, index) => (\n\t\t\t\t\t<MenuItem key={index} onClick={action.method}>\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</MenuItem>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/workspaceManagementMenu/components/WorkspaceList.jsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAGlF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAS;IACzD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAQD,eAAe,CAAC,aAAa;QAC5B,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAC/B,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM;QACL,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9D,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;YAE3D,IAAI,iBAAiB,GAAG,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC;YAChE,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAErD,OAAO,CACN,oBAAC,kBAAkB,IAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,IAAI;gBAChE,oBAAC,SAAS,IACT,GAAG,EAAE,CAAC,EACN,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,OAAO,CAAC,iBAAiB,EACrC,qBAAqB,EAAE,qBAAqB,GAC3C,CACkB,CACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CACN,oBAAC,mBAAmB,IAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAC,gBAAgB,IACxE,UAAU,CACU,CACtB,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n * This is a list of workspaces that the user can click on, loading them.\r\n */\r\nimport React from \"react\";\r\nimport Workspace from \"./Workspace\";\r\nimport { Actions } from \"../stores/workspaceManagementMenuStore\";\r\nimport { FinsembleDraggable } from \"../../../legacyControls/FinsembleDraggable\";\r\nimport { FinsembleDnDContext } from \"../../../legacyControls/FinsembleDnDContext\";\r\nimport { FinsembleMenuSection } from \"../../../legacyControls/FinsembleMenuSection\";\r\n\r\nexport default class WorkspaceList extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a workspace.\r\n\t *\r\n\t * @param {any} workspaceName\r\n\t * @memberof WorkspaceManagementList\r\n\t */\r\n\tremoveWorkspace(workspaceName) {\r\n\t\tActions.removeWorkspace(workspaceName);\r\n\t}\r\n\r\n\tonDragEnd({ oldIndex, newIndex }) {\r\n\t\tActions.reorderWorkspaceList({ oldIndex, newIndex });\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { isSwitchingWorkspaces, activeWorkspace } = this.props;\r\n\t\tlet workspaces = this.props.workspaces.map((workspace, i) => {\r\n\t\t\t// Separate array for each workspace. This way, the activeWorkspace can be rendered without a trashcan.\r\n\t\t\tlet isActiveWorkspace = workspace.name === activeWorkspace.name;\r\n\t\t\tconst dragHandle = { iconClass: \"ff-adp-hamburger\" };\r\n\r\n\t\t\treturn (\r\n\t\t\t\t<FinsembleDraggable index={i} key={i} draggableId={workspace.name}>\r\n\t\t\t\t\t<Workspace\r\n\t\t\t\t\t\tkey={i}\r\n\t\t\t\t\t\tisActiveWorkspace={isActiveWorkspace}\r\n\t\t\t\t\t\tdragHandle={dragHandle}\r\n\t\t\t\t\t\tworkspace={workspace}\r\n\t\t\t\t\t\tmainAction={Actions.switchToWorkspace}\r\n\t\t\t\t\t\tisSwitchingWorkspaces={isSwitchingWorkspaces}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</FinsembleDraggable>\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn (\r\n\t\t\t<FinsembleDnDContext onDragEnd={this.onDragEnd} className=\"workspace-list\">\r\n\t\t\t\t{workspaces}\r\n\t\t\t</FinsembleDnDContext>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"WorkspaceList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/workspaceManagementMenu/components/WorkspaceList.jsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAGlF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAS;IACzD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAQD,eAAe,CAAC,aAAa;QAC5B,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAC/B,OAAO,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM;QACL,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9D,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;YAE3D,IAAI,iBAAiB,GAAG,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC;YAChE,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAErD,OAAO,CACN,oBAAC,kBAAkB,IAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,IAAI;gBAChE,oBAAC,SAAS,IACT,GAAG,EAAE,CAAC,EACN,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,OAAO,CAAC,iBAAiB,EACrC,qBAAqB,EAAE,qBAAqB,GAC3C,CACkB,CACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CACN,oBAAC,mBAAmB,IAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAC,gBAAgB,IACxE,UAAU,CACU,CACtB,CAAC;IACH,CAAC;CACD","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n * This is a list of workspaces that the user can click on, loading them.\n */\nimport React from \"react\";\nimport Workspace from \"./Workspace\";\nimport { Actions } from \"../stores/workspaceManagementMenuStore\";\nimport { FinsembleDraggable } from \"../../../legacyControls/FinsembleDraggable\";\nimport { FinsembleDnDContext } from \"../../../legacyControls/FinsembleDnDContext\";\nimport { FinsembleMenuSection } from \"../../../legacyControls/FinsembleMenuSection\";\n\nexport default class WorkspaceList extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t}\n\n\t/**\n\t * Removes a workspace.\n\t *\n\t * @param {any} workspaceName\n\t * @memberof WorkspaceManagementList\n\t */\n\tremoveWorkspace(workspaceName) {\n\t\tActions.removeWorkspace(workspaceName);\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }) {\n\t\tActions.reorderWorkspaceList({ oldIndex, newIndex });\n\t}\n\n\trender() {\n\t\tconst { isSwitchingWorkspaces, activeWorkspace } = this.props;\n\t\tlet workspaces = this.props.workspaces.map((workspace, i) => {\n\t\t\t// Separate array for each workspace. This way, the activeWorkspace can be rendered without a trashcan.\n\t\t\tlet isActiveWorkspace = workspace.name === activeWorkspace.name;\n\t\t\tconst dragHandle = { iconClass: \"ff-adp-hamburger\" };\n\n\t\t\treturn (\n\t\t\t\t<FinsembleDraggable index={i} key={i} draggableId={workspace.name}>\n\t\t\t\t\t<Workspace\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\tisActiveWorkspace={isActiveWorkspace}\n\t\t\t\t\t\tdragHandle={dragHandle}\n\t\t\t\t\t\tworkspace={workspace}\n\t\t\t\t\t\tmainAction={Actions.switchToWorkspace}\n\t\t\t\t\t\tisSwitchingWorkspaces={isSwitchingWorkspaces}\n\t\t\t\t\t/>\n\t\t\t\t</FinsembleDraggable>\n\t\t\t);\n\t\t});\n\n\t\treturn (\n\t\t\t<FinsembleDnDContext onDragEnd={this.onDragEnd} className=\"workspace-list\">\n\t\t\t\t{workspaces}\n\t\t\t</FinsembleDnDContext>\n\t\t);\n\t}\n}\n"]}