@finsemble/finsemble-ui 6.4.0-beta.1 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (755) hide show
  1. package/README.md +28 -28
  2. package/package.json +20 -19
  3. package/react/actions/favoriteActions.js.map +1 -1
  4. package/react/actions/linkerActions.js.map +1 -1
  5. package/react/actions/menuActions.js.map +1 -1
  6. package/react/actions/rootActions.js.map +1 -1
  7. package/react/actions/searchActions.js.map +1 -1
  8. package/react/actions/smartDesktopDesignerActions.d.ts +6 -2
  9. package/react/actions/smartDesktopDesignerActions.js +2 -0
  10. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  11. package/react/actions/toolbarActions.js.map +1 -1
  12. package/react/actions/workspaceActions.js.map +1 -1
  13. package/react/assets/css/advancedAppLauncher.css +636 -636
  14. package/react/assets/css/appCatalog.css +1069 -1069
  15. package/react/assets/css/authentication.css +78 -78
  16. package/react/assets/css/button.css +220 -220
  17. package/react/assets/css/core/formElements.css +23 -23
  18. package/react/assets/css/core/icons.css +69 -69
  19. package/react/assets/css/core/notifications.css +75 -75
  20. package/react/assets/css/core/windowFrame.css +36 -36
  21. package/react/assets/css/dashbar.css +78 -78
  22. package/react/assets/css/defaultTheme.css +356 -356
  23. package/react/assets/css/dialogs.css +158 -158
  24. package/react/assets/css/favorites.css +101 -101
  25. package/react/assets/css/finsemble.css +38 -38
  26. package/react/assets/css/focus.css +4 -4
  27. package/react/assets/css/font-finance.css +385 -385
  28. package/react/assets/css/fonts/Open_Sans/LICENSE.txt +202 -202
  29. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +118 -118
  30. package/react/assets/css/fonts/font-finance.svg +124 -124
  31. package/react/assets/css/fonts/icons-reference.html +1174 -1174
  32. package/react/assets/css/linkerWindow.css +124 -124
  33. package/react/assets/css/menus.css +195 -195
  34. package/react/assets/css/notificationsCenter.css +597 -597
  35. package/react/assets/css/processMonitor.css +213 -213
  36. package/react/assets/css/search.css +128 -128
  37. package/react/assets/css/shared/animations.css +99 -99
  38. package/react/assets/css/tags.css +136 -136
  39. package/react/assets/css/toolbar.css +413 -413
  40. package/react/assets/css/userPreferences.css +538 -538
  41. package/react/assets/css/windowTitleBar.css +653 -652
  42. package/react/assets/icons/always-on-top.svg +20 -0
  43. package/react/assets/icons/caret.svg +7 -7
  44. package/react/assets/icons/check-square.svg +5 -5
  45. package/react/assets/icons/check.svg +3 -3
  46. package/react/assets/icons/chevron-left.svg +3 -3
  47. package/react/assets/icons/chevron-right.svg +3 -3
  48. package/react/assets/icons/close.svg +11 -0
  49. package/react/assets/icons/code-block.svg +15 -0
  50. package/react/assets/icons/copy.svg +10 -10
  51. package/react/assets/icons/documentation.svg +20 -0
  52. package/react/assets/icons/exclamation-circle.svg +4 -4
  53. package/react/assets/icons/external-link.svg +12 -12
  54. package/react/assets/icons/flag.svg +10 -10
  55. package/react/assets/icons/folder.svg +3 -3
  56. package/react/assets/icons/font.svg +3 -3
  57. package/react/assets/icons/globe.svg +3 -3
  58. package/react/assets/icons/hdd.svg +9 -9
  59. package/react/assets/icons/key.svg +10 -10
  60. package/react/assets/icons/life-ring.svg +3 -3
  61. package/react/assets/icons/linker.svg +18 -0
  62. package/react/assets/icons/lock.svg +5 -5
  63. package/react/assets/icons/magic.svg +15 -15
  64. package/react/assets/icons/maximize.svg +16 -0
  65. package/react/assets/icons/minimize.svg +15 -0
  66. package/react/assets/icons/moon.svg +10 -10
  67. package/react/assets/icons/paint-roller.svg +3 -3
  68. package/react/assets/icons/pencil.svg +10 -10
  69. package/react/assets/icons/plus.svg +3 -3
  70. package/react/assets/icons/question-circle.svg +5 -5
  71. package/react/assets/icons/search.svg +3 -3
  72. package/react/assets/icons/sun.svg +9 -9
  73. package/react/assets/icons/times.svg +3 -3
  74. package/react/assets/icons/toggle-off.svg +6 -6
  75. package/react/assets/icons/toggle-on.svg +6 -6
  76. package/react/assets/icons/toolbar.svg +12 -12
  77. package/react/assets/icons/tools.svg +3 -3
  78. package/react/assets/icons/trash.svg +12 -12
  79. package/react/assets/icons/upload.svg +10 -10
  80. package/react/assets/icons/window.svg +3 -3
  81. package/react/assets/img/finsemble-display.png +0 -0
  82. package/react/componentTemplateGenerator.js +85 -85
  83. package/react/componentTemplateGenerator.js.map +1 -1
  84. package/react/components/FinsembleProvider.js.map +1 -1
  85. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  86. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  87. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  88. package/react/components/appCatalog/components/AppList.js.map +1 -1
  89. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  90. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  91. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  92. package/react/components/appCatalog/components/Hero.js.map +1 -1
  93. package/react/components/appCatalog/components/Home.js.map +1 -1
  94. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  95. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  96. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  97. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  98. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  99. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  100. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  101. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  102. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  103. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  104. package/react/components/appCatalog/components/Showcase/defaults.js.map +1 -1
  105. package/react/components/appCatalog/components/Tag.js.map +1 -1
  106. package/react/components/appCatalog/components/Toast.js.map +1 -1
  107. package/react/components/appCatalog/components/helpers.js.map +1 -1
  108. package/react/components/appCatalog/index.js.map +1 -1
  109. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  110. package/react/components/appCatalog/modules/FDC3.d.ts +1 -1
  111. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  112. package/react/components/appCatalog/stores/appStore.d.ts +2 -2
  113. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  114. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  115. package/react/components/common/Accordion.js +1 -1
  116. package/react/components/common/Accordion.js.map +1 -1
  117. package/react/components/common/Button.js.map +1 -1
  118. package/react/components/common/ButtonIcon.js.map +1 -1
  119. package/react/components/common/ButtonRow.js.map +1 -1
  120. package/react/components/common/ButtonTile.js.map +1 -1
  121. package/react/components/common/Checkbox.js +1 -1
  122. package/react/components/common/Checkbox.js.map +1 -1
  123. package/react/components/common/ColorPicker.js.map +1 -1
  124. package/react/components/common/DropZone.js +3 -1
  125. package/react/components/common/DropZone.js.map +1 -1
  126. package/react/components/common/DropdownButton.js.map +1 -1
  127. package/react/components/common/FileInput.d.ts +2 -1
  128. package/react/components/common/FileInput.js +9 -4
  129. package/react/components/common/FileInput.js.map +1 -1
  130. package/react/components/common/FinsembleIcon.d.ts +1 -1
  131. package/react/components/common/FinsembleIcon.js +15 -1
  132. package/react/components/common/FinsembleIcon.js.map +1 -1
  133. package/react/components/common/FinsembleSelect.js +1 -1
  134. package/react/components/common/FinsembleSelect.js.map +1 -1
  135. package/react/components/common/FinsembleToggle.js.map +1 -1
  136. package/react/components/common/Header.js +3 -1
  137. package/react/components/common/Header.js.map +1 -1
  138. package/react/components/common/ImagePreview.js.map +1 -1
  139. package/react/components/common/InputTable.js.map +1 -1
  140. package/react/components/common/LoadingSpinner.js.map +1 -1
  141. package/react/components/common/Tab.js.map +1 -1
  142. package/react/components/common/Tooltip.js +3 -1
  143. package/react/components/common/Tooltip.js.map +1 -1
  144. package/react/components/common/css/accordion.css +99 -89
  145. package/react/components/common/css/application-edit-page.css +324 -223
  146. package/react/components/common/css/application-list.css +53 -47
  147. package/react/components/common/css/button.css +166 -166
  148. package/react/components/common/css/checkbox.css +30 -31
  149. package/react/components/common/css/color-picker.css +52 -52
  150. package/react/components/common/css/drop-zone.css +17 -17
  151. package/react/components/common/css/file-input.css +65 -49
  152. package/react/components/common/css/header.css +30 -32
  153. package/react/components/common/css/icon.css +13 -13
  154. package/react/components/common/css/image-preview.css +57 -57
  155. package/react/components/common/css/loading-spinner.css +39 -39
  156. package/react/components/common/css/preload-edit-page.css +37 -0
  157. package/react/components/common/css/selector.css +51 -51
  158. package/react/components/common/css/styles.css +127 -128
  159. package/react/components/common/css/tab.css +56 -56
  160. package/react/components/common/css/toggle.css +32 -32
  161. package/react/components/common/css/tooltip.css +78 -78
  162. package/react/components/common/file_helpers.js.map +1 -1
  163. package/react/components/common/fixtures/FinsembleIcon.css +4 -4
  164. package/react/components/common/helpers.js.map +1 -1
  165. package/react/components/common/stories/Accordion.stories.js.map +1 -1
  166. package/react/components/common/stories/Button.stories.js.map +1 -1
  167. package/react/components/common/stories/ButtonIcon.stories.js.map +1 -1
  168. package/react/components/common/stories/ButtonRow.stories.js.map +1 -1
  169. package/react/components/common/stories/ButtonTile.stories.js.map +1 -1
  170. package/react/components/common/stories/Checkbox.stories.js.map +1 -1
  171. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  172. package/react/components/common/stories/DropZone.stories.js.map +1 -1
  173. package/react/components/common/stories/DropdownButton.stories.js.map +1 -1
  174. package/react/components/common/stories/FileInput.stories.d.ts +2 -1
  175. package/react/components/common/stories/FileInput.stories.js +6 -0
  176. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  177. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  178. package/react/components/common/stories/FinsembleSelect.stories.js.map +1 -1
  179. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  180. package/react/components/common/stories/Header.stories.js.map +1 -1
  181. package/react/components/common/stories/ImagePreview.stories.js.map +1 -1
  182. package/react/components/common/stories/InputTable.stories.js.map +1 -1
  183. package/react/components/common/stories/LoadingSpinner.stories.js.map +1 -1
  184. package/react/components/common/stories/Tab.stories.js.map +1 -1
  185. package/react/components/common/stories/Tooltip.stories.js.map +1 -1
  186. package/react/components/common/tests/Accordion.spec.js.map +1 -1
  187. package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
  188. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  189. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  190. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  191. package/react/components/common/tests/FileInput.spec.js +20 -5
  192. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  193. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  194. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  195. package/react/components/common/tests/Header.spec.js +6 -2
  196. package/react/components/common/tests/Header.spec.js.map +1 -1
  197. package/react/components/common/tests/ImagePreview.spec.js.map +1 -1
  198. package/react/components/common/tests/InputTable.spec.js.map +1 -1
  199. package/react/components/common/tests/Tab.spec.js.map +1 -1
  200. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  201. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  202. package/react/components/favorites/FavoritesShell.js.map +1 -1
  203. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  204. package/react/components/favorites/FavoritesShell.stories.js.map +1 -1
  205. package/react/components/favorites/index.js.map +1 -1
  206. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  207. package/react/components/fdc3Resolver/ResolverDialog.css +126 -126
  208. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  209. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  210. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  211. package/react/components/icon/Icon.js.map +1 -1
  212. package/react/components/icon/index.js.map +1 -1
  213. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  214. package/react/components/legacyControls/FinsembleDialogButton.js +1 -1
  215. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  216. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  217. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  218. package/react/components/legacyControls/FinsembleDnDContext.d.ts +2 -1
  219. package/react/components/legacyControls/FinsembleDnDContext.js +8 -6
  220. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  221. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  222. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  223. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  224. package/react/components/legacyControls/stories/FinsembleDialog.stories.js.map +1 -1
  225. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js.map +1 -1
  226. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js.map +1 -1
  227. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js.map +1 -1
  228. package/react/components/legacyControls/tests/FinsembleDialog.spec.js.map +1 -1
  229. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  230. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js.map +1 -1
  231. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  232. package/react/components/linker/LinkerMenu.js.map +1 -1
  233. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  234. package/react/components/linker/index.js.map +1 -1
  235. package/react/components/linker/remoteRedux.d.ts +1 -1
  236. package/react/components/linker/remoteRedux.js.map +1 -1
  237. package/react/components/menu/Menu.d.ts +1 -0
  238. package/react/components/menu/Menu.js.map +1 -1
  239. package/react/components/menu/MenuAutoResizer.d.ts +2 -1
  240. package/react/components/menu/MenuAutoResizer.js +3 -2
  241. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  242. package/react/components/menu/MenuContent.js.map +1 -1
  243. package/react/components/menu/MenuHotKey.js.map +1 -1
  244. package/react/components/menu/MenuItem.js.map +1 -1
  245. package/react/components/menu/MenuPortal.js +118 -92
  246. package/react/components/menu/MenuPortal.js.map +1 -1
  247. package/react/components/menu/MenuShell.d.ts +1 -0
  248. package/react/components/menu/MenuShell.js +3 -2
  249. package/react/components/menu/MenuShell.js.map +1 -1
  250. package/react/components/menu/MenuToggle.js.map +1 -1
  251. package/react/components/menu/index.js.map +1 -1
  252. package/react/components/menu/keyboardNavigation.js.map +1 -1
  253. package/react/components/menu/menuContext.d.ts +1 -0
  254. package/react/components/menu/menuContext.js.map +1 -1
  255. package/react/components/menu/menuHelpers.d.ts +1 -1
  256. package/react/components/menu/menuHelpers.js +2 -2
  257. package/react/components/menu/menuHelpers.js.map +1 -1
  258. package/react/components/notifications/components/NoNotifications.js.map +1 -1
  259. package/react/components/notifications/components/drawer/Drawer.js.map +1 -1
  260. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  261. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  262. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  263. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +20 -27
  264. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  265. package/react/components/notifications/components/shared/CheckButton.d.ts +1 -1
  266. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  267. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  268. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +1 -1
  269. package/react/components/notifications/components/shared/NotificationCardShell.js +1 -1
  270. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  271. package/react/components/notifications/components/shared/OverflowMenu.d.ts +1 -1
  272. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  273. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.d.ts +1 -1
  274. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  275. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.js.map +1 -1
  276. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.d.ts +1 -1
  277. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  278. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.d.ts +1 -1
  279. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  280. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.js.map +1 -1
  281. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.d.ts +1 -1
  282. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  283. package/react/components/notifications/components/views/CardView.js.map +1 -1
  284. package/react/components/notifications/components/views/ListView.d.ts +1 -1
  285. package/react/components/notifications/components/views/ListView.js +1 -1
  286. package/react/components/notifications/components/views/ListView.js.map +1 -1
  287. package/react/components/notifications/components/views/NotificationDetailsView.d.ts +1 -1
  288. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  289. package/react/components/notifications/constants.js.map +1 -1
  290. package/react/components/notifications/icons/Card.js.map +1 -1
  291. package/react/components/notifications/icons/Chevron.js.map +1 -1
  292. package/react/components/notifications/icons/CloseIcon.js.map +1 -1
  293. package/react/components/notifications/icons/EnvelopeClose.js.map +1 -1
  294. package/react/components/notifications/icons/EnvelopeOpen.js.map +1 -1
  295. package/react/components/notifications/icons/SnoozeIcon.js.map +1 -1
  296. package/react/components/notifications/index.js.map +1 -1
  297. package/react/components/notifications/notificationsContext.js.map +1 -1
  298. package/react/components/notifications/types.d.ts +1 -1
  299. package/react/components/notifications/types.js.map +1 -1
  300. package/react/components/notifications/utils.d.ts +1 -1
  301. package/react/components/notifications/utils.js.map +1 -1
  302. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  303. package/react/components/processMonitor/ProcessMonitorTypes.js.map +1 -1
  304. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  305. package/react/components/processMonitor/components/ListHeader.d.ts +1 -1
  306. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  307. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  308. package/react/components/processMonitor/constants.js.map +1 -1
  309. package/react/components/processMonitor/helpers.js.map +1 -1
  310. package/react/components/processMonitor/helpers.spec.js.map +1 -1
  311. package/react/components/processMonitor/index.js.map +1 -1
  312. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +4 -3
  313. package/react/components/processMonitor/stores/ProcessMonitorStore.js +51 -50
  314. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  315. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  316. package/react/components/quickComponentForm/index.js.map +1 -1
  317. package/react/components/quickComponentForm/quickComponent.css +3 -3
  318. package/react/components/search/Highlight.js.map +1 -1
  319. package/react/components/search/Highlight.spec.js.map +1 -1
  320. package/react/components/search/Highlight.stories.js.map +1 -1
  321. package/react/components/search/Search.js.map +1 -1
  322. package/react/components/search/SearchBestMatch.js.map +1 -1
  323. package/react/components/search/SearchInput.js.map +1 -1
  324. package/react/components/search/SearchProviderResults.js.map +1 -1
  325. package/react/components/search/SearchResult.js +4 -3
  326. package/react/components/search/SearchResult.js.map +1 -1
  327. package/react/components/search/SearchResults.js.map +1 -1
  328. package/react/components/search/index.js.map +1 -1
  329. package/react/components/shared/Animate.js.map +1 -1
  330. package/react/components/shared/BellIcon.js.map +1 -1
  331. package/react/components/shared/BellIconCrossed.js.map +1 -1
  332. package/react/components/shared/Button.js.map +1 -1
  333. package/react/components/shared/ConditionalWrapper.js.map +1 -1
  334. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  335. package/react/components/shared/NavigationButton.js.map +1 -1
  336. package/react/components/shared/Tag.js.map +1 -1
  337. package/react/components/shared/TagsMenu.js.map +1 -1
  338. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  339. package/react/components/shared/linkerUtil.js.map +1 -1
  340. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  341. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
  342. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  343. package/react/components/shared/validateURL.js.map +1 -1
  344. package/react/components/shared/validateURL.spec.js.map +1 -1
  345. package/react/components/singleInputDialog/SingleInputDialog.css +3 -3
  346. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  347. package/react/components/singleInputDialog/SingleInputDialog.spec.js.map +1 -1
  348. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  349. package/react/components/singleInputDialog/index.js.map +1 -1
  350. package/react/components/smartDesktopDesigner/AddApp.d.ts +2 -2
  351. package/react/components/smartDesktopDesigner/AddApp.js +28 -17
  352. package/react/components/smartDesktopDesigner/AddApp.js.map +1 -1
  353. package/react/components/smartDesktopDesigner/AppEditAccess.js.map +1 -1
  354. package/react/components/smartDesktopDesigner/AppEditPage.d.ts +2 -2
  355. package/react/components/smartDesktopDesigner/AppEditPage.js +311 -242
  356. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  357. package/react/components/smartDesktopDesigner/Appearance.css +35 -28
  358. package/react/components/smartDesktopDesigner/Appearance.helpers.js.map +1 -1
  359. package/react/components/smartDesktopDesigner/Appearance.js +1 -1
  360. package/react/components/smartDesktopDesigner/Appearance.js.map +1 -1
  361. package/react/components/smartDesktopDesigner/Application.d.ts +10 -3
  362. package/react/components/smartDesktopDesigner/Application.js +37 -44
  363. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  364. package/react/components/smartDesktopDesigner/Applications.d.ts +2 -0
  365. package/react/components/smartDesktopDesigner/Applications.js +29 -20
  366. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  367. package/react/components/smartDesktopDesigner/AssetsPage.css +26 -26
  368. package/react/components/smartDesktopDesigner/AssetsPage.js.map +1 -1
  369. package/react/components/smartDesktopDesigner/Authentication.js +2 -9
  370. package/react/components/smartDesktopDesigner/Authentication.js.map +1 -1
  371. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js +1 -1
  372. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js.map +1 -1
  373. package/react/components/smartDesktopDesigner/Content.js.map +1 -1
  374. package/react/components/smartDesktopDesigner/ContentHeader.d.ts +5 -0
  375. package/react/components/smartDesktopDesigner/ContentHeader.js +10 -0
  376. package/react/components/smartDesktopDesigner/ContentHeader.js.map +1 -0
  377. package/react/components/smartDesktopDesigner/CurrentView.js.map +1 -1
  378. package/react/components/smartDesktopDesigner/EditPreload.d.ts +14 -0
  379. package/react/components/smartDesktopDesigner/EditPreload.js +169 -0
  380. package/react/components/smartDesktopDesigner/EditPreload.js.map +1 -0
  381. package/react/components/smartDesktopDesigner/Export.js +5 -5
  382. package/react/components/smartDesktopDesigner/Export.js.map +1 -1
  383. package/react/components/smartDesktopDesigner/ExportCloud.d.ts +3 -1
  384. package/react/components/smartDesktopDesigner/ExportCloud.js +4 -4
  385. package/react/components/smartDesktopDesigner/ExportCloud.js.map +1 -1
  386. package/react/components/smartDesktopDesigner/ExportDeployInfo.js.map +1 -1
  387. package/react/components/smartDesktopDesigner/ExportZip.d.ts +3 -1
  388. package/react/components/smartDesktopDesigner/ExportZip.js +8 -3
  389. package/react/components/smartDesktopDesigner/ExportZip.js.map +1 -1
  390. package/react/components/smartDesktopDesigner/GettingStarted.d.ts +1 -0
  391. package/react/components/smartDesktopDesigner/GettingStarted.js +11 -22
  392. package/react/components/smartDesktopDesigner/GettingStarted.js.map +1 -1
  393. package/react/components/smartDesktopDesigner/ItemList.d.ts +17 -0
  394. package/react/components/smartDesktopDesigner/ItemList.js +58 -0
  395. package/react/components/smartDesktopDesigner/ItemList.js.map +1 -0
  396. package/react/components/smartDesktopDesigner/Navigation.js.map +1 -1
  397. package/react/components/smartDesktopDesigner/OptionalSettingsView.d.ts +11 -0
  398. package/react/components/smartDesktopDesigner/OptionalSettingsView.js +71 -0
  399. package/react/components/smartDesktopDesigner/OptionalSettingsView.js.map +1 -0
  400. package/react/components/smartDesktopDesigner/Preloads.d.ts +8 -0
  401. package/react/components/smartDesktopDesigner/Preloads.js +26 -0
  402. package/react/components/smartDesktopDesigner/Preloads.js.map +1 -0
  403. package/react/components/smartDesktopDesigner/ProjectErrors.js.map +1 -1
  404. package/react/components/smartDesktopDesigner/Publish.js.map +1 -1
  405. package/react/components/smartDesktopDesigner/PublishProgress.js.map +1 -1
  406. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +1 -1
  407. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +34 -3
  408. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  409. package/react/components/smartDesktopDesigner/ThemePage.css +109 -109
  410. package/react/components/smartDesktopDesigner/ThemePage.js +0 -7
  411. package/react/components/smartDesktopDesigner/ThemePage.js.map +1 -1
  412. package/react/components/smartDesktopDesigner/Themes.js +0 -2
  413. package/react/components/smartDesktopDesigner/Themes.js.map +1 -1
  414. package/react/components/smartDesktopDesigner/Toolbar.js +16 -18
  415. package/react/components/smartDesktopDesigner/Toolbar.js.map +1 -1
  416. package/react/components/smartDesktopDesigner/View.js +1 -1
  417. package/react/components/smartDesktopDesigner/View.js.map +1 -1
  418. package/react/components/smartDesktopDesigner/common/fsbl_functions.d.ts +1 -1
  419. package/react/components/smartDesktopDesigner/common/fsbl_functions.js +2 -2
  420. package/react/components/smartDesktopDesigner/common/fsbl_functions.js.map +1 -1
  421. package/react/components/smartDesktopDesigner/common/getCSSVars.js.map +1 -1
  422. package/react/components/smartDesktopDesigner/common/views.js +27 -3
  423. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  424. package/react/components/smartDesktopDesigner/css/appearance.css +21 -18
  425. package/react/components/smartDesktopDesigner/css/applications.css +167 -167
  426. package/react/components/smartDesktopDesigner/css/authentication.css +119 -130
  427. package/react/components/smartDesktopDesigner/css/buttons.css +12 -12
  428. package/react/components/smartDesktopDesigner/css/export.css +176 -167
  429. package/react/components/smartDesktopDesigner/css/getting-started.css +28 -8
  430. package/react/components/smartDesktopDesigner/css/nav.css +120 -109
  431. package/react/components/smartDesktopDesigner/css/project-errors.css +15 -15
  432. package/react/components/smartDesktopDesigner/css/project-header.css +124 -121
  433. package/react/components/smartDesktopDesigner/css/styles.css +178 -179
  434. package/react/components/smartDesktopDesigner/css/views.css +23 -17
  435. package/react/components/smartDesktopDesigner/fixtures/apps.d.ts +1 -1
  436. package/react/components/smartDesktopDesigner/fixtures/apps.js +23 -1
  437. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  438. package/react/components/smartDesktopDesigner/fixtures/authenticationProps.js.map +1 -1
  439. package/react/components/smartDesktopDesigner/fixtures/configTemplate.js.map +1 -1
  440. package/react/components/smartDesktopDesigner/fixtures/exportProps.js.map +1 -1
  441. package/react/components/smartDesktopDesigner/fixtures/preloads.d.ts +22 -0
  442. package/react/components/smartDesktopDesigner/fixtures/preloads.js +40 -0
  443. package/react/components/smartDesktopDesigner/fixtures/preloads.js.map +1 -0
  444. package/react/components/smartDesktopDesigner/fixtures/projectErrorsProps.js.map +1 -1
  445. package/react/components/smartDesktopDesigner/fixtures/publishProgress.d.ts +1 -1
  446. package/react/components/smartDesktopDesigner/fixtures/publishProgress.js.map +1 -1
  447. package/react/components/smartDesktopDesigner/fixtures/themeProps.js.map +1 -1
  448. package/react/components/smartDesktopDesigner/fixtures/views.js +14 -6
  449. package/react/components/smartDesktopDesigner/fixtures/views.js.map +1 -1
  450. package/react/components/smartDesktopDesigner/sdd_helpers.js +1 -1
  451. package/react/components/smartDesktopDesigner/sdd_helpers.js.map +1 -1
  452. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.d.ts +2 -1
  453. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js +2 -0
  454. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  455. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js.map +1 -1
  456. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  457. package/react/components/smartDesktopDesigner/stories/AssetsPage.stories.js.map +1 -1
  458. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js.map +1 -1
  459. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.d.ts +10 -0
  460. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.js +13 -0
  461. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.js.map +1 -0
  462. package/react/components/smartDesktopDesigner/stories/EditPreload.stories.d.ts +11 -0
  463. package/react/components/smartDesktopDesigner/stories/EditPreload.stories.js +35 -0
  464. package/react/components/smartDesktopDesigner/stories/EditPreload.stories.js.map +1 -0
  465. package/react/components/smartDesktopDesigner/stories/Export.stories.js.map +1 -1
  466. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.d.ts +1 -1
  467. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js +1 -1
  468. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js.map +1 -1
  469. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.d.ts +1 -1
  470. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js +1 -1
  471. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js.map +1 -1
  472. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js.map +1 -1
  473. package/react/components/smartDesktopDesigner/stories/ItemList.stories.d.ts +16 -0
  474. package/react/components/smartDesktopDesigner/stories/{ApplicationList.stories.js → ItemList.stories.js} +30 -23
  475. package/react/components/smartDesktopDesigner/stories/ItemList.stories.js.map +1 -0
  476. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js.map +1 -1
  477. package/react/components/smartDesktopDesigner/stories/OptionalSettingsView.stories.d.ts +11 -0
  478. package/react/components/smartDesktopDesigner/stories/OptionalSettingsView.stories.js +28 -0
  479. package/react/components/smartDesktopDesigner/stories/OptionalSettingsView.stories.js.map +1 -0
  480. package/react/components/smartDesktopDesigner/stories/Preloads.stories.d.ts +11 -0
  481. package/react/components/smartDesktopDesigner/stories/Preloads.stories.js +31 -0
  482. package/react/components/smartDesktopDesigner/stories/Preloads.stories.js.map +1 -0
  483. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js.map +1 -1
  484. package/react/components/smartDesktopDesigner/stories/Publish.stories.js.map +1 -1
  485. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js.map +1 -1
  486. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js +7 -1
  487. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js.map +1 -1
  488. package/react/components/smartDesktopDesigner/stories/ThemePage.stories.js.map +1 -1
  489. package/react/components/smartDesktopDesigner/stories/Themes.stories.js.map +1 -1
  490. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.js.map +1 -1
  491. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js +1100 -311
  492. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  493. package/react/components/smartDesktopDesigner/tests/{ApplicationList.spec.d.ts → Application.spec.d.ts} +0 -0
  494. package/react/components/smartDesktopDesigner/tests/Application.spec.js +1496 -0
  495. package/react/components/smartDesktopDesigner/tests/Application.spec.js.map +1 -0
  496. package/react/components/smartDesktopDesigner/tests/Applications.spec.d.ts +1 -1
  497. package/react/components/smartDesktopDesigner/tests/Applications.spec.js +94 -7
  498. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  499. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js.map +1 -1
  500. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.d.ts +1 -0
  501. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.js +31 -0
  502. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.js.map +1 -0
  503. package/react/components/smartDesktopDesigner/tests/EditPreload.spec.d.ts +1 -0
  504. package/react/components/smartDesktopDesigner/tests/EditPreload.spec.js +61 -0
  505. package/react/components/smartDesktopDesigner/tests/EditPreload.spec.js.map +1 -0
  506. package/react/components/smartDesktopDesigner/tests/Export.spec.js +95 -0
  507. package/react/components/smartDesktopDesigner/tests/Export.spec.js.map +1 -1
  508. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js +7 -0
  509. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js.map +1 -1
  510. package/react/components/smartDesktopDesigner/tests/ItemList.spec.d.ts +1 -0
  511. package/react/components/smartDesktopDesigner/tests/{ApplicationList.spec.js → ItemList.spec.js} +8 -8
  512. package/react/components/smartDesktopDesigner/tests/ItemList.spec.js.map +1 -0
  513. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js.map +1 -1
  514. package/react/components/smartDesktopDesigner/tests/Preloads.spec.d.ts +1 -0
  515. package/react/components/smartDesktopDesigner/tests/Preloads.spec.js +47 -0
  516. package/react/components/smartDesktopDesigner/tests/Preloads.spec.js.map +1 -0
  517. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js +1 -1
  518. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js.map +1 -1
  519. package/react/components/smartDesktopDesigner/tests/Publish.spec.js.map +1 -1
  520. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js.map +1 -1
  521. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js +7 -30
  522. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js.map +1 -1
  523. package/react/components/smartDesktopDesigner/tests/Themes.spec.js.map +1 -1
  524. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.d.ts +1 -1
  525. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.js +5 -6
  526. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.js.map +1 -1
  527. package/react/components/smartDesktopDesigner/tests/a11y_helper.js.map +1 -1
  528. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.js +1 -0
  529. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.js.map +1 -1
  530. package/react/components/smartDesktopDesigner/themeDefinitions.js.map +1 -1
  531. package/react/components/system/System.js.map +1 -1
  532. package/react/components/system/System.spec.js.map +1 -1
  533. package/react/components/system/System.stories.js.map +1 -1
  534. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  535. package/react/components/system/index.js.map +1 -1
  536. package/react/components/toolbar/AutoArrange.js.map +1 -1
  537. package/react/components/toolbar/DragHandle.js.map +1 -1
  538. package/react/components/toolbar/DragHandle.spec.d.ts +1 -0
  539. package/react/components/toolbar/DragHandle.spec.js +31 -0
  540. package/react/components/toolbar/DragHandle.spec.js.map +1 -0
  541. package/react/components/toolbar/DragHandle.stories.d.ts +13 -0
  542. package/react/components/toolbar/DragHandle.stories.js +39 -0
  543. package/react/components/toolbar/DragHandle.stories.js.map +1 -0
  544. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  545. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  546. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  547. package/react/components/toolbar/NotificationControl.js.map +1 -1
  548. package/react/components/toolbar/RevealAll.js.map +1 -1
  549. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  550. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  551. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  552. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  553. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  554. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +1 -1
  555. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  556. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  557. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  558. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  559. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  560. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  561. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js.map +1 -1
  562. package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +1 -1
  563. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  564. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  565. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +1 -1
  566. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +47 -45
  567. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  568. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  569. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js.map +1 -1
  570. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  571. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js.map +1 -1
  572. package/react/components/toolbar/advancedAppLauncher/components/TagsList.d.ts +1 -1
  573. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js.map +1 -1
  574. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  575. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  576. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  577. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  578. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.d.ts +2 -2
  579. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js.map +1 -1
  580. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  581. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  582. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  583. package/react/components/toolbar/appLauncher/DynamicAppLauncher.js.map +1 -1
  584. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +1 -0
  585. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  586. package/react/components/toolbar/appLauncher/appLauncher.css +30 -30
  587. package/react/components/toolbar/appLauncher/components/componentList.d.ts +2 -2
  588. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  589. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +3 -2
  590. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +17 -34
  591. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  592. package/react/components/toolbar/dashbar/Dashbar.js +9 -12
  593. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  594. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  595. package/react/components/toolbar/index.js.map +1 -1
  596. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +2 -2
  597. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  598. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +1 -1
  599. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  600. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  601. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +1 -1
  602. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  603. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +4 -4
  604. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +1 -1
  605. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  606. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +90 -90
  607. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  608. package/react/components/userPreferences/UserPreferenceTypes.js.map +1 -1
  609. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  610. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  611. package/react/components/userPreferences/UserPreferencesWrapper.js.map +1 -1
  612. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  613. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  614. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  615. package/react/components/userPreferences/components/content/DashbarEditorItem.js.map +1 -1
  616. package/react/components/userPreferences/components/content/General.js.map +1 -1
  617. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  618. package/react/components/userPreferences/components/content/Workspaces.d.ts +1 -1
  619. package/react/components/userPreferences/components/content/Workspaces.js +1 -1
  620. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  621. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  622. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  623. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  624. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  625. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  626. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  627. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js.map +1 -1
  628. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  629. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js.map +1 -1
  630. package/react/components/userPreferences/index.js.map +1 -1
  631. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +1 -1
  632. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  633. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  634. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js.map +1 -1
  635. package/react/components/userPreferences/stories/General.stories.js.map +1 -1
  636. package/react/components/userPreferences/stories/Notifications.stories.js.map +1 -1
  637. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js.map +1 -1
  638. package/react/components/userPreferences/stories/NotificationsSources.stories.js.map +1 -1
  639. package/react/components/userPreferences/stories/UserPreferences.stories.js.map +1 -1
  640. package/react/components/userPreferences/stories/WorkspaceButton.stories.js.map +1 -1
  641. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js.map +1 -1
  642. package/react/components/userPreferences/stories/WorkspaceItem.stories.js.map +1 -1
  643. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js.map +1 -1
  644. package/react/components/userPreferences/stories/Workspaces.stories.js.map +1 -1
  645. package/react/components/userPreferences/tests/ContentSection.spec.js.map +1 -1
  646. package/react/components/userPreferences/tests/DashbarEditor.spec.js.map +1 -1
  647. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js.map +1 -1
  648. package/react/components/userPreferences/tests/General.spec.js.map +1 -1
  649. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -1
  650. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js.map +1 -1
  651. package/react/components/userPreferences/tests/Notifications.spec.js.map +1 -1
  652. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  653. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js.map +1 -1
  654. package/react/components/userPreferences/tests/ScheduledRestart.spec.js +1 -1
  655. package/react/components/userPreferences/tests/ScheduledRestart.spec.js.map +1 -1
  656. package/react/components/userPreferences/tests/WorkspaceButton.spec.js.map +1 -1
  657. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js.map +1 -1
  658. package/react/components/userPreferences/tests/WorkspaceItem.spec.js.map +1 -1
  659. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js.map +1 -1
  660. package/react/components/utils.js.map +1 -1
  661. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +4 -2
  662. package/react/components/windowTitleBar/WindowTitleBarShell.js +60 -59
  663. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  664. package/react/components/windowTitleBar/components/center/Tab.d.ts +0 -1
  665. package/react/components/windowTitleBar/components/center/Tab.js +2 -2
  666. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  667. package/react/components/windowTitleBar/components/center/TabList.d.ts +2 -3
  668. package/react/components/windowTitleBar/components/center/TabList.js +19 -82
  669. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  670. package/react/components/windowTitleBar/components/center/TabRegion.js.map +1 -1
  671. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  672. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  673. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  674. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  675. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  676. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  677. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  678. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  679. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +7 -0
  680. package/react/components/windowTitleBar/components/right/MaximizeButton.js +8 -2
  681. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  682. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  683. package/react/components/windowTitleBar/components/windowTitle.d.ts +9 -6
  684. package/react/components/windowTitleBar/components/windowTitle.js +154 -45
  685. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  686. package/react/components/windowTitleBar/index.js.map +1 -1
  687. package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +3 -3
  688. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +213 -217
  689. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  690. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +1 -1
  691. package/react/components/windowTitleBar/windowTitleBarContext.js.map +1 -1
  692. package/react/components/yesNoDialog/Timer.spec.js.map +1 -1
  693. package/react/components/yesNoDialog/Timer.stories.js.map +1 -1
  694. package/react/components/yesNoDialog/YesNoDialog.css +3 -3
  695. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  696. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  697. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  698. package/react/components/yesNoDialog/index.js.map +1 -1
  699. package/react/components/yesNoDialog/timer.js.map +1 -1
  700. package/react/enzymeSetup.js.map +1 -1
  701. package/react/hooks/index.js.map +1 -1
  702. package/react/hooks/useAuth.js.map +1 -1
  703. package/react/hooks/useDashbar.js.map +1 -1
  704. package/react/hooks/useDeepEffect.js.map +1 -1
  705. package/react/hooks/useFavorites.js.map +1 -1
  706. package/react/hooks/useFavoritesShell.js.map +1 -1
  707. package/react/hooks/useHotkey.js.map +1 -1
  708. package/react/hooks/useLinker.js.map +1 -1
  709. package/react/hooks/useMenu.js.map +1 -1
  710. package/react/hooks/useNotifications.d.ts +1 -1
  711. package/react/hooks/useNotifications.js.map +1 -1
  712. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  713. package/react/hooks/usePubSub.js.map +1 -1
  714. package/react/hooks/useSearch.js.map +1 -1
  715. package/react/hooks/useToolbar.js.map +1 -1
  716. package/react/hooks/useWorkspace.js.map +1 -1
  717. package/react/reducers/favoriteReducer.js.map +1 -1
  718. package/react/reducers/linkerReducer.js.map +1 -1
  719. package/react/reducers/menuReducer.js.map +1 -1
  720. package/react/reducers/rootReducer.d.ts +11 -3
  721. package/react/reducers/rootReducer.js.map +1 -1
  722. package/react/reducers/searchReducer.js.map +1 -1
  723. package/react/reducers/smartDesktopDesignerReducer.js +8 -0
  724. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  725. package/react/reducers/toolbarReducer.js.map +1 -1
  726. package/react/reducers/workspaceReducer.js.map +1 -1
  727. package/react/store.d.ts +22 -6
  728. package/react/store.js.map +1 -1
  729. package/react/types/advancedAppLauncherTypes.js.map +1 -1
  730. package/react/types/dashbarTypes.js.map +1 -1
  731. package/react/types/favoriteTypes.js.map +1 -1
  732. package/react/types/fdc3.d.ts +2 -2
  733. package/react/types/fdc3.js.map +1 -1
  734. package/react/types/hotkeyTypes.js.map +1 -1
  735. package/react/types/iconTypes.js.map +1 -1
  736. package/react/types/linkerTypes.js.map +1 -1
  737. package/react/types/searchTypes.d.ts +1 -8
  738. package/react/types/searchTypes.js.map +1 -1
  739. package/react/types/smartDesktopDesignerTypes.d.ts +8 -2
  740. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  741. package/react/types/windowTitleBar.d.ts +4 -2
  742. package/react/types/windowTitleBar.js.map +1 -1
  743. package/react/types/workspaceTypes.js.map +1 -1
  744. package/react/components/common/FontSizeSelector.d.ts +0 -7
  745. package/react/components/common/FontSizeSelector.js +0 -42
  746. package/react/components/common/FontSizeSelector.js.map +0 -1
  747. package/react/components/common/stories/FontSizeSelector.stories.d.ts +0 -12
  748. package/react/components/common/stories/FontSizeSelector.stories.js +0 -24
  749. package/react/components/common/stories/FontSizeSelector.stories.js.map +0 -1
  750. package/react/components/smartDesktopDesigner/ApplicationList.d.ts +0 -15
  751. package/react/components/smartDesktopDesigner/ApplicationList.js +0 -56
  752. package/react/components/smartDesktopDesigner/ApplicationList.js.map +0 -1
  753. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.d.ts +0 -15
  754. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js.map +0 -1
  755. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MinimizeAll.stories.js","sourceRoot":"","sources":["../../../src/components/toolbar/MinimizeAll.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,gCAAgC,CAAC;AAExC,eAAe;IACd,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,WAAW;CACtB,CAAC;AAEF,MAAM,QAAQ,GAAe,CAAC,IAAS,EAAE,EAAE;IAC1C,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGjB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAEvD,OAAO,CACN,oBAAC,iBAAiB;QACjB,oBAAC,WAAW,OAAG,CACI,CACpB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,CAAC,IAAI,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;CAC1B,CAAC","sourcesContent":["import React from \"react\";\r\nimport { MinimizeAll } from \"./MinimizeAll\";\r\nimport { Story } from \"@storybook/react/types-6-0\";\r\nimport { initFSBL } from \"../common/helpers\";\r\nimport { FinsembleProvider } from \"../FinsembleProvider\";\r\nimport { action } from \"@storybook/addon-actions\";\r\nimport \"../../assets/css/favorites.css\";\r\n\r\nexport default {\r\n\ttitle: \"Toolbar/MinimizeAll\",\r\n\tcomponent: MinimizeAll,\r\n};\r\n\r\nconst Template: Story<any> = (args: any) => {\r\n\tinitFSBL(window);\r\n\r\n\t// Overwrite mockup for testing purposes\r\n\tFSBL.Clients.WorkspaceClient.minimizeAll = args.action;\r\n\r\n\treturn (\r\n\t\t<FinsembleProvider>\r\n\t\t\t<MinimizeAll />\r\n\t\t</FinsembleProvider>\r\n\t);\r\n};\r\n\r\nexport const Basic = Template.bind({});\r\nBasic.args = {\r\n\taction: action(\"minimize\"),\r\n};\r\n"]}
1
+ {"version":3,"file":"MinimizeAll.stories.js","sourceRoot":"","sources":["../../../src/components/toolbar/MinimizeAll.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,gCAAgC,CAAC;AAExC,eAAe;IACd,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,WAAW;CACtB,CAAC;AAEF,MAAM,QAAQ,GAAe,CAAC,IAAS,EAAE,EAAE;IAC1C,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGjB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;IAEvD,OAAO,CACN,oBAAC,iBAAiB;QACjB,oBAAC,WAAW,OAAG,CACI,CACpB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,CAAC,IAAI,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;CAC1B,CAAC","sourcesContent":["import React from \"react\";\nimport { MinimizeAll } from \"./MinimizeAll\";\nimport { Story } from \"@storybook/react/types-6-0\";\nimport { initFSBL } from \"../common/helpers\";\nimport { FinsembleProvider } from \"../FinsembleProvider\";\nimport { action } from \"@storybook/addon-actions\";\nimport \"../../assets/css/favorites.css\";\n\nexport default {\n\ttitle: \"Toolbar/MinimizeAll\",\n\tcomponent: MinimizeAll,\n};\n\nconst Template: Story<any> = (args: any) => {\n\tinitFSBL(window);\n\n\t// Overwrite mockup for testing purposes\n\tFSBL.Clients.WorkspaceClient.minimizeAll = args.action;\n\n\treturn (\n\t\t<FinsembleProvider>\n\t\t\t<MinimizeAll />\n\t\t</FinsembleProvider>\n\t);\n};\n\nexport const Basic = Template.bind({});\nBasic.args = {\n\taction: action(\"minimize\"),\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationControl.js","sourceRoot":"","sources":["../../../src/components/toolbar/NotificationControl.tsx"],"names":[],"mappings":"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","sourcesContent":["// disable eslint below because the svg in the icon definition will error if React is not imported\r\nimport * as React from \"react\"; // eslint-disable-line\r\nimport useNotifications, { initializeCenterToggle } from \"../../hooks/useNotifications\";\r\nimport { useEffect, useState } from \"react\";\r\nimport BellIcon from \"../shared/BellIcon\";\r\n\r\n/**\r\n * This control is responsible for the toggling of the notifcations drawer.\r\n *\r\n * @param {string} [className] - An optional CSS className to append.\r\n */\r\nexport const NotificationControl: React.FunctionComponent<{ className?: string }> = ({ className, children }) => {\r\n\tconst { toggleCenter } = initializeCenterToggle();\r\n\tconst { notifications, activeNotifications } = useNotifications({\r\n\t\tconfig: {\r\n\t\t\t// Get notification sent in previous session\r\n\t\t\tnotificationsHistory: true,\r\n\t\t},\r\n\t});\r\n\tconst [count, setCount] = useState(activeNotifications(notifications).length);\r\n\tconst [showDotIcon, setShowDotIcon] = useState(true);\r\n\tconst [showDotForMuted, setShowDotForMuted] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function getNotificationsPreferences() {\r\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\r\n\t\t}\r\n\r\n\t\tgetNotificationsPreferences().then((preferences: any) => {\r\n\t\t\tsetShowDotIcon(!preferences.disableDotOnToolbarIcon);\r\n\t\t\tsetShowDotForMuted(preferences.showDotOnToolbarIconForMutedNotifications);\r\n\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tasync function computeDotIcon(error: any, response: any) {\r\n\t\t\tif (error) {\r\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\r\n\t\t\t} else {\r\n\t\t\t\tconst { data } = response;\r\n\t\t\t\tif (data?.notificationPreferences?.hasOwnProperty(\"disableDotOnToolbarIcon\")) {\r\n\t\t\t\t\tsetShowDotIcon(!data.notificationPreferences.disableDotOnToolbarIcon);\r\n\t\t\t\t}\r\n\t\t\t\tif (data?.notificationPreferences?.hasOwnProperty(\"showDotOnToolbarIconForMutedNotifications\")) {\r\n\t\t\t\t\tsetShowDotForMuted(data.notificationPreferences.showDotOnToolbarIconForMutedNotifications);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", computeDotIcon);\r\n\r\n\t\treturn () => {\r\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", computeDotIcon);\r\n\t\t};\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tlet applyMuteFilterOverride = !showDotForMuted;\r\n\t\tsetCount(activeNotifications(notifications, applyMuteFilterOverride).length);\r\n\t}, [notifications]);\r\n\r\n\tconst wrapperClasses = `finsemble-toolbar-button icon-only ${className || \"\"}`.trim();\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={wrapperClasses}\r\n\t\t\ttitle=\"Notification Control\"\r\n\t\t\tonClick={toggleCenter}\r\n\t\t\ttabIndex={0}\r\n\t\t\trole=\"button\"\r\n\t\t\tonKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\r\n\t\t\t\tif ([\"Enter\", \"Space\"].includes(e.key)) {\r\n\t\t\t\t\ttoggleCenter();\r\n\t\t\t\t}\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{showDotIcon && count > 0 && <div className=\"notification-alert-dot\" />}\r\n\t\t\t{children || <BellIcon />}\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"NotificationControl.js","sourceRoot":"","sources":["../../../src/components/toolbar/NotificationControl.tsx"],"names":[],"mappings":"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","sourcesContent":["// disable eslint below because the svg in the icon definition will error if React is not imported\nimport * as React from \"react\"; // eslint-disable-line\nimport useNotifications, { initializeCenterToggle } from \"../../hooks/useNotifications\";\nimport { useEffect, useState } from \"react\";\nimport BellIcon from \"../shared/BellIcon\";\n\n/**\n * This control is responsible for the toggling of the notifcations drawer.\n *\n * @param {string} [className] - An optional CSS className to append.\n */\nexport const NotificationControl: React.FunctionComponent<{ className?: string }> = ({ className, children }) => {\n\tconst { toggleCenter } = initializeCenterToggle();\n\tconst { notifications, activeNotifications } = useNotifications({\n\t\tconfig: {\n\t\t\t// Get notification sent in previous session\n\t\t\tnotificationsHistory: true,\n\t\t},\n\t});\n\tconst [count, setCount] = useState(activeNotifications(notifications).length);\n\tconst [showDotIcon, setShowDotIcon] = useState(true);\n\tconst [showDotForMuted, setShowDotForMuted] = useState(false);\n\n\tuseEffect(() => {\n\t\tasync function getNotificationsPreferences() {\n\t\t\treturn await FSBL.Clients.NotificationClient.getPreferences();\n\t\t}\n\n\t\tgetNotificationsPreferences().then((preferences: any) => {\n\t\t\tsetShowDotIcon(!preferences.disableDotOnToolbarIcon);\n\t\t\tsetShowDotForMuted(preferences.showDotOnToolbarIconForMutedNotifications);\n\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tasync function computeDotIcon(error: any, response: any) {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(\"FinsembleUserPreferencesChannel: \", error);\n\t\t\t} else {\n\t\t\t\tconst { data } = response;\n\t\t\t\tif (data?.notificationPreferences?.hasOwnProperty(\"disableDotOnToolbarIcon\")) {\n\t\t\t\t\tsetShowDotIcon(!data.notificationPreferences.disableDotOnToolbarIcon);\n\t\t\t\t}\n\t\t\t\tif (data?.notificationPreferences?.hasOwnProperty(\"showDotOnToolbarIconForMutedNotifications\")) {\n\t\t\t\t\tsetShowDotForMuted(data.notificationPreferences.showDotOnToolbarIconForMutedNotifications);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tFSBL.Clients.RouterClient.addListener(\"FinsembleUserPreferencesChannel\", computeDotIcon);\n\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"FinsembleUserPreferencesChannel\", computeDotIcon);\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tlet applyMuteFilterOverride = !showDotForMuted;\n\t\tsetCount(activeNotifications(notifications, applyMuteFilterOverride).length);\n\t}, [notifications]);\n\n\tconst wrapperClasses = `finsemble-toolbar-button icon-only ${className || \"\"}`.trim();\n\treturn (\n\t\t<div\n\t\t\tclassName={wrapperClasses}\n\t\t\ttitle=\"Notification Control\"\n\t\t\tonClick={toggleCenter}\n\t\t\ttabIndex={0}\n\t\t\trole=\"button\"\n\t\t\tonKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\t\tif ([\"Enter\", \"Space\"].includes(e.key)) {\n\t\t\t\t\ttoggleCenter();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t{showDotIcon && count > 0 && <div className=\"notification-alert-dot\" />}\n\t\t\t{children || <BellIcon />}\n\t\t</div>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RevealAll.js","sourceRoot":"","sources":["../../../src/components/toolbar/RevealAll.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC3B,6BAAK,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,4BAA4B;IACnG,2BAAG,EAAE,EAAC,SAAS,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;QAC3E,2BAAG,EAAE,EAAC,sBAAsB,EAAC,SAAS,EAAC,iCAAiC;YACvE,2BAAG,EAAE,EAAC,UAAU,EAAC,SAAS,EAAC,+BAA+B;gBACzD,8BACC,CAAC,EAAC,2NAA2N,EAC7N,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,+MAA+M,EACjN,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,8LAA8L,EAChM,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,0MAA0M,EAC5M,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,mMAAmM,EACrM,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP,CACL,CACD,CACD,CACC,CACN,CAAC;AAMF,MAAM,CAAC,MAAM,SAAS,GAAoD,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrG,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,sCAAsC,SAAS,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAEvF,OAAO,CACN,6BACC,SAAS,EAAE,cAAc,EACzB,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,CAAsC,EAAE,EAAE;YACrD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvC,gBAAgB,EAAE,CAAC;aACnB;QACF,CAAC,IAEA,QAAQ,IAAI,oBAAC,aAAa,OAAG,CACzB,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["// disable eslint below because the svg in the icon definition will error if React is not imported\r\nimport * as React from \"react\"; // eslint-disable-line\r\nimport { useToolbar } from \"../../hooks/useToolbar\";\r\n\r\n// The default icon for RevealAll.\r\nconst RevealAllIcon = () => (\r\n\t<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n\t\t<g id=\"Symbols\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\r\n\t\t\t<g id=\"atoms/icons/to-front\" transform=\"translate(-9.000000, -9.000000)\">\r\n\t\t\t\t<g id=\"To-Front\" transform=\"translate(9.000000, 9.000000)\">\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M7,5.5 L7,5 L6,5 L6,1 L1,1 L1,6 L5,6 L5,7 L6,7 L1,7 C0.44771525,7 6.76353751e-17,6.55228475 0,6 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L6,0 C6.55228475,-1.01453063e-16 7,0.44771525 7,1 L7,5.5 Z\"\r\n\t\t\t\t\t\tid=\"Combined-Shape\"\r\n\t\t\t\t\t\tfill=\"#8E939F\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M10.5,7 L11,7 L11,6 L15,6 L15,1 L10,1 L10,4 L9,4 L9,5 L9,1 C9,0.44771525 9.44771525,1.01453063e-16 10,0 L15,0 C15.5522847,-1.01453063e-16 16,0.44771525 16,1 L16,6 C16,6.55228475 15.5522847,7 15,7 L10.5,7 Z\"\r\n\t\t\t\t\t\tid=\"Combined-Shape\"\r\n\t\t\t\t\t\tfill=\"#8E939F\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M10,9 L15,9 C15.5522847,9 16,9.44771525 16,10 L16,15 C16,15.5522847 15.5522847,16 15,16 L10,16 C9.44771525,16 9,15.5522847 9,15 L9,11 L9,12 L10,12 L10,15 L15,15 L15,10 L11,10 L11,9 L10,9 Z\"\r\n\t\t\t\t\t\tid=\"Combined-Shape\"\r\n\t\t\t\t\t\tfill=\"#8E939F\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M6,9 L5,9 L5,10 L1,10 L1,15 L6,15 L6,11 L7,11 L7,10 L7,15 C7,15.5522847 6.55228475,16 6,16 L1,16 C0.44771525,16 6.76353751e-17,15.5522847 0,15 L0,10 C-6.76353751e-17,9.44771525 0.44771525,9 1,9 L6,9 Z\"\r\n\t\t\t\t\t\tid=\"Combined-Shape\"\r\n\t\t\t\t\t\tfill=\"#8E939F\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M5,4 L11,4 C11.5522847,4 12,4.44771525 12,5 L12,11 C12,11.5522847 11.5522847,12 11,12 L5,12 C4.44771525,12 4,11.5522847 4,11 L4,5 C4,4.44771525 4.44771525,4 5,4 Z M5,5 L5,11 L11,11 L11,5 L5,5 Z\"\r\n\t\t\t\t\t\tid=\"Combined-Shape\"\r\n\t\t\t\t\t\tfill=\"#FFFFFF\"\r\n\t\t\t\t\t></path>\r\n\t\t\t\t</g>\r\n\t\t\t</g>\r\n\t\t</g>\r\n\t</svg>\r\n);\r\n\r\n/**\r\n * A button that reveals (brings to front but does not unminimize) all Finsemble windows.\r\n * @param {string} [className] - An optional CSS className to append.\r\n */\r\nexport const RevealAll: React.FunctionComponent<{ className?: string }> = ({ className, children }) => {\r\n\tconst { revealAllWindows } = useToolbar();\r\n\tconst wrapperClasses = `finsemble-toolbar-button icon-only ${className || \"\"} `.trim();\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={wrapperClasses}\r\n\t\t\ttitle=\"Reveal All\"\r\n\t\t\tonClick={revealAllWindows}\r\n\t\t\ttabIndex={0}\r\n\t\t\trole=\"button\"\r\n\t\t\tonKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\r\n\t\t\t\tif ([\"Enter\", \"Space\"].includes(e.key)) {\r\n\t\t\t\t\trevealAllWindows();\r\n\t\t\t\t}\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{children || <RevealAllIcon />}\r\n\t\t</div>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"RevealAll.js","sourceRoot":"","sources":["../../../src/components/toolbar/RevealAll.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC3B,6BAAK,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,KAAK,EAAC,KAAK,EAAC,4BAA4B;IACnG,2BAAG,EAAE,EAAC,SAAS,EAAC,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS;QAC3E,2BAAG,EAAE,EAAC,sBAAsB,EAAC,SAAS,EAAC,iCAAiC;YACvE,2BAAG,EAAE,EAAC,UAAU,EAAC,SAAS,EAAC,+BAA+B;gBACzD,8BACC,CAAC,EAAC,2NAA2N,EAC7N,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,+MAA+M,EACjN,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,8LAA8L,EAChM,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,0MAA0M,EAC5M,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP;gBACR,8BACC,CAAC,EAAC,mMAAmM,EACrM,EAAE,EAAC,gBAAgB,EACnB,IAAI,EAAC,SAAS,GACP,CACL,CACD,CACD,CACC,CACN,CAAC;AAMF,MAAM,CAAC,MAAM,SAAS,GAAoD,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrG,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,sCAAsC,SAAS,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAEvF,OAAO,CACN,6BACC,SAAS,EAAE,cAAc,EACzB,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,CAAsC,EAAE,EAAE;YACrD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvC,gBAAgB,EAAE,CAAC;aACnB;QACF,CAAC,IAEA,QAAQ,IAAI,oBAAC,aAAa,OAAG,CACzB,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["// disable eslint below because the svg in the icon definition will error if React is not imported\nimport * as React from \"react\"; // eslint-disable-line\nimport { useToolbar } from \"../../hooks/useToolbar\";\n\n// The default icon for RevealAll.\nconst RevealAllIcon = () => (\n\t<svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<g id=\"Symbols\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n\t\t\t<g id=\"atoms/icons/to-front\" transform=\"translate(-9.000000, -9.000000)\">\n\t\t\t\t<g id=\"To-Front\" transform=\"translate(9.000000, 9.000000)\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M7,5.5 L7,5 L6,5 L6,1 L1,1 L1,6 L5,6 L5,7 L6,7 L1,7 C0.44771525,7 6.76353751e-17,6.55228475 0,6 L0,1 C-6.76353751e-17,0.44771525 0.44771525,1.01453063e-16 1,0 L6,0 C6.55228475,-1.01453063e-16 7,0.44771525 7,1 L7,5.5 Z\"\n\t\t\t\t\t\tid=\"Combined-Shape\"\n\t\t\t\t\t\tfill=\"#8E939F\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10.5,7 L11,7 L11,6 L15,6 L15,1 L10,1 L10,4 L9,4 L9,5 L9,1 C9,0.44771525 9.44771525,1.01453063e-16 10,0 L15,0 C15.5522847,-1.01453063e-16 16,0.44771525 16,1 L16,6 C16,6.55228475 15.5522847,7 15,7 L10.5,7 Z\"\n\t\t\t\t\t\tid=\"Combined-Shape\"\n\t\t\t\t\t\tfill=\"#8E939F\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10,9 L15,9 C15.5522847,9 16,9.44771525 16,10 L16,15 C16,15.5522847 15.5522847,16 15,16 L10,16 C9.44771525,16 9,15.5522847 9,15 L9,11 L9,12 L10,12 L10,15 L15,15 L15,10 L11,10 L11,9 L10,9 Z\"\n\t\t\t\t\t\tid=\"Combined-Shape\"\n\t\t\t\t\t\tfill=\"#8E939F\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M6,9 L5,9 L5,10 L1,10 L1,15 L6,15 L6,11 L7,11 L7,10 L7,15 C7,15.5522847 6.55228475,16 6,16 L1,16 C0.44771525,16 6.76353751e-17,15.5522847 0,15 L0,10 C-6.76353751e-17,9.44771525 0.44771525,9 1,9 L6,9 Z\"\n\t\t\t\t\t\tid=\"Combined-Shape\"\n\t\t\t\t\t\tfill=\"#8E939F\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M5,4 L11,4 C11.5522847,4 12,4.44771525 12,5 L12,11 C12,11.5522847 11.5522847,12 11,12 L5,12 C4.44771525,12 4,11.5522847 4,11 L4,5 C4,4.44771525 4.44771525,4 5,4 Z M5,5 L5,11 L11,11 L11,5 L5,5 Z\"\n\t\t\t\t\t\tid=\"Combined-Shape\"\n\t\t\t\t\t\tfill=\"#FFFFFF\"\n\t\t\t\t\t></path>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</g>\n\t</svg>\n);\n\n/**\n * A button that reveals (brings to front but does not unminimize) all Finsemble windows.\n * @param {string} [className] - An optional CSS className to append.\n */\nexport const RevealAll: React.FunctionComponent<{ className?: string }> = ({ className, children }) => {\n\tconst { revealAllWindows } = useToolbar();\n\tconst wrapperClasses = `finsemble-toolbar-button icon-only ${className || \"\"} `.trim();\n\n\treturn (\n\t\t<div\n\t\t\tclassName={wrapperClasses}\n\t\t\ttitle=\"Reveal All\"\n\t\t\tonClick={revealAllWindows}\n\t\t\ttabIndex={0}\n\t\t\trole=\"button\"\n\t\t\tonKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\t\tif ([\"Enter\", \"Space\"].includes(e.key)) {\n\t\t\t\t\trevealAllWindows();\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t{children || <RevealAllIcon />}\n\t\t</div>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RevealAll.spec.js","sourceRoot":"","sources":["../../../src/components/toolbar/RevealAll.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\r\nimport { mount } from \"enzyme\";\r\nimport { describe, it } from \"mocha\";\r\nimport { expect } from \"chai\";\r\nimport sinon from \"sinon\";\r\nimport { Basic } from \"./RevealAll.stories\";\r\n\r\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\r\nimport addons, { mockChannel } from \"@storybook/addons\";\r\naddons.setChannel(mockChannel());\r\n\r\ndescribe(\"<RevealAll/>\", () => {\r\n\tafterEach(() => {\r\n\t\tsinon.restore();\r\n\t});\r\n\tit(\"should display icon\", () => {\r\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\r\n\t\texpect(wrapper.find(\"svg\").exists()).to.be.true;\r\n\t});\r\n\tit(\"should call reveal action when clicked\", () => {\r\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\r\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\r\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"click\");\r\n\t\texpect(buttonSpy.calledOnce).to.be.true;\r\n\t});\r\n\tit(\"should call reveal action when user presses Enter\", () => {\r\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\r\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\r\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"keydown\", {\r\n\t\t\tkey: \"Enter\",\r\n\t\t});\r\n\t\texpect(buttonSpy.calledOnce).to.be.true;\r\n\t});\r\n\tit(\"should call reveal action when user presses Space\", () => {\r\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\r\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\r\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"keydown\", {\r\n\t\t\tkey: \"Space\",\r\n\t\t});\r\n\t\texpect(buttonSpy.calledOnce).to.be.true;\r\n\t});\r\n\tit(\"should not call reveal action when user presses a character other than Enter or Space\", () => {\r\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\r\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\r\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"keydown\", {\r\n\t\t\tkey: \"a\",\r\n\t\t});\r\n\t\texpect(buttonSpy.calledOnce).to.be.false;\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"RevealAll.spec.js","sourceRoot":"","sources":["../../../src/components/toolbar/RevealAll.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { Basic } from \"./RevealAll.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<RevealAll/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\tit(\"should display icon\", () => {\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\n\t\texpect(wrapper.find(\"svg\").exists()).to.be.true;\n\t});\n\tit(\"should call reveal action when clicked\", () => {\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"click\");\n\t\texpect(buttonSpy.calledOnce).to.be.true;\n\t});\n\tit(\"should call reveal action when user presses Enter\", () => {\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"keydown\", {\n\t\t\tkey: \"Enter\",\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.true;\n\t});\n\tit(\"should call reveal action when user presses Space\", () => {\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"keydown\", {\n\t\t\tkey: \"Space\",\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.true;\n\t});\n\tit(\"should not call reveal action when user presses a character other than Enter or Space\", () => {\n\t\tconst buttonSpy = sinon.spy(Basic.args as any, \"action\");\n\t\tconst wrapper = mount(<Basic {...Basic.args} />);\n\t\twrapper.find(\".finsemble-toolbar-button\").first().simulate(\"keydown\", {\n\t\t\tkey: \"a\",\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.false;\n\t});\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RevealAll.stories.js","sourceRoot":"","sources":["../../../src/components/toolbar/RevealAll.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,gCAAgC,CAAC;AAExC,eAAe;IACd,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,QAAQ,GAAe,CAAC,IAAS,EAAE,EAAE;IAC1C,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGjB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAE/D,OAAO,CACN,oBAAC,iBAAiB;QACjB,oBAAC,SAAS,OAAG,CACM,CACpB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,CAAC,IAAI,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC;CAChC,CAAC","sourcesContent":["import React from \"react\";\r\nimport { RevealAll } from \"./RevealAll\";\r\nimport { Story } from \"@storybook/react/types-6-0\";\r\nimport { initFSBL } from \"../common/helpers\";\r\nimport { FinsembleProvider } from \"../FinsembleProvider\";\r\nimport { action } from \"@storybook/addon-actions\";\r\nimport \"../../assets/css/favorites.css\";\r\n\r\nexport default {\r\n\ttitle: \"Toolbar/RevealAll\",\r\n\tcomponent: RevealAll,\r\n};\r\n\r\nconst Template: Story<any> = (args: any) => {\r\n\tinitFSBL(window);\r\n\r\n\t// Overwrite mockup for testing purposes\r\n\tFSBL.Clients.WorkspaceClient.bringWindowsToFront = args.action;\r\n\r\n\treturn (\r\n\t\t<FinsembleProvider>\r\n\t\t\t<RevealAll />\r\n\t\t</FinsembleProvider>\r\n\t);\r\n};\r\n\r\nexport const Basic = Template.bind({});\r\nBasic.args = {\r\n\taction: action(\"bring to front\"),\r\n};\r\n"]}
1
+ {"version":3,"file":"RevealAll.stories.js","sourceRoot":"","sources":["../../../src/components/toolbar/RevealAll.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,gCAAgC,CAAC;AAExC,eAAe;IACd,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,QAAQ,GAAe,CAAC,IAAS,EAAE,EAAE;IAC1C,QAAQ,CAAC,MAAM,CAAC,CAAC;IAGjB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAE/D,OAAO,CACN,oBAAC,iBAAiB;QACjB,oBAAC,SAAS,OAAG,CACM,CACpB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,CAAC,IAAI,GAAG;IACZ,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC;CAChC,CAAC","sourcesContent":["import React from \"react\";\nimport { RevealAll } from \"./RevealAll\";\nimport { Story } from \"@storybook/react/types-6-0\";\nimport { initFSBL } from \"../common/helpers\";\nimport { FinsembleProvider } from \"../FinsembleProvider\";\nimport { action } from \"@storybook/addon-actions\";\nimport \"../../assets/css/favorites.css\";\n\nexport default {\n\ttitle: \"Toolbar/RevealAll\",\n\tcomponent: RevealAll,\n};\n\nconst Template: Story<any> = (args: any) => {\n\tinitFSBL(window);\n\n\t// Overwrite mockup for testing purposes\n\tFSBL.Clients.WorkspaceClient.bringWindowsToFront = args.action;\n\n\treturn (\n\t\t<FinsembleProvider>\n\t\t\t<RevealAll />\n\t\t</FinsembleProvider>\n\t);\n};\n\nexport const Basic = Template.bind({});\nBasic.args = {\n\taction: action(\"bring to front\"),\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarIcon.js","sourceRoot":"","sources":["../../../src/components/toolbar/ToolbarIcon.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM5C,MAAM,CAAC,MAAM,WAAW,GAAiC,CAAC,EAA2B,EAAO,EAAE;QAApC,EAAE,GAAG,EAAE,QAAQ,OAAY,EAAP,KAAK,cAAzB,mBAA2B,CAAF;IAClF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;QACxF,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;QAC5F,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,CACN,2CAAK,GAAG,EAAE,SAAS,IAAM,KAAK,GAC5B,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\n\r\n/**\r\n * Returns an image that will reload itself based on messages on the \"Finsemble-ui-change.toolbarIconUpdate\" topic. This\r\n * is useful for dynamic theming. Otherwise this behaves just like an <img> tag.\r\n */\r\nexport const ToolbarIcon: React.FunctionComponent<any> = ({ src, children, ...other }): any => {\r\n\tconst [uniqueSrc, setSrc] = useState(src);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst handler = () => {\r\n\t\t\tsetSrc(`${src}?${Date.now()}`);\r\n\t\t};\r\n\t\tFSBL.Clients.RouterClient.addListener(\"Finsemble-ui-change.toolbarIconUpdate\", handler);\r\n\t\treturn () => {\r\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"Finsemble-ui-change.toolbarIconUpdate\", handler);\r\n\t\t};\r\n\t}, [src]);\r\n\r\n\treturn (\r\n\t\t<img src={uniqueSrc} {...other}>\r\n\t\t\t{children}\r\n\t\t</img>\r\n\t);\r\n};\r\n"]}
1
+ {"version":3,"file":"ToolbarIcon.js","sourceRoot":"","sources":["../../../src/components/toolbar/ToolbarIcon.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM5C,MAAM,CAAC,MAAM,WAAW,GAAiC,CAAC,EAA2B,EAAO,EAAE;QAApC,EAAE,GAAG,EAAE,QAAQ,OAAY,EAAP,KAAK,cAAzB,mBAA2B,CAAF;IAClF,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;QACxF,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;QAC5F,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,CACN,2CAAK,GAAG,EAAE,SAAS,IAAM,KAAK,GAC5B,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\n/**\n * Returns an image that will reload itself based on messages on the \"Finsemble-ui-change.toolbarIconUpdate\" topic. This\n * is useful for dynamic theming. Otherwise this behaves just like an <img> tag.\n */\nexport const ToolbarIcon: React.FunctionComponent<any> = ({ src, children, ...other }): any => {\n\tconst [uniqueSrc, setSrc] = useState(src);\n\n\tuseEffect(() => {\n\t\tconst handler = () => {\n\t\t\tsetSrc(`${src}?${Date.now()}`);\n\t\t};\n\t\tFSBL.Clients.RouterClient.addListener(\"Finsemble-ui-change.toolbarIconUpdate\", handler);\n\t\treturn () => {\n\t\t\tFSBL.Clients.RouterClient.removeListener(\"Finsemble-ui-change.toolbarIconUpdate\", handler);\n\t\t};\n\t}, [src]);\n\n\treturn (\n\t\t<img src={uniqueSrc} {...other}>\n\t\t\t{children}\n\t\t</img>\n\t);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarSection.js","sourceRoot":"","sources":["../../../src/components/toolbar/ToolbarSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AAejD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAS,EAAE,EAAE;IAC5F,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,SAAS,EAAkB,CAAC;IAK/C,MAAM,QAAQ,GAAG,CAAC,OAA8B,EAAE,EAAE;QACnD,IAAI,OAAO,CAAC,MAAM,EAAE;YAEnB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAa,CAAC;YAIjD,IAAI,WAAW,IAAI,cAAc,EAAE;gBAClC,eAAe,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;aAC9C;SACD;IACF,CAAC,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,UAAU,CAAC,OAAO,EAAE;YACvB,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACzD;QACD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CACN,6BAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,6BAA6B,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,IAGrF,YAAY,IAAI,QAAQ,CAEpB,CACN,CAAC;AACH,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,GAAG;IAC1B,cAAc,EAAE,SAAS,CAAC,MAAM;IAChC,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,KAAK,EAAE,SAAS,CAAC,MAAM;CACvB,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport * as PropTypes from \"prop-types\";\r\n\r\nconst { useState, useEffect, createRef } = React;\r\n\r\ntype props = {\r\n\thideBelowWidth?: number;\r\n\tclassName?: string;\r\n\tstyle?: React.CSSProperties;\r\n\tchildren?: React.ReactNode;\r\n};\r\n/**\r\n * A container element for defining sections in a toolbar.\r\n * This component exists because css flex-box does provide \"hideBelowWidth\" functionality.\r\n * @param {number} [hideBelowWidth] - Below this width the component will hide itself\r\n * @param {string} [className] - The className for a customized look of the toolbar section\r\n * @param {string} [style] - The CSS style for a customized look of the toolbar section\r\n */\r\nexport const ToolbarSection = ({ children, hideBelowWidth, className, style = {} }: props) => {\r\n\tconst [shouldRender, setShouldRender] = useState(true);\r\n\t// We will use this to access the section element.\r\n\tconst wrapperRef = createRef<HTMLDivElement>();\r\n\t/**\r\n\t * This is called by ResizerObserver whenever the size of\r\n\t * the section changes due to toolbar shrinkage.\r\n\t */\r\n\tconst onResize = (entries: ResizeObserverEntry[]) => {\r\n\t\tif (entries.length) {\r\n\t\t\t// Get the calculated width\r\n\t\t\tconst { offsetWidth } = entries[0].target as any;\r\n\t\t\t// If the developer specified a minimum width (hideBelowWidth)\r\n\t\t\t// and the section width is greater than the minimum\r\n\t\t\t// we should render all children by setting shouldRender to true.\r\n\t\t\tif (offsetWidth && hideBelowWidth) {\r\n\t\t\t\tsetShouldRender(offsetWidth > hideBelowWidth);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tuseEffect(() => {\r\n\t\tif (wrapperRef.current) {\r\n\t\t\tnew ResizeObserver(onResize).observe(wrapperRef.current);\r\n\t\t}\r\n\t\treturn () => {};\r\n\t}, []);\r\n\treturn (\r\n\t\t<div ref={wrapperRef} className={`finsemble-toolbar-section ${className}`} style={style}>\r\n\t\t\t{\r\n\t\t\t\t// Render children if shouldRender is true\r\n\t\t\t\tshouldRender && children\r\n\t\t\t}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nToolbarSection.propTypes = {\r\n\thideBelowWidth: PropTypes.number,\r\n\tclassName: PropTypes.string,\r\n\tstyle: PropTypes.object,\r\n};\r\n"]}
1
+ {"version":3,"file":"ToolbarSection.js","sourceRoot":"","sources":["../../../src/components/toolbar/ToolbarSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;AAejD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAS,EAAE,EAAE;IAC5F,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,SAAS,EAAkB,CAAC;IAK/C,MAAM,QAAQ,GAAG,CAAC,OAA8B,EAAE,EAAE;QACnD,IAAI,OAAO,CAAC,MAAM,EAAE;YAEnB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAa,CAAC;YAIjD,IAAI,WAAW,IAAI,cAAc,EAAE;gBAClC,eAAe,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;aAC9C;SACD;IACF,CAAC,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,UAAU,CAAC,OAAO,EAAE;YACvB,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACzD;QACD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CACN,6BAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,6BAA6B,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,IAGrF,YAAY,IAAI,QAAQ,CAEpB,CACN,CAAC;AACH,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,GAAG;IAC1B,cAAc,EAAE,SAAS,CAAC,MAAM;IAChC,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,KAAK,EAAE,SAAS,CAAC,MAAM;CACvB,CAAC","sourcesContent":["import * as React from \"react\";\nimport * as PropTypes from \"prop-types\";\n\nconst { useState, useEffect, createRef } = React;\n\ntype props = {\n\thideBelowWidth?: number;\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\tchildren?: React.ReactNode;\n};\n/**\n * A container element for defining sections in a toolbar.\n * This component exists because css flex-box does provide \"hideBelowWidth\" functionality.\n * @param {number} [hideBelowWidth] - Below this width the component will hide itself\n * @param {string} [className] - The className for a customized look of the toolbar section\n * @param {string} [style] - The CSS style for a customized look of the toolbar section\n */\nexport const ToolbarSection = ({ children, hideBelowWidth, className, style = {} }: props) => {\n\tconst [shouldRender, setShouldRender] = useState(true);\n\t// We will use this to access the section element.\n\tconst wrapperRef = createRef<HTMLDivElement>();\n\t/**\n\t * This is called by ResizerObserver whenever the size of\n\t * the section changes due to toolbar shrinkage.\n\t */\n\tconst onResize = (entries: ResizeObserverEntry[]) => {\n\t\tif (entries.length) {\n\t\t\t// Get the calculated width\n\t\t\tconst { offsetWidth } = entries[0].target as any;\n\t\t\t// If the developer specified a minimum width (hideBelowWidth)\n\t\t\t// and the section width is greater than the minimum\n\t\t\t// we should render all children by setting shouldRender to true.\n\t\t\tif (offsetWidth && hideBelowWidth) {\n\t\t\t\tsetShouldRender(offsetWidth > hideBelowWidth);\n\t\t\t}\n\t\t}\n\t};\n\tuseEffect(() => {\n\t\tif (wrapperRef.current) {\n\t\t\tnew ResizeObserver(onResize).observe(wrapperRef.current);\n\t\t}\n\t\treturn () => {};\n\t}, []);\n\treturn (\n\t\t<div ref={wrapperRef} className={`finsemble-toolbar-section ${className}`} style={style}>\n\t\t\t{\n\t\t\t\t// Render children if shouldRender is true\n\t\t\t\tshouldRender && children\n\t\t\t}\n\t\t</div>\n\t);\n};\n\nToolbarSection.propTypes = {\n\thideBelowWidth: PropTypes.number,\n\tclassName: PropTypes.string,\n\tstyle: PropTypes.object,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarShell.js","sourceRoot":"","sources":["../../../src/components/toolbar/ToolbarShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,8BAA8B,CAAC;AAEtC,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAGrD,IAAI,aAAa,EAAE,CAAC;AAYpB,MAAM,CAAC,MAAM,YAAY,GAA+C,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IAChH,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAEnC,OAAO,6BAAK,SAAS,EAAC,mBAAmB,IAAE,QAAQ,CAAO,CAAC;AAC5D,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { HotkeyCombination } from \"../../types/hotkeyTypes\";\r\nimport { useToolbar } from \"../../hooks/useToolbar\";\r\nimport { useHotkey } from \"../../hooks/useHotkey\";\r\nimport \"../../assets/css/toolbar.css\";\r\n\r\nimport FloatingFocus from \"@q42/floating-focus-a11y\";\r\n// The package FloatingFocus injects a focus indicator that moves around the page, but only for\r\n// keyboard users. (Mouse users don't see the indicator.) All that needs to be done is to envoke it.\r\nnew FloatingFocus();\r\n// If you want to make changes to the indicator, the styles are being maintained in assets/css/focus.css\r\n\r\ntype ToolbarShellProps = {\r\n\thotkeyShow?: HotkeyCombination;\r\n\thotkeyHide?: HotkeyCombination;\r\n};\r\n/**\r\n * The ToolbarShell registers hotkeys, communicates with Finsemble core, sets up the toolbar size, and provides other functions of the Finsemble toolbar.\r\n * @param hotkeyShow [array<string>] - A hotkey combination to show the toolbar\r\n * @param hotkeyHide [array<string>] - A hotkey combination to hide the toolbar\r\n */\r\nexport const ToolbarShell: React.FunctionComponent<ToolbarShellProps> = ({ hotkeyShow, hotkeyHide, children }) => {\r\n\tconst { hideToolbar, showToolbar } = useToolbar();\r\n\tuseHotkey(hotkeyShow, showToolbar);\r\n\tuseHotkey(hotkeyHide, hideToolbar);\r\n\r\n\treturn <div className=\"finsemble-toolbar\">{children}</div>;\r\n};\r\n"]}
1
+ {"version":3,"file":"ToolbarShell.js","sourceRoot":"","sources":["../../../src/components/toolbar/ToolbarShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,8BAA8B,CAAC;AAEtC,OAAO,aAAa,MAAM,0BAA0B,CAAC;AAGrD,IAAI,aAAa,EAAE,CAAC;AAYpB,MAAM,CAAC,MAAM,YAAY,GAA+C,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IAChH,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAEnC,OAAO,6BAAK,SAAS,EAAC,mBAAmB,IAAE,QAAQ,CAAO,CAAC;AAC5D,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { HotkeyCombination } from \"../../types/hotkeyTypes\";\nimport { useToolbar } from \"../../hooks/useToolbar\";\nimport { useHotkey } from \"../../hooks/useHotkey\";\nimport \"../../assets/css/toolbar.css\";\n\nimport FloatingFocus from \"@q42/floating-focus-a11y\";\n// The package FloatingFocus injects a focus indicator that moves around the page, but only for\n// keyboard users. (Mouse users don't see the indicator.) All that needs to be done is to envoke it.\nnew FloatingFocus();\n// If you want to make changes to the indicator, the styles are being maintained in assets/css/focus.css\n\ntype ToolbarShellProps = {\n\thotkeyShow?: HotkeyCombination;\n\thotkeyHide?: HotkeyCombination;\n};\n/**\n * The ToolbarShell registers hotkeys, communicates with Finsemble core, sets up the toolbar size, and provides other functions of the Finsemble toolbar.\n * @param hotkeyShow [array<string>] - A hotkey combination to show the toolbar\n * @param hotkeyHide [array<string>] - A hotkey combination to hide the toolbar\n */\nexport const ToolbarShell: React.FunctionComponent<ToolbarShellProps> = ({ hotkeyShow, hotkeyHide, children }) => {\n\tconst { hideToolbar, showToolbar } = useToolbar();\n\tuseHotkey(hotkeyShow, showToolbar);\n\tuseHotkey(hotkeyHide, hideToolbar);\n\n\treturn <div className=\"finsemble-toolbar\">{children}</div>;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import "../../../assets/css/advancedAppLauncher.css";
2
2
  import React from "react";
3
- import { StandardError } from "@finsemble/finsemble-core/types/types";
3
+ import { StandardError } from "@finsemble/finsemble-api/types/types";
4
4
  interface IProps {
5
5
  customURLValidation: ((url: string) => [boolean, string]) | null;
6
6
  customAddComponent: ((formData: any, callback: (error: any | null) => void) => void) | null;
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedAppLauncher.js","sourceRoot":"","sources":["../../../../src/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.tsx"],"names":[],"mappings":"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","sourcesContent":["import \"../../../assets/css/advancedAppLauncher.css\";\r\n// Import js modules\r\nimport React from \"react\";\r\nimport { createStore, getStore } from \"./stores/LauncherStore\";\r\nimport storeActions from \"./stores/StoreActions\";\r\n\r\n// Import React components\r\nimport Content from \"./components/Content\";\r\nimport AddNewAppForm from \"./components/AddNewAppForm\";\r\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\r\nimport FoldersList from \"./components/FoldersList\";\r\nimport LeftNavBottomLinks from \"./components/LeftNavBottomLinks\";\r\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\r\n\r\nlet advancedAppLauncherStore: StoreModel | undefined;\r\n\r\ninterface IProps {\r\n\tcustomURLValidation: ((url: string) => [boolean, string]) | null;\r\n\tcustomAddComponent: ((formData: any, callback: (error: any | null) => void) => void) | null;\r\n\tbeforeAddComponent: ((formData: any) => object) | null;\r\n\tenableQuickComponents: boolean;\r\n}\r\n\r\ninterface IState {\r\n\tisFormVisible: boolean;\r\n}\r\n/**\r\n * The \"app\" button that launches the Advanced App Launcher.\r\n * The Advanced App Launcher comes with search capabilities and allows users to organize their application components into folders.\r\n *\r\n * @param {boolean} [enableQuickComponents=false] DEPRECATED: Set to true to allow users to create their own components\r\n */\r\nexport class AdvancedAppLauncher extends React.Component<IProps, IState> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tisFormVisible: storeActions.getFormStatus(),\r\n\t\t};\r\n\t\tthis.toggleAddNewAppForm = this.toggleAddNewAppForm.bind(this);\r\n\t\tthis.openAppMarket = this.openAppMarket.bind(this);\r\n\t}\r\n\r\n\tUNSAFE_componentWillMount() {\r\n\t\tcreateStore((error: StandardError, store?: StoreModel) => {\r\n\t\t\tadvancedAppLauncherStore = store;\r\n\t\t\tstoreActions.initialize(() => {\r\n\t\t\t\tadvancedAppLauncherStore?.addListener({ field: \"isFormVisible\" }, this.toggleAddNewAppForm);\r\n\t\t\t\tthis.forceUpdate();\r\n\t\t\t});\r\n\t\t\t// Delete the search text from the store as searches should not persist over restart.\r\n\t\t\t// The deletion is done on startup as a shutdown listener wouldn't trigger on crashes\r\n\t\t\tstore?.setValue({\r\n\t\t\t\tfield: \"filterText\",\r\n\t\t\t\tvalue: \"\",\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tgetStore()?.removeListener({ field: \"isFormVisible\" }, this.toggleAddNewAppForm);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets isFormVisible to true or false in state\r\n\t * isFormVisible is used to conditionally show/hide the\r\n\t * add new component form.\r\n\t * @param {objec} error\r\n\t * @param {object} data\r\n\t */\r\n\ttoggleAddNewAppForm(error: StandardError, data: { value: any }) {\r\n\t\tthis.setState({\r\n\t\t\tisFormVisible: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets isFormVisible to false in store to remove the form\r\n\t */\r\n\tonAddNewAppFormAction() {\r\n\t\tgetStore()?.setValue(\r\n\t\t\t{\r\n\t\t\t\tfield: \"isFormVisible\",\r\n\t\t\t\tvalue: false,\r\n\t\t\t},\r\n\t\t\t(error: StandardError) => {\r\n\t\t\t\terror && console.log(\"Failed to set isFormVisible to false\");\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\topenAppMarket() {\r\n\t\tFSBL.Clients.LauncherClient.showWindow(\r\n\t\t\t{\r\n\t\t\t\tcomponentType: \"Advanced App Catalog\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tmonitor: \"mine\",\r\n\t\t\t\tstaggerPixels: 0,\r\n\t\t\t\tspawnIfNotFound: true,\r\n\t\t\t\tleft: \"center\",\r\n\t\t\t\ttop: \"center\",\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (!advancedAppLauncherStore) return null;\r\n\t\treturn (\r\n\t\t\t<div className=\"advanced-app-launcher\">\r\n\t\t\t\t<div className=\"complex-menu-wrapper\">\r\n\t\t\t\t\t<div className=\"complex-menu-left-nav\">\r\n\t\t\t\t\t\t<FoldersList />\r\n\t\t\t\t\t\t<LeftNavBottomLinks\r\n\t\t\t\t\t\t\topenAppMarket={this.openAppMarket}\r\n\t\t\t\t\t\t\tenableQuickComponents={this.props.enableQuickComponents}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<Content />\r\n\t\t\t\t\t{this.state.isFormVisible && (\r\n\t\t\t\t\t\t<AddNewAppForm\r\n\t\t\t\t\t\t\tonDone={this.onAddNewAppFormAction}\r\n\t\t\t\t\t\t\tcustomURLValidation={this.props.customURLValidation}\r\n\t\t\t\t\t\t\tcustomAddComponent={this.props.customAddComponent}\r\n\t\t\t\t\t\t\tbeforeAddComponent={this.props.beforeAddComponent}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"AdvancedAppLauncher.js","sourceRoot":"","sources":["../../../../src/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.tsx"],"names":[],"mappings":"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","sourcesContent":["import \"../../../assets/css/advancedAppLauncher.css\";\n// Import js modules\nimport React from \"react\";\nimport { createStore, getStore } from \"./stores/LauncherStore\";\nimport storeActions from \"./stores/StoreActions\";\n\n// Import React components\nimport Content from \"./components/Content\";\nimport AddNewAppForm from \"./components/AddNewAppForm\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport FoldersList from \"./components/FoldersList\";\nimport LeftNavBottomLinks from \"./components/LeftNavBottomLinks\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\n\nlet advancedAppLauncherStore: StoreModel | undefined;\n\ninterface IProps {\n\tcustomURLValidation: ((url: string) => [boolean, string]) | null;\n\tcustomAddComponent: ((formData: any, callback: (error: any | null) => void) => void) | null;\n\tbeforeAddComponent: ((formData: any) => object) | null;\n\tenableQuickComponents: boolean;\n}\n\ninterface IState {\n\tisFormVisible: boolean;\n}\n/**\n * The \"app\" button that launches the Advanced App Launcher.\n * The Advanced App Launcher comes with search capabilities and allows users to organize their application components into folders.\n *\n * @param {boolean} [enableQuickComponents=false] DEPRECATED: Set to true to allow users to create their own components\n */\nexport class AdvancedAppLauncher extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tisFormVisible: storeActions.getFormStatus(),\n\t\t};\n\t\tthis.toggleAddNewAppForm = this.toggleAddNewAppForm.bind(this);\n\t\tthis.openAppMarket = this.openAppMarket.bind(this);\n\t}\n\n\tUNSAFE_componentWillMount() {\n\t\tcreateStore((error: StandardError, store?: StoreModel) => {\n\t\t\tadvancedAppLauncherStore = store;\n\t\t\tstoreActions.initialize(() => {\n\t\t\t\tadvancedAppLauncherStore?.addListener({ field: \"isFormVisible\" }, this.toggleAddNewAppForm);\n\t\t\t\tthis.forceUpdate();\n\t\t\t});\n\t\t\t// Delete the search text from the store as searches should not persist over restart.\n\t\t\t// The deletion is done on startup as a shutdown listener wouldn't trigger on crashes\n\t\t\tstore?.setValue({\n\t\t\t\tfield: \"filterText\",\n\t\t\t\tvalue: \"\",\n\t\t\t});\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore()?.removeListener({ field: \"isFormVisible\" }, this.toggleAddNewAppForm);\n\t}\n\n\t/**\n\t * Sets isFormVisible to true or false in state\n\t * isFormVisible is used to conditionally show/hide the\n\t * add new component form.\n\t * @param {objec} error\n\t * @param {object} data\n\t */\n\ttoggleAddNewAppForm(error: StandardError, data: { value: any }) {\n\t\tthis.setState({\n\t\t\tisFormVisible: data.value,\n\t\t});\n\t}\n\n\t/**\n\t * Sets isFormVisible to false in store to remove the form\n\t */\n\tonAddNewAppFormAction() {\n\t\tgetStore()?.setValue(\n\t\t\t{\n\t\t\t\tfield: \"isFormVisible\",\n\t\t\t\tvalue: false,\n\t\t\t},\n\t\t\t(error: StandardError) => {\n\t\t\t\terror && console.log(\"Failed to set isFormVisible to false\");\n\t\t\t}\n\t\t);\n\t}\n\n\topenAppMarket() {\n\t\tFSBL.Clients.LauncherClient.showWindow(\n\t\t\t{\n\t\t\t\tcomponentType: \"Advanced App Catalog\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmonitor: \"mine\",\n\t\t\t\tstaggerPixels: 0,\n\t\t\t\tspawnIfNotFound: true,\n\t\t\t\tleft: \"center\",\n\t\t\t\ttop: \"center\",\n\t\t\t}\n\t\t);\n\t}\n\n\trender() {\n\t\tif (!advancedAppLauncherStore) return null;\n\t\treturn (\n\t\t\t<div className=\"advanced-app-launcher\">\n\t\t\t\t<div className=\"complex-menu-wrapper\">\n\t\t\t\t\t<div className=\"complex-menu-left-nav\">\n\t\t\t\t\t\t<FoldersList />\n\t\t\t\t\t\t<LeftNavBottomLinks\n\t\t\t\t\t\t\topenAppMarket={this.openAppMarket}\n\t\t\t\t\t\t\tenableQuickComponents={this.props.enableQuickComponents}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Content />\n\t\t\t\t\t{this.state.isFormVisible && (\n\t\t\t\t\t\t<AddNewAppForm\n\t\t\t\t\t\t\tonDone={this.onAddNewAppFormAction}\n\t\t\t\t\t\t\tcustomURLValidation={this.props.customURLValidation}\n\t\t\t\t\t\t\tcustomAddComponent={this.props.customAddComponent}\n\t\t\t\t\t\t\tbeforeAddComponent={this.props.beforeAddComponent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedAppLauncherMenu.js","sourceRoot":"","sources":["../../../../src/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAS5D,MAAM,uBAAuB,GAA0D,CAAC,EASvF,EAAE,EAAE;QATmF,EACvF,KAAK,GAAG,GAAG,EACX,SAAS,GAAG,qBAAqB,EACjC,EAAE,GAAG,yBAAyB,EAC9B,KAAK,GAAG,MAAM,EACd,mBAAmB,GAAG,IAAI,EAC1B,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,IAAI,OAEzB,EADG,UAAU,cAR0E,wGASvF,CADa;IAEb,MAAM,qBAAqB,GAAG;QAC7B,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;QAClB,qBAAqB,EAAE,KAAK;KAC5B,CAAC;IAEF,IAAI,aAAa,iDACb,UAAU,GACV,qBAAqB,KACxB,KAAK;QACL,SAAS;QACT,EAAE;QACF,KAAK,GACL,CAAC;IAEF,OAAO,CACN,oBAAC,IAAI,oBAAK,aAAa;QACtB,oBAAC,mBAAmB,oBAAK,qBAAqB,EAAI,CAC5C,CACP,CAAC;AACH,CAAC,CAAC;AACF,OAAO,EAAE,uBAAuB,EAAE,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { Menu } from \"../../menu/Menu\";\r\nimport { MenuProps } from \"../../menu/Menu\";\r\nimport { AdvancedAppLauncher } from \"./AdvancedAppLauncher\";\r\n\r\ntype AdvancedAppLauncherMenuProps = MenuProps & {\r\n\tenableQuickComponents?: boolean; // DEPRECATED: Quick Components will be removed in a future release\r\n\tcustomURLValidation?: (url: string) => [boolean, string];\r\n\tcustomAddComponent?: (formData: any, callback: (error: any | null) => void) => void;\r\n\tbeforeAddComponent?: (formData: any) => object;\r\n};\r\n\r\nconst AdvancedAppLauncherMenu: React.FunctionComponent<AdvancedAppLauncherMenuProps> = ({\r\n\twidth = 640,\r\n\tclassName = \"advancedAppLauncher\",\r\n\tid = \"AdvancedAppLauncherMenu\",\r\n\ttitle = \"Apps\",\r\n\tcustomURLValidation = null,\r\n\tcustomAddComponent = null,\r\n\tbeforeAddComponent = null,\r\n\t...otherProps\r\n}) => {\r\n\tconst advancedLauncherProps = {\r\n\t\tcustomURLValidation,\r\n\t\tcustomAddComponent,\r\n\t\tbeforeAddComponent,\r\n\t\tenableQuickComponents: false,\r\n\t};\r\n\r\n\tlet completeProps = {\r\n\t\t...otherProps,\r\n\t\t...advancedLauncherProps,\r\n\t\twidth,\r\n\t\tclassName,\r\n\t\tid,\r\n\t\ttitle,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Menu {...completeProps}>\r\n\t\t\t<AdvancedAppLauncher {...advancedLauncherProps} />\r\n\t\t</Menu>\r\n\t);\r\n};\r\nexport { AdvancedAppLauncherMenu };\r\n"]}
1
+ {"version":3,"file":"AdvancedAppLauncherMenu.js","sourceRoot":"","sources":["../../../../src/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAS5D,MAAM,uBAAuB,GAA0D,CAAC,EASvF,EAAE,EAAE;QATmF,EACvF,KAAK,GAAG,GAAG,EACX,SAAS,GAAG,qBAAqB,EACjC,EAAE,GAAG,yBAAyB,EAC9B,KAAK,GAAG,MAAM,EACd,mBAAmB,GAAG,IAAI,EAC1B,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,IAAI,OAEzB,EADG,UAAU,cAR0E,wGASvF,CADa;IAEb,MAAM,qBAAqB,GAAG;QAC7B,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;QAClB,qBAAqB,EAAE,KAAK;KAC5B,CAAC;IAEF,IAAI,aAAa,iDACb,UAAU,GACV,qBAAqB,KACxB,KAAK;QACL,SAAS;QACT,EAAE;QACF,KAAK,GACL,CAAC;IAEF,OAAO,CACN,oBAAC,IAAI,oBAAK,aAAa;QACtB,oBAAC,mBAAmB,oBAAK,qBAAqB,EAAI,CAC5C,CACP,CAAC;AACH,CAAC,CAAC;AACF,OAAO,EAAE,uBAAuB,EAAE,CAAC","sourcesContent":["import * as React from \"react\";\nimport { Menu } from \"../../menu/Menu\";\nimport { MenuProps } from \"../../menu/Menu\";\nimport { AdvancedAppLauncher } from \"./AdvancedAppLauncher\";\n\ntype AdvancedAppLauncherMenuProps = MenuProps & {\n\tenableQuickComponents?: boolean; // DEPRECATED: Quick Components will be removed in a future release\n\tcustomURLValidation?: (url: string) => [boolean, string];\n\tcustomAddComponent?: (formData: any, callback: (error: any | null) => void) => void;\n\tbeforeAddComponent?: (formData: any) => object;\n};\n\nconst AdvancedAppLauncherMenu: React.FunctionComponent<AdvancedAppLauncherMenuProps> = ({\n\twidth = 640,\n\tclassName = \"advancedAppLauncher\",\n\tid = \"AdvancedAppLauncherMenu\",\n\ttitle = \"Apps\",\n\tcustomURLValidation = null,\n\tcustomAddComponent = null,\n\tbeforeAddComponent = null,\n\t...otherProps\n}) => {\n\tconst advancedLauncherProps = {\n\t\tcustomURLValidation,\n\t\tcustomAddComponent,\n\t\tbeforeAddComponent,\n\t\tenableQuickComponents: false,\n\t};\n\n\tlet completeProps = {\n\t\t...otherProps,\n\t\t...advancedLauncherProps,\n\t\twidth,\n\t\tclassName,\n\t\tid,\n\t\ttitle,\n\t};\n\n\treturn (\n\t\t<Menu {...completeProps}>\n\t\t\t<AdvancedAppLauncher {...advancedLauncherProps} />\n\t\t</Menu>\n\t);\n};\nexport { AdvancedAppLauncherMenu };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AddNewAppForm.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AddNewAppForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport { FinsembleDialogTextInput } from \"../../../legacyControls/FinsembleDialogTextInput\";\r\nimport { FinsembleDialogButton } from \"../../../legacyControls/FinsembleDialogButton\";\r\nimport \"../../../../assets/css/dialogs.css\";\r\nimport { isValidURL } from \"../../../shared/validateURL\";\r\nimport { addProtocolToValidURL } from \"../../../shared/addProtocolToValidURL\";\r\n\r\nconst FORM_DEFAULTS = {\r\n\tname: \"\",\r\n\ttags: \"\",\r\n\turl: \"\",\r\n};\r\nconst VALIDATION_DEFAULTS = {\r\n\tname: true,\r\n\turl: true,\r\n};\r\n\r\nconst INVALID_NAME_MSG = \"Name cannot be empty or be a duplicate of an existing component.\";\r\nlet INVALID_URL_MSG = \"URL must be valid (e.g., http://www.google.com). Only http and https protocols are supported.\";\r\n\r\ninterface IState {\r\n\tform: {\r\n\t\tname?: string;\r\n\t\turl?: string;\r\n\t\ttags?: string;\r\n\t};\r\n\tvalidation: {\r\n\t\tname: boolean;\r\n\t\turl: boolean;\r\n\t};\r\n\tvalidateOnInputChange: boolean;\r\n}\r\ninterface IProps {\r\n\tonDone: () => void;\r\n\tcustomURLValidation: ((url: string) => [boolean, string]) | null;\r\n\tcustomAddComponent: ((formData: any, callback: (error: any | null) => void) => void) | null;\r\n\tbeforeAddComponent: ((formData: any) => object) | null;\r\n}\r\n/**\r\n * A component that has a form to accept new app properties\r\n * like name, url and tags, validates user input then saves it\r\n * to persistent store. Showing or hiding this component is up to\r\n * parent component.\r\n * @example <AddNewAppForm onDone={this.someHandlerFunction}></AddNewAppForm>\r\n */\r\nexport default class AddNewAppForm extends React.Component<IProps, IState> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\t// if you do not do this, FORM_DEFAULTS gets mutated by setState later on.\r\n\t\t\tform: Object.assign({}, FORM_DEFAULTS),\r\n\t\t\tvalidation: Object.assign({}, VALIDATION_DEFAULTS),\r\n\t\t\t// changed to true after the user submits (if they submit bad information). This gives updated information on keypress.\r\n\t\t\tvalidateOnInputChange: false,\r\n\t\t};\r\n\r\n\t\tthis.onSubmit = this.onSubmit.bind(this);\r\n\t\tthis.onClear = this.onClear.bind(this);\r\n\t\tthis.onCancel = this.onCancel.bind(this);\r\n\t\tthis.done = this.done.bind(this);\r\n\t\tthis.onURLChanged = this.onURLChanged.bind(this);\r\n\t\tthis.onAppNameChanged = this.onAppNameChanged.bind(this);\r\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\r\n\t\tthis.addNewApp = this.addNewApp.bind(this);\r\n\t\tthis.addNewAppCallback = this.addNewAppCallback.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the storeActions.addApp() method\r\n\t * to save the new app in store.\r\n\t */\r\n\tonSubmit() {\r\n\t\tthis.fixURL();\r\n\t\tthis.fixName();\r\n\t\tlet validName = this.validateName(this.state.form.name);\r\n\t\tlet validURL = this.validateURL(this.state.form.url);\r\n\t\tif (!validName || !validURL) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalidation: {\r\n\t\t\t\t\turl: validURL,\r\n\t\t\t\t\tname: validName,\r\n\t\t\t\t},\r\n\t\t\t\tvalidateOnInputChange: true,\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tvalidation: Object.assign({}, VALIDATION_DEFAULTS),\r\n\t\t\tvalidateOnInputChange: false,\r\n\t\t});\r\n\r\n\t\tlet formData = this.state.form;\r\n\t\tif (this.props.beforeAddComponent) {\r\n\t\t\tif (typeof this.props.beforeAddComponent !== \"function\") {\r\n\t\t\t\tFSBL.Clients.Logger.system.error(\r\n\t\t\t\t\t\"beforeAddComponent provided to Advanced App Launcher does not appear to be a function, skipping\"\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tformData = this.props.beforeAddComponent(formData);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.addNewApp(formData, this.addNewAppCallback);\r\n\t}\r\n\r\n\taddNewAppCallback(error: any) {\r\n\t\t// Notify parent if no errors\r\n\t\tif (error) {\r\n\t\t\tFSBL.Clients.Logger.system.error(error);\r\n\t\t\tthis.setState({\r\n\t\t\t\tvalidation: {\r\n\t\t\t\t\tname: false,\r\n\t\t\t\t\turl: true,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.done();\r\n\t\t}\r\n\t}\r\n\r\n\taddNewApp(form: IState[\"form\"], cb: (err?: any) => void) {\r\n\t\tif (this.props.customAddComponent) {\r\n\t\t\tif (typeof this.props.customAddComponent === \"function\") {\r\n\t\t\t\tthis.props.customAddComponent(form, cb);\r\n\t\t\t\treturn;\r\n\t\t\t} else {\r\n\t\t\t\tFSBL.Clients.Logger.system.error(\r\n\t\t\t\t\t\"Custom Add Component parameter provided to Advanced App Launcher does not appear to be a function, falling back to default add\"\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst { name, url, tags } = form;\r\n\t\tif (name && url) {\r\n\t\t\tstoreActions.addApp(\r\n\t\t\t\t{\r\n\t\t\t\t\tname,\r\n\t\t\t\t\turl,\r\n\t\t\t\t\ttags: tags ? tags.split(\",\") : [],\r\n\t\t\t\t\tappID: name,\r\n\t\t\t\t\ttype: \"unknown\",\r\n\t\t\t\t\tcanDelete: true,\r\n\t\t\t\t},\r\n\t\t\t\tcb\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all form inputs\r\n\t */\r\n\tonClear() {\r\n\t\t//document.getElementById(\"new-app\").reset();\r\n\t\tthis.setState({\r\n\t\t\tform: Object.assign({}, FORM_DEFAULTS),\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Just cancel and do not add the app\r\n\t */\r\n\tonCancel() {\r\n\t\tthis.done();\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the passed onDone property to let the parent component\r\n\t * know that we finished processing user's request (submit/cancel)\r\n\t */\r\n\tdone() {\r\n\t\tif (this.props.onDone && typeof this.props.onDone === \"function\") {\r\n\t\t\tthis.props.onDone();\r\n\t\t}\r\n\t\tthis.onClear();\r\n\t}\r\n\r\n\t/**\r\n\t * When the url changes, validate it (after submit), or set state.\r\n\t * @param {keyboardEvent} e\r\n\t */\r\n\tonURLChanged(e: React.ChangeEvent<HTMLInputElement>) {\r\n\t\tlet { form, validation } = this.state;\r\n\t\tif (!form) {\r\n\t\t\tform = {};\r\n\t\t}\r\n\t\tform.url = e.target.value;\r\n\t\tif (this.state.validateOnInputChange) {\r\n\t\t\tvalidation.url = this.validateURL(form.url);\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tform,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * When the name changes, validate it (after submit), or set state.\r\n\t * @param {keyboardEvent} e\r\n\t */\r\n\tonAppNameChanged(e: React.ChangeEvent<HTMLInputElement>) {\r\n\t\tlet { form, validation } = this.state;\r\n\t\tif (!form) {\r\n\t\t\tform = {};\r\n\t\t}\r\n\t\tform.name = e.target.value;\r\n\t\tif (this.state.validateOnInputChange) {\r\n\t\t\tvalidation.name = this.validateName(form.name);\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tform,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Attempt to make a URL object, if successful the provided URL is valid.\r\n\t * If the URL constructor determines the provided string to be invalid it throws a TypeError.\r\n\t *\r\n\t * @param {string} url\r\n\t * @return boolean\r\n\t */\r\n\tvalidateURL(url?: string) {\r\n\t\tif (!url) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.props.customURLValidation) {\r\n\t\t\tif (typeof this.props.customURLValidation === \"function\") {\r\n\t\t\t\tconst [result, message] = this.props.customURLValidation(url);\r\n\t\t\t\tif (typeof result !== \"boolean\") {\r\n\t\t\t\t\tFSBL.Clients.Logger.system.error(\r\n\t\t\t\t\t\t\"Custom URL Validation routine does not return a boolean, falling back to default validation\"\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (message) {\r\n\t\t\t\t\t\tINVALID_URL_MSG = message;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tFSBL.Clients.Logger.system.error(\r\n\t\t\t\t\t\"Custom url validation provided to Advanced App Launcher does not appear to be a function, falling back to default validation\"\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn isValidURL(url);\r\n\t}\r\n\r\n\t/**\r\n\t * When the url changes, validate it (after submit), or set state.\r\n\t * @param {string} name\r\n\t */\r\n\tvalidateName(name?: string) {\r\n\t\tif (typeof name !== \"string\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn name !== \"\" || /^[0-9a-zA-Z_.-\\s]+$/.test(name);\r\n\t}\r\n\r\n\t/**\r\n\t * Allows user to skip the protocol. Puts one in there if they don't have it.\r\n\t */\r\n\tfixURL() {\r\n\t\tlet { form } = this.state;\r\n\t\tif (!form) {\r\n\t\t\tform = {};\r\n\t\t}\r\n\t\tif (typeof form.url === \"string\") {\r\n\t\t\tform.url = addProtocolToValidURL(form?.url);\r\n\t\t}\r\n\t\tthis.setState({ form });\r\n\t}\r\n\r\n\t/**\r\n\t * Removes empty spaces from beginning and end of line\r\n\t */\r\n\tfixName() {\r\n\t\tlet { form } = this.state;\r\n\t\tif (!form) {\r\n\t\t\tform = {};\r\n\t\t}\r\n\t\tform.name = form.name?.trim();\r\n\t\tthis.setState({ form });\r\n\t}\r\n\r\n\t/**\r\n\t * Hotkey handler\r\n\t * Escape clears the form and hides it.\r\n\t * Enter submits.\r\n\t * @param {} e\r\n\t */\r\n\tonKeyDown(e: any) {\r\n\t\tif (e.detail.key === \"Escape\") {\r\n\t\t\tthis.onClear();\r\n\t\t\tthis.done();\r\n\t\t}\r\n\t\tif (e.detail.key === \"Enter\") {\r\n\t\t\tthis.onSubmit();\r\n\t\t}\r\n\t}\r\n\r\n\t// Listen for esc/enter\r\n\tcomponentDidMount() {\r\n\t\tdocument.addEventListener(\"portal:keydown\", this.onKeyDown);\r\n\t}\r\n\r\n\t// remove listen for esc/enter\r\n\tcomponentWillUnmount() {\r\n\t\tdocument.removeEventListener(\"portal:keydown\", this.onKeyDown);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div className=\"add-app-form controls-wrapper\">\r\n\t\t\t\t<form id=\"new-app\">\r\n\t\t\t\t\t<FinsembleDialogTextInput\r\n\t\t\t\t\t\tinputLabel=\"Name\"\r\n\t\t\t\t\t\tonInputChange={this.onAppNameChanged}\r\n\t\t\t\t\t\tplaceholder=\"Name\"\r\n\t\t\t\t\t\tautoFocus={true}\r\n\t\t\t\t\t\tvalue={this.state.form.name}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{!this.state.validation.name && <div className=\"input-error\">{INVALID_NAME_MSG}</div>}\r\n\t\t\t\t\t<FinsembleDialogTextInput\r\n\t\t\t\t\t\tinputLabel=\"URL\"\r\n\t\t\t\t\t\tonInputChange={this.onURLChanged}\r\n\t\t\t\t\t\tplaceholder=\"URL\"\r\n\t\t\t\t\t\tvalue={this.state.form.url}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{!this.state.validation.url && <div className=\"input-error\">{INVALID_URL_MSG}</div>}\r\n\t\t\t\t\t<div className=\"button-wrapper\">\r\n\t\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.onClear}>\r\n\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t</FinsembleDialogButton>\r\n\t\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.onCancel}>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t</FinsembleDialogButton>\r\n\t\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-affirmative\" onClick={this.onSubmit}>\r\n\t\t\t\t\t\t\tConfirm\r\n\t\t\t\t\t\t</FinsembleDialogButton>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</form>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"AddNewAppForm.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AddNewAppForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,MAAM,aAAa,GAAG;IACrB,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;CACP,CAAC;AACF,MAAM,mBAAmB,GAAG;IAC3B,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;CACT,CAAC;AAEF,MAAM,gBAAgB,GAAG,kEAAkE,CAAC;AAC5F,IAAI,eAAe,GAAG,+FAA+F,CAAC;AA2BtH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAyB;IACzE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YAEZ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC;YACtC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,CAAC;YAElD,qBAAqB,EAAE,KAAK;SAC5B,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAMD,QAAQ;QACP,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC;gBACb,UAAU,EAAE;oBACX,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,SAAS;iBACf;gBACD,qBAAqB,EAAE,IAAI;aAC3B,CAAC,CAAC;YACH,OAAO;SACP;QACD,IAAI,CAAC,QAAQ,CAAC;YACb,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,CAAC;YAClD,qBAAqB,EAAE,KAAK;SAC5B,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;YAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,UAAU,EAAE;gBACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAC/B,iGAAiG,CACjG,CAAC;aACF;iBAAM;gBACN,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;aACnD;SACD;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB,CAAC,KAAU;QAE3B,IAAI,KAAK,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC;gBACb,UAAU,EAAE;oBACX,IAAI,EAAE,KAAK;oBACX,GAAG,EAAE,IAAI;iBACT;aACD,CAAC,CAAC;SACH;aAAM;YACN,IAAI,CAAC,IAAI,EAAE,CAAC;SACZ;IACF,CAAC;IAED,SAAS,CAAC,IAAoB,EAAE,EAAuB;QACtD,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;YAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,UAAU,EAAE;gBACxD,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxC,OAAO;aACP;iBAAM;gBACN,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAC/B,gIAAgI,CAChI,CAAC;aACF;SACD;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,IAAI,GAAG,EAAE;YAChB,YAAY,CAAC,MAAM,CAClB;gBACC,IAAI;gBACJ,GAAG;gBACH,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjC,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI;aACf,EACD,EAAE,CACF,CAAC;SACF;IACF,CAAC;IAKD,OAAO;QAEN,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC;SACtC,CAAC,CAAC;IACJ,CAAC;IAKD,QAAQ;QACP,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAMD,IAAI;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE;YACjE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAMD,YAAY,CAAC,CAAsC;QAClD,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE;YACV,IAAI,GAAG,EAAE,CAAC;SACV;QACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACrC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI;SACJ,CAAC,CAAC;IACJ,CAAC;IAMD,gBAAgB,CAAC,CAAsC;QACtD,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE;YACV,IAAI,GAAG,EAAE,CAAC;SACV;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;YACrC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI;SACJ,CAAC,CAAC;IACJ,CAAC;IASD,WAAW,CAAC,GAAY;QACvB,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,KAAK,CAAC;SACb;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YACnC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,UAAU,EAAE;gBACzD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBAC9D,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;oBAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAC/B,6FAA6F,CAC7F,CAAC;iBACF;qBAAM;oBACN,IAAI,OAAO,EAAE;wBACZ,eAAe,GAAG,OAAO,CAAC;qBAC1B;oBACD,OAAO,MAAM,CAAC;iBACd;aACD;iBAAM;gBACN,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAC/B,8HAA8H,CAC9H,CAAC;aACF;SACD;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAMD,YAAY,CAAC,IAAa;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAO,KAAK,CAAC;SACb;QACD,OAAO,IAAI,KAAK,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAKD,MAAM;QACL,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE;YACV,IAAI,GAAG,EAAE,CAAC;SACV;QACD,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAKD,OAAO;;QACN,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE;YACV,IAAI,GAAG,EAAE,CAAC;SACV;QACD,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAQD,SAAS,CAAC,CAAM;QACf,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;SACZ;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;SAChB;IACF,CAAC;IAGD,iBAAiB;QAChB,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IAGD,oBAAoB;QACnB,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,MAAM;QACL,OAAO,CACN,6BAAK,SAAS,EAAC,+BAA+B;YAC7C,8BAAM,EAAE,EAAC,SAAS;gBACjB,oBAAC,wBAAwB,IACxB,UAAU,EAAC,MAAM,EACjB,aAAa,EAAE,IAAI,CAAC,gBAAgB,EACpC,WAAW,EAAC,MAAM,EAClB,SAAS,EAAE,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAC1B;gBACD,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,6BAAK,SAAS,EAAC,aAAa,IAAE,gBAAgB,CAAO;gBACrF,oBAAC,wBAAwB,IACxB,UAAU,EAAC,KAAK,EAChB,aAAa,EAAE,IAAI,CAAC,YAAY,EAChC,WAAW,EAAC,KAAK,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GACzB;gBACD,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,6BAAK,SAAS,EAAC,aAAa,IAAE,eAAe,CAAO;gBACnF,6BAAK,SAAS,EAAC,gBAAgB;oBAC9B,oBAAC,qBAAqB,IAAC,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,YAEpD;oBACxB,oBAAC,qBAAqB,IAAC,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,aAErD;oBACxB,oBAAC,qBAAqB,IAAC,SAAS,EAAC,yBAAyB,EAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,cAEzD,CACnB,CACA,CACF,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport storeActions from \"../stores/StoreActions\";\nimport { FinsembleDialogTextInput } from \"../../../legacyControls/FinsembleDialogTextInput\";\nimport { FinsembleDialogButton } from \"../../../legacyControls/FinsembleDialogButton\";\nimport \"../../../../assets/css/dialogs.css\";\nimport { isValidURL } from \"../../../shared/validateURL\";\nimport { addProtocolToValidURL } from \"../../../shared/addProtocolToValidURL\";\n\nconst FORM_DEFAULTS = {\n\tname: \"\",\n\ttags: \"\",\n\turl: \"\",\n};\nconst VALIDATION_DEFAULTS = {\n\tname: true,\n\turl: true,\n};\n\nconst INVALID_NAME_MSG = \"Name cannot be empty or be a duplicate of an existing component.\";\nlet INVALID_URL_MSG = \"URL must be valid (e.g., http://www.google.com). Only http and https protocols are supported.\";\n\ninterface IState {\n\tform: {\n\t\tname?: string;\n\t\turl?: string;\n\t\ttags?: string;\n\t};\n\tvalidation: {\n\t\tname: boolean;\n\t\turl: boolean;\n\t};\n\tvalidateOnInputChange: boolean;\n}\ninterface IProps {\n\tonDone: () => void;\n\tcustomURLValidation: ((url: string) => [boolean, string]) | null;\n\tcustomAddComponent: ((formData: any, callback: (error: any | null) => void) => void) | null;\n\tbeforeAddComponent: ((formData: any) => object) | null;\n}\n/**\n * A component that has a form to accept new app properties\n * like name, url and tags, validates user input then saves it\n * to persistent store. Showing or hiding this component is up to\n * parent component.\n * @example <AddNewAppForm onDone={this.someHandlerFunction}></AddNewAppForm>\n */\nexport default class AddNewAppForm extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\t// if you do not do this, FORM_DEFAULTS gets mutated by setState later on.\n\t\t\tform: Object.assign({}, FORM_DEFAULTS),\n\t\t\tvalidation: Object.assign({}, VALIDATION_DEFAULTS),\n\t\t\t// changed to true after the user submits (if they submit bad information). This gives updated information on keypress.\n\t\t\tvalidateOnInputChange: false,\n\t\t};\n\n\t\tthis.onSubmit = this.onSubmit.bind(this);\n\t\tthis.onClear = this.onClear.bind(this);\n\t\tthis.onCancel = this.onCancel.bind(this);\n\t\tthis.done = this.done.bind(this);\n\t\tthis.onURLChanged = this.onURLChanged.bind(this);\n\t\tthis.onAppNameChanged = this.onAppNameChanged.bind(this);\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t\tthis.addNewApp = this.addNewApp.bind(this);\n\t\tthis.addNewAppCallback = this.addNewAppCallback.bind(this);\n\t}\n\n\t/**\n\t * Calls the storeActions.addApp() method\n\t * to save the new app in store.\n\t */\n\tonSubmit() {\n\t\tthis.fixURL();\n\t\tthis.fixName();\n\t\tlet validName = this.validateName(this.state.form.name);\n\t\tlet validURL = this.validateURL(this.state.form.url);\n\t\tif (!validName || !validURL) {\n\t\t\tthis.setState({\n\t\t\t\tvalidation: {\n\t\t\t\t\turl: validURL,\n\t\t\t\t\tname: validName,\n\t\t\t\t},\n\t\t\t\tvalidateOnInputChange: true,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.setState({\n\t\t\tvalidation: Object.assign({}, VALIDATION_DEFAULTS),\n\t\t\tvalidateOnInputChange: false,\n\t\t});\n\n\t\tlet formData = this.state.form;\n\t\tif (this.props.beforeAddComponent) {\n\t\t\tif (typeof this.props.beforeAddComponent !== \"function\") {\n\t\t\t\tFSBL.Clients.Logger.system.error(\n\t\t\t\t\t\"beforeAddComponent provided to Advanced App Launcher does not appear to be a function, skipping\"\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tformData = this.props.beforeAddComponent(formData);\n\t\t\t}\n\t\t}\n\n\t\tthis.addNewApp(formData, this.addNewAppCallback);\n\t}\n\n\taddNewAppCallback(error: any) {\n\t\t// Notify parent if no errors\n\t\tif (error) {\n\t\t\tFSBL.Clients.Logger.system.error(error);\n\t\t\tthis.setState({\n\t\t\t\tvalidation: {\n\t\t\t\t\tname: false,\n\t\t\t\t\turl: true,\n\t\t\t\t},\n\t\t\t});\n\t\t} else {\n\t\t\tthis.done();\n\t\t}\n\t}\n\n\taddNewApp(form: IState[\"form\"], cb: (err?: any) => void) {\n\t\tif (this.props.customAddComponent) {\n\t\t\tif (typeof this.props.customAddComponent === \"function\") {\n\t\t\t\tthis.props.customAddComponent(form, cb);\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tFSBL.Clients.Logger.system.error(\n\t\t\t\t\t\"Custom Add Component parameter provided to Advanced App Launcher does not appear to be a function, falling back to default add\"\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst { name, url, tags } = form;\n\t\tif (name && url) {\n\t\t\tstoreActions.addApp(\n\t\t\t\t{\n\t\t\t\t\tname,\n\t\t\t\t\turl,\n\t\t\t\t\ttags: tags ? tags.split(\",\") : [],\n\t\t\t\t\tappID: name,\n\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\tcanDelete: true,\n\t\t\t\t},\n\t\t\t\tcb\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all form inputs\n\t */\n\tonClear() {\n\t\t//document.getElementById(\"new-app\").reset();\n\t\tthis.setState({\n\t\t\tform: Object.assign({}, FORM_DEFAULTS),\n\t\t});\n\t}\n\n\t/**\n\t * Just cancel and do not add the app\n\t */\n\tonCancel() {\n\t\tthis.done();\n\t}\n\n\t/**\n\t * Calls the passed onDone property to let the parent component\n\t * know that we finished processing user's request (submit/cancel)\n\t */\n\tdone() {\n\t\tif (this.props.onDone && typeof this.props.onDone === \"function\") {\n\t\t\tthis.props.onDone();\n\t\t}\n\t\tthis.onClear();\n\t}\n\n\t/**\n\t * When the url changes, validate it (after submit), or set state.\n\t * @param {keyboardEvent} e\n\t */\n\tonURLChanged(e: React.ChangeEvent<HTMLInputElement>) {\n\t\tlet { form, validation } = this.state;\n\t\tif (!form) {\n\t\t\tform = {};\n\t\t}\n\t\tform.url = e.target.value;\n\t\tif (this.state.validateOnInputChange) {\n\t\t\tvalidation.url = this.validateURL(form.url);\n\t\t}\n\t\tthis.setState({\n\t\t\tform,\n\t\t});\n\t}\n\n\t/**\n\t * When the name changes, validate it (after submit), or set state.\n\t * @param {keyboardEvent} e\n\t */\n\tonAppNameChanged(e: React.ChangeEvent<HTMLInputElement>) {\n\t\tlet { form, validation } = this.state;\n\t\tif (!form) {\n\t\t\tform = {};\n\t\t}\n\t\tform.name = e.target.value;\n\t\tif (this.state.validateOnInputChange) {\n\t\t\tvalidation.name = this.validateName(form.name);\n\t\t}\n\t\tthis.setState({\n\t\t\tform,\n\t\t});\n\t}\n\n\t/**\n\t * Attempt to make a URL object, if successful the provided URL is valid.\n\t * If the URL constructor determines the provided string to be invalid it throws a TypeError.\n\t *\n\t * @param {string} url\n\t * @return boolean\n\t */\n\tvalidateURL(url?: string) {\n\t\tif (!url) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.props.customURLValidation) {\n\t\t\tif (typeof this.props.customURLValidation === \"function\") {\n\t\t\t\tconst [result, message] = this.props.customURLValidation(url);\n\t\t\t\tif (typeof result !== \"boolean\") {\n\t\t\t\t\tFSBL.Clients.Logger.system.error(\n\t\t\t\t\t\t\"Custom URL Validation routine does not return a boolean, falling back to default validation\"\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tif (message) {\n\t\t\t\t\t\tINVALID_URL_MSG = message;\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tFSBL.Clients.Logger.system.error(\n\t\t\t\t\t\"Custom url validation provided to Advanced App Launcher does not appear to be a function, falling back to default validation\"\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn isValidURL(url);\n\t}\n\n\t/**\n\t * When the url changes, validate it (after submit), or set state.\n\t * @param {string} name\n\t */\n\tvalidateName(name?: string) {\n\t\tif (typeof name !== \"string\") {\n\t\t\treturn false;\n\t\t}\n\t\treturn name !== \"\" || /^[0-9a-zA-Z_.-\\s]+$/.test(name);\n\t}\n\n\t/**\n\t * Allows user to skip the protocol. Puts one in there if they don't have it.\n\t */\n\tfixURL() {\n\t\tlet { form } = this.state;\n\t\tif (!form) {\n\t\t\tform = {};\n\t\t}\n\t\tif (typeof form.url === \"string\") {\n\t\t\tform.url = addProtocolToValidURL(form?.url);\n\t\t}\n\t\tthis.setState({ form });\n\t}\n\n\t/**\n\t * Removes empty spaces from beginning and end of line\n\t */\n\tfixName() {\n\t\tlet { form } = this.state;\n\t\tif (!form) {\n\t\t\tform = {};\n\t\t}\n\t\tform.name = form.name?.trim();\n\t\tthis.setState({ form });\n\t}\n\n\t/**\n\t * Hotkey handler\n\t * Escape clears the form and hides it.\n\t * Enter submits.\n\t * @param {} e\n\t */\n\tonKeyDown(e: any) {\n\t\tif (e.detail.key === \"Escape\") {\n\t\t\tthis.onClear();\n\t\t\tthis.done();\n\t\t}\n\t\tif (e.detail.key === \"Enter\") {\n\t\t\tthis.onSubmit();\n\t\t}\n\t}\n\n\t// Listen for esc/enter\n\tcomponentDidMount() {\n\t\tdocument.addEventListener(\"portal:keydown\", this.onKeyDown);\n\t}\n\n\t// remove listen for esc/enter\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"portal:keydown\", this.onKeyDown);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"add-app-form controls-wrapper\">\n\t\t\t\t<form id=\"new-app\">\n\t\t\t\t\t<FinsembleDialogTextInput\n\t\t\t\t\t\tinputLabel=\"Name\"\n\t\t\t\t\t\tonInputChange={this.onAppNameChanged}\n\t\t\t\t\t\tplaceholder=\"Name\"\n\t\t\t\t\t\tautoFocus={true}\n\t\t\t\t\t\tvalue={this.state.form.name}\n\t\t\t\t\t/>\n\t\t\t\t\t{!this.state.validation.name && <div className=\"input-error\">{INVALID_NAME_MSG}</div>}\n\t\t\t\t\t<FinsembleDialogTextInput\n\t\t\t\t\t\tinputLabel=\"URL\"\n\t\t\t\t\t\tonInputChange={this.onURLChanged}\n\t\t\t\t\t\tplaceholder=\"URL\"\n\t\t\t\t\t\tvalue={this.state.form.url}\n\t\t\t\t\t/>\n\t\t\t\t\t{!this.state.validation.url && <div className=\"input-error\">{INVALID_URL_MSG}</div>}\n\t\t\t\t\t<div className=\"button-wrapper\">\n\t\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.onClear}>\n\t\t\t\t\t\t\tClear\n\t\t\t\t\t\t</FinsembleDialogButton>\n\t\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-neutral\" onClick={this.onCancel}>\n\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t</FinsembleDialogButton>\n\t\t\t\t\t\t<FinsembleDialogButton className=\"fsbl-button-affirmative\" onClick={this.onSubmit}>\n\t\t\t\t\t\t\tConfirm\n\t\t\t\t\t\t</FinsembleDialogButton>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AddNewFolder.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AddNewFolder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAOlD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAS;IACxD,YAAY;QACX,YAAY,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM;QACL,OAAO,CACN,6BAAK,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAC,+BAA+B,iBAEpE,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport storeActions from \"../stores/StoreActions\";\r\n\r\n/**\r\n * A basic component that calls storeActions.addNewFolder()\r\n * to create a new folder in store. This component could be upgraded\r\n * to support inline naming of the new folder\r\n */\r\nexport default class AddNewFolder extends React.Component {\r\n\taddNewFolder() {\r\n\t\tstoreActions.addNewFolder();\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div onClick={this.addNewFolder} className=\"ff-plus-2 complex-menu-action\">\r\n\t\t\t\tNew Folder\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"AddNewFolder.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AddNewFolder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAOlD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,KAAK,CAAC,SAAS;IACxD,YAAY;QACX,YAAY,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM;QACL,OAAO,CACN,6BAAK,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAC,+BAA+B,iBAEpE,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport storeActions from \"../stores/StoreActions\";\n\n/**\n * A basic component that calls storeActions.addNewFolder()\n * to create a new folder in store. This component could be upgraded\n * to support inline naming of the new folder\n */\nexport default class AddNewFolder extends React.Component {\n\taddNewFolder() {\n\t\tstoreActions.addNewFolder();\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div onClick={this.addNewFolder} className=\"ff-plus-2 complex-menu-action\">\n\t\t\t\tNew Folder\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppActionsMenu.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AppActionsMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*!\r\n * Copyright 2018 by ChartIQ, Inc.\r\n * All rights reserved.\r\n *\r\n */\r\n\r\nimport React from \"react\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport { ToggleFavoriteDropdown } from \"./ToggleFavoriteDropdown\";\r\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\r\n\r\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\r\nconst FAVORITES = \"Favorites\";\r\nconst FDC3 = \"FDC3\";\r\n\r\ninterface DeleteAppProps {\r\n\tname: string;\r\n\tid: any;\r\n}\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 DeleteApp = (props: DeleteAppProps) => {\r\n\tconst { isFavorited, removeFavorite } = useFavorites();\r\n\tconst { name, id } = props;\r\n\tconst removeFavoriteAndDelete = () => {\r\n\t\tif (isFavorited(name)) {\r\n\t\t\tremoveFavorite(name);\r\n\t\t}\r\n\t\tstoreActions.deleteApp(id);\r\n\t};\r\n\treturn <li onClick={removeFavoriteAndDelete}>Delete App</li>;\r\n};\r\n\r\n/**\r\n * This method checks an element and all of its parents to determine whether any of them\r\n * contain a particular class name. We use this to determine whether the user is clicking\r\n * inside or outside of the actions menu pop up.\r\n * @param {HTMLElement} element\r\n * @param {string} className\r\n */\r\nconst someParentHasClassName = (element: HTMLElement, className: string): any => {\r\n\tif (element.className && element.className.split(\" \").indexOf(className) >= 0) return true;\r\n\treturn element.parentNode && someParentHasClassName(element.parentNode as HTMLElement, className);\r\n};\r\n\r\ninterface IProps {\r\n\tapp: any;\r\n\tfolder: any;\r\n}\r\ninterface IState {\r\n\tisVisible: boolean;\r\n}\r\n\r\n/**\r\n * Displays a list of actions like 'View info', 'Add to favorite'\r\n * etc on each app in the list\r\n */\r\nexport default class AppActionsMenu extends React.Component<IProps, IState> {\r\n\tmenuRef: HTMLDivElement | null;\r\n\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tisVisible: false,\r\n\t\t};\r\n\t\t// Bind correct context\r\n\t\tthis.onViewInfo = this.onViewInfo.bind(this);\r\n\t\tthis.toggleMenu = this.toggleMenu.bind(this);\r\n\t\tthis.onRemove = this.onRemove.bind(this);\r\n\t\tthis.setMenuRef = this.setMenuRef.bind(this);\r\n\t\tthis.deleteApp = this.deleteApp.bind(this);\r\n\t\tthis.handleClickOutside = this.handleClickOutside.bind(this);\r\n\t\tthis.handleWindowBlurred = this.handleWindowBlurred.bind(this);\r\n\t\tthis.menuRef = null;\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tdocument.addEventListener(\"portal:click\", this.handleClickOutside);\r\n\t\t// Mody on 12/12/19\r\n\t\t// window.blur seems to work much better than finsembleWindow's\r\n\t\t// blurred event. The first, is only fired when you actually click\r\n\t\t// away from the window, while finsembleWindow's blurred fires even\r\n\t\t// when you click inside the window, causing possible race conditions.\r\n\t\twindow.addEventListener(\"blur\", this.handleWindowBlurred);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tdocument.removeEventListener(\"portal:click\", this.handleClickOutside);\r\n\t\twindow.removeEventListener(\"blur\", this.handleWindowBlurred);\r\n\t}\r\n\r\n\ttoggleMenu(e?: React.MouseEvent<HTMLElement>) {\r\n\t\tif (e) {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tisVisible: !this.state.isVisible,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Opens app catalog and switches to the page when you see all\r\n\t * the details about the app\r\n\t */\r\n\tonViewInfo() {\r\n\t\tthis.toggleMenu();\r\n\t\tFSBL.Clients.LauncherClient.showWindow(\r\n\t\t\t{\r\n\t\t\t\tcomponentType: \"App Catalog\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tmonitor: \"mine\",\r\n\t\t\t\tstaggerPixels: 0,\r\n\t\t\t\tspawnIfNotFound: true,\r\n\t\t\t\tleft: \"center\",\r\n\t\t\t\ttop: \"center\",\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\t// Publish this event so that catalog knows\r\n\t\t\t\t// what app we want to view\r\n\r\n\t\t\t\t// NOTE: While not ideal, without a small delay (when having to launch the app catalog) the app catalog wont receive the message as it will still be initializing\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tFSBL.Clients.RouterClient.transmit(\"viewApp\", {\r\n\t\t\t\t\t\tapp: this.props.app,\r\n\t\t\t\t\t});\r\n\t\t\t\t}, 250);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Calls the storeActions.removeAppFromFolder to remove\r\n\t * an app from the currently selected folder\r\n\t */\r\n\tonRemove() {\r\n\t\tstoreActions.removeAppFromFolder(this.props.folder.name, this.props.app);\r\n\t\tthis.toggleMenu();\r\n\t}\r\n\r\n\tsetMenuRef(node: HTMLDivElement) {\r\n\t\tthis.menuRef = node;\r\n\t}\r\n\r\n\t/**\r\n\t * This event handler is responsible for closing action menu pop ups when the user clicks outside of the pop up (what we might think of as a blur event).\r\n\t * The event is triggered by a document level click handler (via portals). When we receive the event, we determine whether the user was clicking inside\r\n\t * or outside of our action menu. If inside the menu then we do nothing (the click event will be captured and handled by react) but if the event occurred\r\n\t * outside of the action menu then we set its state to invisible.\r\n\t *\r\n\t * To determine whether we've clicked inside of the action menu we traverse the parent elements looking for a clue (a parent element that contains the class \"actions-menu\").\r\n\t *\r\n\t * Note: this event will fire multiple times for every click - once for each action menu on the page.\r\n\t * @param {Event} e\r\n\t */\r\n\thandleClickOutside(e: any) {\r\n\t\tconst eventTarget = e?.detail?.target;\r\n\t\tconst clickedInMyDropdown = someParentHasClassName(eventTarget, \"actions-menu\");\r\n\r\n\t\tif (this.state.isVisible && !clickedInMyDropdown) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tisVisible: false,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thandleWindowBlurred() {\r\n\t\tthis.setState({\r\n\t\t\tisVisible: false,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Calls storeActions.deleteApp() to delete an app\r\n\t * from all folders and from apps list\r\n\t */\r\n\tdeleteApp() {\r\n\t\tstoreActions.deleteApp(this.props.app.appID);\r\n\t}\r\n\r\n\trenderList() {\r\n\t\t// The 'View info' action is only visible on apps\r\n\t\t// that have the source property and with a value of FDC3\r\n\t\tconst apps = storeActions.getAllApps();\r\n\t\tconst app = apps[this.props.app.appID];\r\n\t\tconst { folder } = this.props;\r\n\t\treturn (\r\n\t\t\t<div className=\"actions-menu\" style={{ right: 0 }}>\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>\r\n\t\t\t\t\t\t<ToggleFavoriteDropdown\r\n\t\t\t\t\t\t\tid={app.name}\r\n\t\t\t\t\t\t\tcategory=\"Application\"\r\n\t\t\t\t\t\t\tname={app.name}\r\n\t\t\t\t\t\t\ticon={app.icon}\r\n\t\t\t\t\t\t\tinstance={this}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t{app.source && app.source === FDC3 && <li onClick={this.onViewInfo}>View Info</li>}\r\n\t\t\t\t\t{!app.source && app.canDelete && <DeleteApp name={app.name} id={this.props.app.appID} />}\r\n\t\t\t\t\t{[ADVANCED_APP_LAUNCHER, FAVORITES].indexOf(folder.name) === -1 && (\r\n\t\t\t\t\t\t<li onClick={this.onRemove}>Remove from {folder.name}</li>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</ul>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div ref={this.setMenuRef} className=\"actions-menu-wrapper\" onClick={this.toggleMenu}>\r\n\t\t\t\t<span>\r\n\t\t\t\t\t<i className=\"ff-dots-vert\" id={this.props.app.appID} />\r\n\t\t\t\t</span>\r\n\t\t\t\t{this.state.isVisible && this.renderList()}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"AppActionsMenu.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AppActionsMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2018 by ChartIQ, Inc.\n * All rights reserved.\n *\n */\n\nimport React from \"react\";\nimport storeActions from \"../stores/StoreActions\";\nimport { ToggleFavoriteDropdown } from \"./ToggleFavoriteDropdown\";\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\n\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\nconst FAVORITES = \"Favorites\";\nconst FDC3 = \"FDC3\";\n\ninterface DeleteAppProps {\n\tname: string;\n\tid: any;\n}\n\n/**\n * Handles deleting a component and removing it from favorites if necessary\n * @param {*} props\n */\nconst DeleteApp = (props: DeleteAppProps) => {\n\tconst { isFavorited, removeFavorite } = useFavorites();\n\tconst { name, id } = props;\n\tconst removeFavoriteAndDelete = () => {\n\t\tif (isFavorited(name)) {\n\t\t\tremoveFavorite(name);\n\t\t}\n\t\tstoreActions.deleteApp(id);\n\t};\n\treturn <li onClick={removeFavoriteAndDelete}>Delete App</li>;\n};\n\n/**\n * This method checks an element and all of its parents to determine whether any of them\n * contain a particular class name. We use this to determine whether the user is clicking\n * inside or outside of the actions menu pop up.\n * @param {HTMLElement} element\n * @param {string} className\n */\nconst someParentHasClassName = (element: HTMLElement, className: string): any => {\n\tif (element.className && element.className.split(\" \").indexOf(className) >= 0) return true;\n\treturn element.parentNode && someParentHasClassName(element.parentNode as HTMLElement, className);\n};\n\ninterface IProps {\n\tapp: any;\n\tfolder: any;\n}\ninterface IState {\n\tisVisible: boolean;\n}\n\n/**\n * Displays a list of actions like 'View info', 'Add to favorite'\n * etc on each app in the list\n */\nexport default class AppActionsMenu extends React.Component<IProps, IState> {\n\tmenuRef: HTMLDivElement | null;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tisVisible: false,\n\t\t};\n\t\t// Bind correct context\n\t\tthis.onViewInfo = this.onViewInfo.bind(this);\n\t\tthis.toggleMenu = this.toggleMenu.bind(this);\n\t\tthis.onRemove = this.onRemove.bind(this);\n\t\tthis.setMenuRef = this.setMenuRef.bind(this);\n\t\tthis.deleteApp = this.deleteApp.bind(this);\n\t\tthis.handleClickOutside = this.handleClickOutside.bind(this);\n\t\tthis.handleWindowBlurred = this.handleWindowBlurred.bind(this);\n\t\tthis.menuRef = null;\n\t}\n\n\tcomponentDidMount() {\n\t\tdocument.addEventListener(\"portal:click\", this.handleClickOutside);\n\t\t// Mody on 12/12/19\n\t\t// window.blur seems to work much better than finsembleWindow's\n\t\t// blurred event. The first, is only fired when you actually click\n\t\t// away from the window, while finsembleWindow's blurred fires even\n\t\t// when you click inside the window, causing possible race conditions.\n\t\twindow.addEventListener(\"blur\", this.handleWindowBlurred);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"portal:click\", this.handleClickOutside);\n\t\twindow.removeEventListener(\"blur\", this.handleWindowBlurred);\n\t}\n\n\ttoggleMenu(e?: React.MouseEvent<HTMLElement>) {\n\t\tif (e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t\tthis.setState({\n\t\t\tisVisible: !this.state.isVisible,\n\t\t});\n\t}\n\n\t/**\n\t * Opens app catalog and switches to the page when you see all\n\t * the details about the app\n\t */\n\tonViewInfo() {\n\t\tthis.toggleMenu();\n\t\tFSBL.Clients.LauncherClient.showWindow(\n\t\t\t{\n\t\t\t\tcomponentType: \"App Catalog\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmonitor: \"mine\",\n\t\t\t\tstaggerPixels: 0,\n\t\t\t\tspawnIfNotFound: true,\n\t\t\t\tleft: \"center\",\n\t\t\t\ttop: \"center\",\n\t\t\t},\n\t\t\t() => {\n\t\t\t\t// Publish this event so that catalog knows\n\t\t\t\t// what app we want to view\n\n\t\t\t\t// NOTE: While not ideal, without a small delay (when having to launch the app catalog) the app catalog wont receive the message as it will still be initializing\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tFSBL.Clients.RouterClient.transmit(\"viewApp\", {\n\t\t\t\t\t\tapp: this.props.app,\n\t\t\t\t\t});\n\t\t\t\t}, 250);\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Calls the storeActions.removeAppFromFolder to remove\n\t * an app from the currently selected folder\n\t */\n\tonRemove() {\n\t\tstoreActions.removeAppFromFolder(this.props.folder.name, this.props.app);\n\t\tthis.toggleMenu();\n\t}\n\n\tsetMenuRef(node: HTMLDivElement) {\n\t\tthis.menuRef = node;\n\t}\n\n\t/**\n\t * This event handler is responsible for closing action menu pop ups when the user clicks outside of the pop up (what we might think of as a blur event).\n\t * The event is triggered by a document level click handler (via portals). When we receive the event, we determine whether the user was clicking inside\n\t * or outside of our action menu. If inside the menu then we do nothing (the click event will be captured and handled by react) but if the event occurred\n\t * outside of the action menu then we set its state to invisible.\n\t *\n\t * To determine whether we've clicked inside of the action menu we traverse the parent elements looking for a clue (a parent element that contains the class \"actions-menu\").\n\t *\n\t * Note: this event will fire multiple times for every click - once for each action menu on the page.\n\t * @param {Event} e\n\t */\n\thandleClickOutside(e: any) {\n\t\tconst eventTarget = e?.detail?.target;\n\t\tconst clickedInMyDropdown = someParentHasClassName(eventTarget, \"actions-menu\");\n\n\t\tif (this.state.isVisible && !clickedInMyDropdown) {\n\t\t\tthis.setState({\n\t\t\t\tisVisible: false,\n\t\t\t});\n\t\t}\n\t}\n\n\thandleWindowBlurred() {\n\t\tthis.setState({\n\t\t\tisVisible: false,\n\t\t});\n\t}\n\n\t/**\n\t * Calls storeActions.deleteApp() to delete an app\n\t * from all folders and from apps list\n\t */\n\tdeleteApp() {\n\t\tstoreActions.deleteApp(this.props.app.appID);\n\t}\n\n\trenderList() {\n\t\t// The 'View info' action is only visible on apps\n\t\t// that have the source property and with a value of FDC3\n\t\tconst apps = storeActions.getAllApps();\n\t\tconst app = apps[this.props.app.appID];\n\t\tconst { folder } = this.props;\n\t\treturn (\n\t\t\t<div className=\"actions-menu\" style={{ right: 0 }}>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<ToggleFavoriteDropdown\n\t\t\t\t\t\t\tid={app.name}\n\t\t\t\t\t\t\tcategory=\"Application\"\n\t\t\t\t\t\t\tname={app.name}\n\t\t\t\t\t\t\ticon={app.icon}\n\t\t\t\t\t\t\tinstance={this}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t\t{app.source && app.source === FDC3 && <li onClick={this.onViewInfo}>View Info</li>}\n\t\t\t\t\t{!app.source && app.canDelete && <DeleteApp name={app.name} id={this.props.app.appID} />}\n\t\t\t\t\t{[ADVANCED_APP_LAUNCHER, FAVORITES].indexOf(folder.name) === -1 && (\n\t\t\t\t\t\t<li onClick={this.onRemove}>Remove from {folder.name}</li>\n\t\t\t\t\t)}\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div ref={this.setMenuRef} className=\"actions-menu-wrapper\" onClick={this.toggleMenu}>\n\t\t\t\t<span>\n\t\t\t\t\t<i className=\"ff-dots-vert\" id={this.props.app.appID} />\n\t\t\t\t</span>\n\t\t\t\t{this.state.isVisible && this.renderList()}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppDefinition.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AppDefinition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAoBlD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAyB;IACzE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAKD,cAAc,CAAC,KAAsB;QACpC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAOD,WAAW;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAC9C,cAAc,EAAE,IAAI;SACpB,CAAC,CAAC;QAUH,UAAU,CAAC,GAAG,EAAE;;YACf,eAAe,CAAC,IAAI,EAAE,CAAC;YAEvB,IAAI,YAAY,CAAC,aAAa,EAAE,EAAE;gBACjC,MAAA,QAAQ,EAAE,0CAAE,QAAQ,CAAC;oBACpB,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE,IAAI;iBACX,CAAC,CAAC;aACH;QACF,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;IAED,MAAM;QACL,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC;QAChD,MAAM,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,EAAE,CAAC;QAC7B,OAAO,CACN,6BAAK,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAC,eAAe,EAAC,SAAS,EAAC,MAAM,EAAC,WAAW,EAAE,IAAI,CAAC,cAAc;YAC1G,8BAAM,SAAS,EAAC,gBAAgB;gBAC/B,oBAAC,aAAa,IAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAC,aAAa,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI;gBACtF,8BAAM,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,WAAW,IAC3C,WAAW,CACN,CACD;YACN,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI;YAC/C,oBAAC,cAAc,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAI,CAClD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport AppActionsMenu from \"./AppActionsMenu\";\r\nimport AppTagsList from \"./AppTagsList\";\r\nimport { FavoriteMaker } from \"../../../favorites/FavoriteMaker\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport { Icon } from \"../../../../types/iconTypes\";\r\nimport { FolderAppType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\r\n\r\ntype App = FolderAppType & {\r\n\ttitle?: string;\r\n\ticon?: Icon;\r\n};\r\ninterface IProps {\r\n\tfolder: FolderType;\r\n\tapp: App;\r\n}\r\n\r\ninterface IState {}\r\n\r\n/**\r\n * Used to make sure that a user is not waiting for component\r\n * to spawn after a double click, helps us prevent multiple\r\n * spawns for the same app.\r\n */\r\nexport default class AppDefinition extends React.Component<IProps, IState> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.onDragToFolder = this.onDragToFolder.bind(this);\r\n\t\tthis.onItemClick = this.onItemClick.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Native HTML5 drag and drop\r\n\t **/\r\n\tonDragToFolder(event: React.DragEvent) {\r\n\t\tevent.dataTransfer.setData(\"app\", JSON.stringify(this.props.app));\r\n\t}\r\n\r\n\t/**\r\n\t * Spawns a component on click\r\n\t * @param {object} e The Synthetic React event\r\n\t *\r\n\t */\r\n\tonItemClick() {\r\n\t\tconst name = this.props.app.title || this.props.app.name;\r\n\t\tFSBL.Clients.LauncherClient.spawn(name.trim(), {\r\n\t\t\taddToWorkspace: true,\r\n\t\t});\r\n\t\t/**\r\n\t\t * If a component takes 4 seconds until it's first painted and the app launcher closes immediately -- that feels discordant.\r\n\t\t * If a component takes 4 seconds until it's first painted and the app launcher stays open, that feels like a bug.\r\n\t\t * This is a middle ground. If the component paints quickly (like our html apps), the app launcher will hide as soon as\r\n\t\t * that new window gets focused. If the component takes a while to paint, we'll hide after half a second instead of\r\n\t\t * waiting for the window to grab focus.\r\n\t\t *\r\n\t\t * Longer term we should leave the menu open and have a micro-interaction telling the user that something is happening.\r\n\t\t */\r\n\t\tsetTimeout(() => {\r\n\t\t\tfinsembleWindow.blur();\r\n\t\t\t// clear any search text on app launch.\r\n\t\t\tif (storeActions.getSearchText()) {\r\n\t\t\t\tgetStore()?.setValue({\r\n\t\t\t\t\tfield: \"filterText\",\r\n\t\t\t\t\tvalue: null,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { app } = this.props;\r\n\t\tconst appId = app.title || app.name;\r\n\t\tconst displayName = app.displayName || app.name;\r\n\t\tconst tags = app?.tags || [];\r\n\t\treturn (\r\n\t\t\t<div onClick={this.onItemClick} className=\"app-item link\" draggable=\"true\" onDragStart={this.onDragToFolder}>\r\n\t\t\t\t<span className=\"app-item-title\">\r\n\t\t\t\t\t<FavoriteMaker id={appId} category=\"Application\" name={displayName} icon={app.icon} />\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</span>\r\n\t\t\t\t{tags.length > 0 && <AppTagsList tags={tags} />}\r\n\t\t\t\t<AppActionsMenu app={app} folder={this.props.folder} />\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"AppDefinition.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AppDefinition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAoBlD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAyB;IACzE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAKD,cAAc,CAAC,KAAsB;QACpC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAOD,WAAW;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YAC9C,cAAc,EAAE,IAAI;SACpB,CAAC,CAAC;QAUH,UAAU,CAAC,GAAG,EAAE;;YACf,eAAe,CAAC,IAAI,EAAE,CAAC;YAEvB,IAAI,YAAY,CAAC,aAAa,EAAE,EAAE;gBACjC,MAAA,QAAQ,EAAE,0CAAE,QAAQ,CAAC;oBACpB,KAAK,EAAE,YAAY;oBACnB,KAAK,EAAE,IAAI;iBACX,CAAC,CAAC;aACH;QACF,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;IAED,MAAM;QACL,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC;QAChD,MAAM,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,EAAE,CAAC;QAC7B,OAAO,CACN,6BAAK,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAC,eAAe,EAAC,SAAS,EAAC,MAAM,EAAC,WAAW,EAAE,IAAI,CAAC,cAAc;YAC1G,8BAAM,SAAS,EAAC,gBAAgB;gBAC/B,oBAAC,aAAa,IAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAC,aAAa,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI;gBACtF,8BAAM,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,WAAW,IAC3C,WAAW,CACN,CACD;YACN,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI;YAC/C,oBAAC,cAAc,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAI,CAClD,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport AppActionsMenu from \"./AppActionsMenu\";\nimport AppTagsList from \"./AppTagsList\";\nimport { FavoriteMaker } from \"../../../favorites/FavoriteMaker\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport storeActions from \"../stores/StoreActions\";\nimport { Icon } from \"../../../../types/iconTypes\";\nimport { FolderAppType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\n\ntype App = FolderAppType & {\n\ttitle?: string;\n\ticon?: Icon;\n};\ninterface IProps {\n\tfolder: FolderType;\n\tapp: App;\n}\n\ninterface IState {}\n\n/**\n * Used to make sure that a user is not waiting for component\n * to spawn after a double click, helps us prevent multiple\n * spawns for the same app.\n */\nexport default class AppDefinition extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.onDragToFolder = this.onDragToFolder.bind(this);\n\t\tthis.onItemClick = this.onItemClick.bind(this);\n\t}\n\n\t/**\n\t * Native HTML5 drag and drop\n\t **/\n\tonDragToFolder(event: React.DragEvent) {\n\t\tevent.dataTransfer.setData(\"app\", JSON.stringify(this.props.app));\n\t}\n\n\t/**\n\t * Spawns a component on click\n\t * @param {object} e The Synthetic React event\n\t *\n\t */\n\tonItemClick() {\n\t\tconst name = this.props.app.title || this.props.app.name;\n\t\tFSBL.Clients.LauncherClient.spawn(name.trim(), {\n\t\t\taddToWorkspace: true,\n\t\t});\n\t\t/**\n\t\t * If a component takes 4 seconds until it's first painted and the app launcher closes immediately -- that feels discordant.\n\t\t * If a component takes 4 seconds until it's first painted and the app launcher stays open, that feels like a bug.\n\t\t * This is a middle ground. If the component paints quickly (like our html apps), the app launcher will hide as soon as\n\t\t * that new window gets focused. If the component takes a while to paint, we'll hide after half a second instead of\n\t\t * waiting for the window to grab focus.\n\t\t *\n\t\t * Longer term we should leave the menu open and have a micro-interaction telling the user that something is happening.\n\t\t */\n\t\tsetTimeout(() => {\n\t\t\tfinsembleWindow.blur();\n\t\t\t// clear any search text on app launch.\n\t\t\tif (storeActions.getSearchText()) {\n\t\t\t\tgetStore()?.setValue({\n\t\t\t\t\tfield: \"filterText\",\n\t\t\t\t\tvalue: null,\n\t\t\t\t});\n\t\t\t}\n\t\t}, 500);\n\t}\n\n\trender() {\n\t\tconst { app } = this.props;\n\t\tconst appId = app.title || app.name;\n\t\tconst displayName = app.displayName || app.name;\n\t\tconst tags = app?.tags || [];\n\t\treturn (\n\t\t\t<div onClick={this.onItemClick} className=\"app-item link\" draggable=\"true\" onDragStart={this.onDragToFolder}>\n\t\t\t\t<span className=\"app-item-title\">\n\t\t\t\t\t<FavoriteMaker id={appId} category=\"Application\" name={displayName} icon={app.icon} />\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</span>\n\t\t\t\t{tags.length > 0 && <AppTagsList tags={tags} />}\n\t\t\t\t<AppActionsMenu app={app} folder={this.props.folder} />\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppTagsList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AppTagsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAUlD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAyB;IACvE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,cAAc,EAAE,CAAC,CAAC;SAClB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,KAAa;QACzB,IAAI,CAAC,QAAQ,CAAC;YACb,cAAc,EAAE,KAAK;SACrB,CAAC,CAAC;IACJ,CAAC;IAED,eAAe;QACd,IAAI,CAAC,QAAQ,CAAC;YACb,cAAc,EAAE,CAAC,CAAC;SAClB,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,CAAmB;QAC1C,IAAI,CAAC,EAAE;YACN,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,CAAC,CAAC,cAAc,EAAE,CAAC;SACnB;QACD,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY;QACX,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;YAChE,OAAO,CACN,8BACC,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EACxC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAC7C,YAAY,EAAE,IAAI,CAAC,eAAe,IAEjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CACzC,CACP,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM;QACL,OAAO,CACN,6BAAK,SAAS,EAAC,eAAe;YAC7B,2BAAG,SAAS,EAAC,QAAQ,GAAK;YACzB,IAAI,CAAC,YAAY,EAAE,CACf,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\n\r\nimport storeActions from \"../stores/StoreActions\";\r\n\r\ninterface IProps {\r\n\ttags: string[];\r\n}\r\n\r\ninterface IState {\r\n\thighlightedTag: number;\r\n}\r\n\r\nexport default class AppTagsList extends React.Component<IProps, IState> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\thighlightedTag: -1,\r\n\t\t};\r\n\t\tthis.highlightTag = this.highlightTag.bind(this);\r\n\t\tthis.clearHighlights = this.clearHighlights.bind(this);\r\n\t\tthis.generateTags = this.generateTags.bind(this);\r\n\t\tthis.onTagClick = this.onTagClick.bind(this);\r\n\t}\r\n\r\n\thighlightTag(index: number) {\r\n\t\tthis.setState({\r\n\t\t\thighlightedTag: index,\r\n\t\t});\r\n\t}\r\n\r\n\tclearHighlights() {\r\n\t\tthis.setState({\r\n\t\t\thighlightedTag: -1,\r\n\t\t});\r\n\t}\r\n\r\n\tonTagClick(tag: string, e: React.MouseEvent) {\r\n\t\tif (e) {\r\n\t\t\te.stopPropagation();\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t\tstoreActions.addTag(tag);\r\n\t}\r\n\r\n\tgenerateTags() {\r\n\t\tconst { highlightedTag: highlight } = this.state;\r\n\t\treturn this.props.tags.map((tag, i) => {\r\n\t\t\tlet style = highlight === i ? \"tag-name highlight\" : \"tag-name\";\r\n\t\t\treturn (\r\n\t\t\t\t<span\r\n\t\t\t\t\tkey={i}\r\n\t\t\t\t\tclassName={style}\r\n\t\t\t\t\tonClick={this.onTagClick.bind(this, tag)}\r\n\t\t\t\t\tonMouseEnter={this.highlightTag.bind(this, i)}\r\n\t\t\t\t\tonMouseLeave={this.clearHighlights}\r\n\t\t\t\t>\r\n\t\t\t\t\t{this.props.tags[i + 1] ? `${tag}, ` : `${tag}`}\r\n\t\t\t\t</span>\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div className=\"app-item-tags\">\r\n\t\t\t\t<i className=\"ff-tag\"></i>\r\n\t\t\t\t{this.generateTags()}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"AppTagsList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/AppTagsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAUlD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAyB;IACvE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,cAAc,EAAE,CAAC,CAAC;SAClB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,KAAa;QACzB,IAAI,CAAC,QAAQ,CAAC;YACb,cAAc,EAAE,KAAK;SACrB,CAAC,CAAC;IACJ,CAAC;IAED,eAAe;QACd,IAAI,CAAC,QAAQ,CAAC;YACb,cAAc,EAAE,CAAC,CAAC;SAClB,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,CAAmB;QAC1C,IAAI,CAAC,EAAE;YACN,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,CAAC,CAAC,cAAc,EAAE,CAAC;SACnB;QACD,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY;QACX,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;YAChE,OAAO,CACN,8BACC,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EACxC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAC7C,YAAY,EAAE,IAAI,CAAC,eAAe,IAEjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CACzC,CACP,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM;QACL,OAAO,CACN,6BAAK,SAAS,EAAC,eAAe;YAC7B,2BAAG,SAAS,EAAC,QAAQ,GAAK;YACzB,IAAI,CAAC,YAAY,EAAE,CACf,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\n\nimport storeActions from \"../stores/StoreActions\";\n\ninterface IProps {\n\ttags: string[];\n}\n\ninterface IState {\n\thighlightedTag: number;\n}\n\nexport default class AppTagsList extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\thighlightedTag: -1,\n\t\t};\n\t\tthis.highlightTag = this.highlightTag.bind(this);\n\t\tthis.clearHighlights = this.clearHighlights.bind(this);\n\t\tthis.generateTags = this.generateTags.bind(this);\n\t\tthis.onTagClick = this.onTagClick.bind(this);\n\t}\n\n\thighlightTag(index: number) {\n\t\tthis.setState({\n\t\t\thighlightedTag: index,\n\t\t});\n\t}\n\n\tclearHighlights() {\n\t\tthis.setState({\n\t\t\thighlightedTag: -1,\n\t\t});\n\t}\n\n\tonTagClick(tag: string, e: React.MouseEvent) {\n\t\tif (e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t\tstoreActions.addTag(tag);\n\t}\n\n\tgenerateTags() {\n\t\tconst { highlightedTag: highlight } = this.state;\n\t\treturn this.props.tags.map((tag, i) => {\n\t\t\tlet style = highlight === i ? \"tag-name highlight\" : \"tag-name\";\n\t\t\treturn (\n\t\t\t\t<span\n\t\t\t\t\tkey={i}\n\t\t\t\t\tclassName={style}\n\t\t\t\t\tonClick={this.onTagClick.bind(this, tag)}\n\t\t\t\t\tonMouseEnter={this.highlightTag.bind(this, i)}\n\t\t\t\t\tonMouseLeave={this.clearHighlights}\n\t\t\t\t>\n\t\t\t\t\t{this.props.tags[i + 1] ? `${tag}, ` : `${tag}`}\n\t\t\t\t</span>\n\t\t\t);\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<div className=\"app-item-tags\">\n\t\t\t\t<i className=\"ff-tag\"></i>\n\t\t\t\t{this.generateTags()}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import sortFunctions from "../utils/sort-functions";
3
3
  import { FolderAppType, FolderType } from "../../../../types/advancedAppLauncherTypes";
4
- import { StandardError } from "@finsemble/finsemble-core/types/types";
4
+ import { StandardError } from "@finsemble/finsemble-api/types/types";
5
5
  interface IProps {
6
6
  }
7
7
  interface IState {
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/Content.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport AppDefinition from \"./AppDefinition\";\r\nimport NoAppsFound from \"./NoAppsFound\";\r\nimport FilterSort from \"./FilterSort\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport sortFunctions from \"../utils/sort-functions\";\r\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\r\nimport { FolderAppType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\r\nimport { StandardError } from \"@finsemble/finsemble-core/types/types\";\r\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\r\n\r\n(window as any).storeActions = storeActions;\r\n// To be assigned a value later in the constructor\r\nlet store: StoreModel | undefined;\r\n\r\ninterface IProps {}\r\ninterface IState {\r\n\tapps: any;\r\n\ttags: any;\r\n\tsortBy: keyof typeof sortFunctions;\r\n\tfilterText: string;\r\n\tfolder: FolderType;\r\n}\r\n\r\nexport default class Content extends React.Component<IProps, IState> {\r\n\trouterSubscription: any;\r\n\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tapps: storeActions.getApps(),\r\n\t\t\ttags: storeActions.getTags(),\r\n\t\t\tsortBy: storeActions.getSortBy(),\r\n\t\t\tfilterText: storeActions.getSearchText().toLowerCase(),\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t};\r\n\t\tthis.onSort = this.onSort.bind(this);\r\n\t\tthis.onSearch = this.onSearch.bind(this);\r\n\t\tthis.onTagsUpdate = this.onTagsUpdate.bind(this);\r\n\t\tthis.onActiveFolderChanged = this.onActiveFolderChanged.bind(this);\r\n\t\tthis.onAppListUpdate = this.onAppListUpdate.bind(this);\r\n\t\tthis.onAppLauncherUpdate = this.onAppLauncherUpdate.bind(this);\r\n\t\tthis.updateAppDefinitions = this.updateAppDefinitions.bind(this);\r\n\t\tstore = getStore();\r\n\t}\r\n\r\n\t_setFolderState() {\r\n\t\tthis.setState({\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t});\r\n\t}\r\n\r\n\tfilterApps() {\r\n\t\tconst { folder } = this.state;\r\n\t\tlet apps: FolderAppType[] =\r\n\t\t\tfolder.name === ADVANCED_APP_LAUNCHER ? Object.values(storeActions.getAllApps()) : folder.apps;\r\n\r\n\t\tif (!folder || !apps) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst sortFunc = sortFunctions[this.state.sortBy];\r\n\t\tconst filteredApps: FolderAppType[] = this.filterAppsByTags(sortFunc(apps));\r\n\t\tif (!this.state.filterText) {\r\n\t\t\treturn filteredApps;\r\n\t\t}\r\n\r\n\t\treturn filteredApps.filter(\r\n\t\t\t({ displayName, name }: FolderAppType) =>\r\n\t\t\t\tdisplayName?.toLowerCase().includes(this.state.filterText.toLowerCase()) ??\r\n\t\t\t\tname?.toLowerCase().includes(this.state.filterText.toLowerCase())\r\n\t\t);\r\n\t}\r\n\r\n\tfilterAppsByTags(apps: FolderAppType[]) {\r\n\t\tif (!this.state.tags) {\r\n\t\t\treturn apps;\r\n\t\t}\r\n\t\t//All active tags must be present in an app for it to show\r\n\t\treturn apps.filter((app) => {\r\n\t\t\tfor (let i = 0; i < this.state.tags.length; i++) {\r\n\t\t\t\tlet tag = this.state.tags[i];\r\n\t\t\t\tif (!app.tags?.includes(tag)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tonActiveFolderChanged() {\r\n\t\t// Quick fix for release 6.3.0\r\n\t\t// There are 2 listeners for \"activeFolder\". One in this file, the other is in packages\\ui\\src\\components\\toolbar\\advancedAppLauncher\\stores\\StoreActions.ts\r\n\t\t// The first listener is invoked earlier with nonupdated 'activeFolder' value in the storeActions. So I use a timeout to change this.\r\n\t\t// Otherwise, for correct re-rendering, we need to do double-click on the left folders panel.\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._setFolderState();\r\n\t\t}, 50);\r\n\t}\r\n\r\n\tonSearch(error: StandardError, data: any) {\r\n\t\tthis.setState({\r\n\t\t\tfilterText: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonSort(error: StandardError, data: any) {\r\n\t\tthis.setState({\r\n\t\t\tsortBy: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonTagsUpdate(error: StandardError, data: any) {\r\n\t\tthis.setState({\r\n\t\t\ttags: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Mainly used to know when a user remove an app from a folder\r\n\t * Because there is no way to subscribe to\r\n\t * folders[index].appDefinitions updates.\r\n\t */\r\n\tonAppListUpdate() {\r\n\t\tthis._setFolderState();\r\n\t}\r\n\r\n\tonAppLauncherUpdate() {\r\n\t\tthis.setState({\r\n\t\t\tapps: storeActions.getApps(),\r\n\t\t});\r\n\t}\r\n\r\n\tupdateAppDefinitions(err: StandardError, response: any) {\r\n\t\tFSBL.Clients.Logger.system.debug(\"list updated\", err, response);\r\n\t\tif (err) {\r\n\t\t\treturn console.error(err);\r\n\t\t}\r\n\t\tstoreActions.refreshAppDefinitions(response.data.componentList);\r\n\t\tthis.onAppListUpdate();\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t//this.setStateValues();\r\n\t\tstore?.addListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\r\n\t\tstore?.addListener({ field: \"filterText\" }, this.onSearch);\r\n\t\tstore?.addListener({ field: \"sortBy\" }, this.onSort);\r\n\t\tstore?.addListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\r\n\t\t// We can't subscribe to folders[index].appDefinitions\r\n\t\t// So we are looking at appFolders.folders update\r\n\t\t// Since that update is done After removing an app of definitions\r\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\r\n\r\n\t\tstore?.addListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\r\n\t\tthis.routerSubscription = FSBL.Clients.RouterClient.subscribe(\"Launcher.update\", this.updateAppDefinitions);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tstore?.removeListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\r\n\t\tstore?.removeListener({ field: \"filterText\" }, this.onSearch);\r\n\t\tstore?.removeListener({ field: \"sortBy\" }, this.onSort);\r\n\t\tstore?.removeListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\r\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\r\n\r\n\t\tstore?.removeListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\r\n\t\tFSBL.Clients.RouterClient.unsubscribe(this.routerSubscription.subscribeID);\r\n\t}\r\n\r\n\trenderAppList() {\r\n\t\treturn this.filterApps().map((app, index) => <AppDefinition app={app} folder={this.state.folder} key={index} />);\r\n\t}\r\n\r\n\tgetNoResultsMessage() {\r\n\t\tconst messages = {\r\n\t\t\tsearch: [\"No results found. Please try again.\"],\r\n\t\t\tFavorites: [\"There’s nothing here!\", <br key={1} />, \"Add apps to Favorites to view them here.\"],\r\n\t\t\t//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],\r\n\t\t\tdefault: [\"There’s nothing here!\", <br key={2} />, \"Add apps to folders to view them here.\"],\r\n\t\t};\r\n\t\tif (!this.state.folder) {\r\n\t\t\treturn [\"Loading data...\", <br key={3} />];\r\n\t\t}\r\n\t\t// User is searching so we need the search message\r\n\t\tif (this.state.filterText || this.state.tags.length) {\r\n\t\t\treturn messages.search;\r\n\t\t}\r\n\t\t// Now let's check which folder is currently active\r\n\t\tswitch (this.state.folder.name) {\r\n\t\t\tcase \"Favorites\":\r\n\t\t\t\treturn messages.Favorites;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"Dashboards\":\r\n\t\t\t\treturn [\"\"];\r\n\t\t\t// return messages.Dashboards;\r\n\t\t\tdefault:\r\n\t\t\t\treturn messages.default;\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst apps = this.renderAppList();\r\n\t\treturn (\r\n\t\t\t<div className=\"complex-menu-content-row\">\r\n\t\t\t\t<FilterSort></FilterSort>\r\n\t\t\t\t<div className=\"item-wrapper\">{apps.length ? apps : <NoAppsFound message={this.getNoResultsMessage()} />}</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/Content.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport AppDefinition from \"./AppDefinition\";\nimport NoAppsFound from \"./NoAppsFound\";\nimport FilterSort from \"./FilterSort\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport storeActions from \"../stores/StoreActions\";\nimport sortFunctions from \"../utils/sort-functions\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\nimport { FolderAppType, FolderType } from \"../../../../types/advancedAppLauncherTypes\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\n\n(window as any).storeActions = storeActions;\n// To be assigned a value later in the constructor\nlet store: StoreModel | undefined;\n\ninterface IProps {}\ninterface IState {\n\tapps: any;\n\ttags: any;\n\tsortBy: keyof typeof sortFunctions;\n\tfilterText: string;\n\tfolder: FolderType;\n}\n\nexport default class Content extends React.Component<IProps, IState> {\n\trouterSubscription: any;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: storeActions.getApps(),\n\t\t\ttags: storeActions.getTags(),\n\t\t\tsortBy: storeActions.getSortBy(),\n\t\t\tfilterText: storeActions.getSearchText().toLowerCase(),\n\t\t\tfolder: storeActions.getActiveFolder(),\n\t\t};\n\t\tthis.onSort = this.onSort.bind(this);\n\t\tthis.onSearch = this.onSearch.bind(this);\n\t\tthis.onTagsUpdate = this.onTagsUpdate.bind(this);\n\t\tthis.onActiveFolderChanged = this.onActiveFolderChanged.bind(this);\n\t\tthis.onAppListUpdate = this.onAppListUpdate.bind(this);\n\t\tthis.onAppLauncherUpdate = this.onAppLauncherUpdate.bind(this);\n\t\tthis.updateAppDefinitions = this.updateAppDefinitions.bind(this);\n\t\tstore = getStore();\n\t}\n\n\t_setFolderState() {\n\t\tthis.setState({\n\t\t\tfolder: storeActions.getActiveFolder(),\n\t\t});\n\t}\n\n\tfilterApps() {\n\t\tconst { folder } = this.state;\n\t\tlet apps: FolderAppType[] =\n\t\t\tfolder.name === ADVANCED_APP_LAUNCHER ? Object.values(storeActions.getAllApps()) : folder.apps;\n\n\t\tif (!folder || !apps) {\n\t\t\treturn [];\n\t\t}\n\t\tconst sortFunc = sortFunctions[this.state.sortBy];\n\t\tconst filteredApps: FolderAppType[] = this.filterAppsByTags(sortFunc(apps));\n\t\tif (!this.state.filterText) {\n\t\t\treturn filteredApps;\n\t\t}\n\n\t\treturn filteredApps.filter(\n\t\t\t({ displayName, name }: FolderAppType) =>\n\t\t\t\tdisplayName?.toLowerCase().includes(this.state.filterText.toLowerCase()) ??\n\t\t\t\tname?.toLowerCase().includes(this.state.filterText.toLowerCase())\n\t\t);\n\t}\n\n\tfilterAppsByTags(apps: FolderAppType[]) {\n\t\tif (!this.state.tags) {\n\t\t\treturn apps;\n\t\t}\n\t\t//All active tags must be present in an app for it to show\n\t\treturn apps.filter((app) => {\n\t\t\tfor (let i = 0; i < this.state.tags.length; i++) {\n\t\t\t\tlet tag = this.state.tags[i];\n\t\t\t\tif (!app.tags?.includes(tag)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tonActiveFolderChanged() {\n\t\t// Quick fix for release 6.3.0\n\t\t// There are 2 listeners for \"activeFolder\". One in this file, the other is in packages\\ui\\src\\components\\toolbar\\advancedAppLauncher\\stores\\StoreActions.ts\n\t\t// The first listener is invoked earlier with nonupdated 'activeFolder' value in the storeActions. So I use a timeout to change this.\n\t\t// Otherwise, for correct re-rendering, we need to do double-click on the left folders panel.\n\t\tsetTimeout(() => {\n\t\t\tthis._setFolderState();\n\t\t}, 50);\n\t}\n\n\tonSearch(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\tfilterText: data.value,\n\t\t});\n\t}\n\n\tonSort(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\tsortBy: data.value,\n\t\t});\n\t}\n\n\tonTagsUpdate(error: StandardError, data: any) {\n\t\tthis.setState({\n\t\t\ttags: data.value,\n\t\t});\n\t}\n\n\t/**\n\t * Mainly used to know when a user remove an app from a folder\n\t * Because there is no way to subscribe to\n\t * folders[index].appDefinitions updates.\n\t */\n\tonAppListUpdate() {\n\t\tthis._setFolderState();\n\t}\n\n\tonAppLauncherUpdate() {\n\t\tthis.setState({\n\t\t\tapps: storeActions.getApps(),\n\t\t});\n\t}\n\n\tupdateAppDefinitions(err: StandardError, response: any) {\n\t\tFSBL.Clients.Logger.system.debug(\"list updated\", err, response);\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\tstoreActions.refreshAppDefinitions(response.data.componentList);\n\t\tthis.onAppListUpdate();\n\t}\n\n\tcomponentDidMount() {\n\t\t//this.setStateValues();\n\t\tstore?.addListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\n\t\tstore?.addListener({ field: \"filterText\" }, this.onSearch);\n\t\tstore?.addListener({ field: \"sortBy\" }, this.onSort);\n\t\tstore?.addListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\n\t\t// We can't subscribe to folders[index].appDefinitions\n\t\t// So we are looking at appFolders.folders update\n\t\t// Since that update is done After removing an app of definitions\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\n\n\t\tstore?.addListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\n\t\tthis.routerSubscription = FSBL.Clients.RouterClient.subscribe(\"Launcher.update\", this.updateAppDefinitions);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstore?.removeListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\n\t\tstore?.removeListener({ field: \"filterText\" }, this.onSearch);\n\t\tstore?.removeListener({ field: \"sortBy\" }, this.onSort);\n\t\tstore?.removeListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\n\n\t\tstore?.removeListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\n\t\tFSBL.Clients.RouterClient.unsubscribe(this.routerSubscription.subscribeID);\n\t}\n\n\trenderAppList() {\n\t\treturn this.filterApps().map((app, index) => <AppDefinition app={app} folder={this.state.folder} key={index} />);\n\t}\n\n\tgetNoResultsMessage() {\n\t\tconst messages = {\n\t\t\tsearch: [\"No results found. Please try again.\"],\n\t\t\tFavorites: [\"There’s nothing here!\", <br key={1} />, \"Add apps to Favorites to view them here.\"],\n\t\t\t//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],\n\t\t\tdefault: [\"There’s nothing here!\", <br key={2} />, \"Add apps to folders to view them here.\"],\n\t\t};\n\t\tif (!this.state.folder) {\n\t\t\treturn [\"Loading data...\", <br key={3} />];\n\t\t}\n\t\t// User is searching so we need the search message\n\t\tif (this.state.filterText || this.state.tags.length) {\n\t\t\treturn messages.search;\n\t\t}\n\t\t// Now let's check which folder is currently active\n\t\tswitch (this.state.folder.name) {\n\t\t\tcase \"Favorites\":\n\t\t\t\treturn messages.Favorites;\n\t\t\t\tbreak;\n\t\t\tcase \"Dashboards\":\n\t\t\t\treturn [\"\"];\n\t\t\t// return messages.Dashboards;\n\t\t\tdefault:\n\t\t\t\treturn messages.default;\n\t\t}\n\t}\n\n\trender() {\n\t\tconst apps = this.renderAppList();\n\t\treturn (\n\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t<FilterSort></FilterSort>\n\t\t\t\t<div className=\"item-wrapper\">{apps.length ? apps : <NoAppsFound message={this.getNoResultsMessage()} />}</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSort.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FilterSort.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAUlD,IAAI,KAA6B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAyB;IACtE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE;SACnC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAU;QAClB,IAAI,CAAC,QAAQ,CACZ;YACC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;SAC1B,EACD,GAAG,EAAE;;YACJ,MAAA,QAAQ,EAAE,0CAAE,QAAQ,CAAC;gBACpB,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aACxB,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC;IAMD,UAAU,CAAC,GAAW;QACrB,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM;YACN,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;IACF,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB;QACnB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACL,IAAI,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAC3B,oBAAC,SAAS,OAAG;YACb,oBAAC,QAAQ,OAAG;YACZ,oBAAC,MAAM,OAAG;YACV,oBAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,GAAI,CAC3G,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\r\nimport SearchBox from \"./SearchBox\";\r\nimport TagsMenu from \"../../../shared/TagsMenu\";\r\nimport SortBy from \"./SortBy\";\r\nimport TagsList from \"./TagsList\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\r\n\r\ninterface IProps {}\r\n\r\ninterface IState {\r\n\ttags: string[];\r\n\tsearch: string;\r\n}\r\n\r\nlet store: StoreModel | undefined;\r\n\r\nexport default class FilterSort extends React.Component<IProps, IState> {\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttags: [],\r\n\t\t\tsearch: \"\",\r\n\t\t};\r\n\t\tthis.onSearch = this.onSearch.bind(this);\r\n\t\tthis.setStateValues = this.setStateValues.bind(this);\r\n\t\tstore = getStore();\r\n\t}\r\n\r\n\tsetStateValues() {\r\n\t\tthis.setState({\r\n\t\t\ttags: storeActions.getAllAppsTags(),\r\n\t\t});\r\n\t}\r\n\r\n\tonSearch(event: any) {\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tsearch: event.target.value,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tgetStore()?.setValue({\r\n\t\t\t\t\tfield: \"filterText\",\r\n\t\t\t\t\tvalue: this.state.search,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Add tag to list in local store\r\n\t * so that other components get notified\r\n\t **/\r\n\tonTagClick(tag: string) {\r\n\t\tlet tags = storeActions.getTags();\r\n\r\n\t\tif (tags.includes(tag)) {\r\n\t\t\tstoreActions.deleteTag(tag);\r\n\t\t} else {\r\n\t\t\tstoreActions.addTag(tag);\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.setStateValues();\r\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.setStateValues);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.setStateValues);\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet activeTags = storeActions.getTags();\r\n\t\treturn (\r\n\t\t\t<div className=\"filter-sort\">\r\n\t\t\t\t<SearchBox />\r\n\t\t\t\t<TagsList />\r\n\t\t\t\t<SortBy />\r\n\t\t\t\t<TagsMenu label=\"Tags\" align=\"right\" list={this.state.tags} active={activeTags} onItemClick={this.onTagClick} />\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"FilterSort.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FilterSort.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAUlD,IAAI,KAA6B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAyB;IACtE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;SACV,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,KAAK,GAAG,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,YAAY,CAAC,cAAc,EAAE;SACnC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAU;QAClB,IAAI,CAAC,QAAQ,CACZ;YACC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;SAC1B,EACD,GAAG,EAAE;;YACJ,MAAA,QAAQ,EAAE,0CAAE,QAAQ,CAAC;gBACpB,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aACxB,CAAC,CAAC;QACJ,CAAC,CACD,CAAC;IACH,CAAC;IAMD,UAAU,CAAC,GAAW;QACrB,IAAI,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM;YACN,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;IACF,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED,oBAAoB;QACnB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM;QACL,IAAI,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAC3B,oBAAC,SAAS,OAAG;YACb,oBAAC,QAAQ,OAAG;YACZ,oBAAC,MAAM,OAAG;YACV,oBAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,GAAI,CAC3G,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\nimport SearchBox from \"./SearchBox\";\nimport TagsMenu from \"../../../shared/TagsMenu\";\nimport SortBy from \"./SortBy\";\nimport TagsList from \"./TagsList\";\nimport { getStore } from \"../stores/LauncherStore\";\nimport storeActions from \"../stores/StoreActions\";\nimport StoreModel from \"@finsemble/finsemble-api/types/clients/StoreModel\";\n\ninterface IProps {}\n\ninterface IState {\n\ttags: string[];\n\tsearch: string;\n}\n\nlet store: StoreModel | undefined;\n\nexport default class FilterSort extends React.Component<IProps, IState> {\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\ttags: [],\n\t\t\tsearch: \"\",\n\t\t};\n\t\tthis.onSearch = this.onSearch.bind(this);\n\t\tthis.setStateValues = this.setStateValues.bind(this);\n\t\tstore = getStore();\n\t}\n\n\tsetStateValues() {\n\t\tthis.setState({\n\t\t\ttags: storeActions.getAllAppsTags(),\n\t\t});\n\t}\n\n\tonSearch(event: any) {\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tsearch: event.target.value,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tgetStore()?.setValue({\n\t\t\t\t\tfield: \"filterText\",\n\t\t\t\t\tvalue: this.state.search,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Add tag to list in local store\n\t * so that other components get notified\n\t **/\n\tonTagClick(tag: string) {\n\t\tlet tags = storeActions.getTags();\n\n\t\tif (tags.includes(tag)) {\n\t\t\tstoreActions.deleteTag(tag);\n\t\t} else {\n\t\t\tstoreActions.addTag(tag);\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setStateValues();\n\t\tstore?.addListener({ field: \"appFolders.folders\" }, this.setStateValues);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tstore?.removeListener({ field: \"appFolders.folders\" }, this.setStateValues);\n\t}\n\n\trender() {\n\t\tlet activeTags = storeActions.getTags();\n\t\treturn (\n\t\t\t<div className=\"filter-sort\">\n\t\t\t\t<SearchBox />\n\t\t\t\t<TagsList />\n\t\t\t\t<SortBy />\n\t\t\t\t<TagsMenu label=\"Tags\" align=\"right\" list={this.state.tags} active={activeTags} onItemClick={this.onTagClick} />\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { FoldersType, FolderType } from "../../../../types/advancedAppLauncherTypes";
3
- import { StandardError } from "@finsemble/finsemble-core/types/types";
3
+ import { StandardError } from "@finsemble/finsemble-api/types/types";
4
4
  interface IProps {
5
5
  }
6
6
  interface IState {