@finsemble/finsemble-ui 6.3.0 → 6.4.0-beta.2

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 (745) hide show
  1. package/README.md +28 -28
  2. package/package.json +21 -33
  3. package/react/actions/favoriteActions.js.map +1 -1
  4. package/react/actions/linkerActions.js.map +1 -1
  5. package/react/actions/menuActions.js.map +1 -1
  6. package/react/actions/rootActions.js.map +1 -1
  7. package/react/actions/searchActions.js.map +1 -1
  8. package/react/actions/smartDesktopDesignerActions.d.ts +1 -3
  9. package/react/actions/smartDesktopDesignerActions.js +0 -1
  10. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  11. package/react/actions/toolbarActions.js.map +1 -1
  12. package/react/actions/workspaceActions.js.map +1 -1
  13. package/react/assets/css/advancedAppLauncher.css +636 -636
  14. package/react/assets/css/appCatalog.css +1069 -1069
  15. package/react/assets/css/authentication.css +78 -78
  16. package/react/assets/css/button.css +220 -220
  17. package/react/assets/css/core/formElements.css +23 -23
  18. package/react/assets/css/core/icons.css +69 -69
  19. package/react/assets/css/core/notifications.css +75 -75
  20. package/react/assets/css/core/windowFrame.css +36 -36
  21. package/react/assets/css/dashbar.css +78 -78
  22. package/react/assets/css/defaultTheme.css +356 -356
  23. package/react/assets/css/dialogs.css +158 -158
  24. package/react/assets/css/favorites.css +101 -101
  25. package/react/assets/css/finsemble.css +38 -38
  26. package/react/assets/css/focus.css +4 -4
  27. package/react/assets/css/font-finance.css +385 -385
  28. package/react/assets/css/fonts/Open_Sans/LICENSE.txt +202 -202
  29. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +118 -118
  30. package/react/assets/css/fonts/font-finance.svg +124 -124
  31. package/react/assets/css/fonts/icons-reference.html +1174 -1174
  32. package/react/assets/css/linkerWindow.css +124 -124
  33. package/react/assets/css/menus.css +195 -195
  34. package/react/assets/css/notificationsCenter.css +597 -597
  35. package/react/assets/css/processMonitor.css +213 -213
  36. package/react/assets/css/search.css +128 -128
  37. package/react/assets/css/shared/animations.css +99 -99
  38. package/react/assets/css/tags.css +136 -136
  39. package/react/assets/css/toolbar.css +413 -413
  40. package/react/assets/css/userPreferences.css +538 -568
  41. package/react/assets/css/windowTitleBar.css +653 -652
  42. package/react/assets/icons/always-on-top.svg +20 -0
  43. package/react/assets/icons/caret.svg +7 -0
  44. package/react/assets/icons/check-square.svg +5 -5
  45. package/react/assets/icons/check.svg +3 -3
  46. package/react/assets/icons/chevron-left.svg +3 -3
  47. package/react/assets/icons/chevron-right.svg +3 -3
  48. package/react/assets/icons/close.svg +11 -0
  49. package/react/assets/icons/copy.svg +10 -10
  50. package/react/assets/icons/documentation.svg +20 -0
  51. package/react/assets/icons/exclamation-circle.svg +4 -4
  52. package/react/assets/icons/external-link.svg +12 -12
  53. package/react/assets/icons/flag.svg +10 -10
  54. package/react/assets/icons/folder.svg +3 -3
  55. package/react/assets/icons/font.svg +3 -3
  56. package/react/assets/icons/globe.svg +3 -3
  57. package/react/assets/icons/hdd.svg +9 -9
  58. package/react/assets/icons/key.svg +10 -10
  59. package/react/assets/icons/life-ring.svg +3 -3
  60. package/react/assets/icons/linker.svg +18 -0
  61. package/react/assets/icons/lock.svg +5 -5
  62. package/react/assets/icons/magic.svg +15 -15
  63. package/react/assets/icons/maximize.svg +16 -0
  64. package/react/assets/icons/minimize.svg +15 -0
  65. package/react/assets/icons/moon.svg +10 -10
  66. package/react/assets/icons/paint-roller.svg +3 -3
  67. package/react/assets/icons/pencil.svg +10 -10
  68. package/react/assets/icons/plus.svg +3 -3
  69. package/react/assets/icons/question-circle.svg +5 -5
  70. package/react/assets/icons/search.svg +3 -3
  71. package/react/assets/icons/sun.svg +9 -9
  72. package/react/assets/icons/times.svg +3 -3
  73. package/react/assets/icons/toggle-off.svg +6 -6
  74. package/react/assets/icons/toggle-on.svg +6 -6
  75. package/react/assets/icons/toolbar.svg +12 -0
  76. package/react/assets/icons/tools.svg +3 -3
  77. package/react/assets/icons/trash.svg +12 -12
  78. package/react/assets/icons/upload.svg +10 -10
  79. package/react/assets/icons/window.svg +3 -3
  80. package/react/assets/img/finsemble-display.png +0 -0
  81. package/react/componentTemplateGenerator.js +85 -85
  82. package/react/componentTemplateGenerator.js.map +1 -1
  83. package/react/components/FinsembleProvider.js.map +1 -1
  84. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  85. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  86. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  87. package/react/components/appCatalog/components/AppList.js.map +1 -1
  88. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  89. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  90. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  91. package/react/components/appCatalog/components/Hero.js.map +1 -1
  92. package/react/components/appCatalog/components/Home.js.map +1 -1
  93. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  94. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  95. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  96. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  97. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  98. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  99. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  100. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  101. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  102. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  103. package/react/components/appCatalog/components/Showcase/defaults.js.map +1 -1
  104. package/react/components/appCatalog/components/Tag.js.map +1 -1
  105. package/react/components/appCatalog/components/Toast.js.map +1 -1
  106. package/react/components/appCatalog/components/helpers.js.map +1 -1
  107. package/react/components/appCatalog/index.js.map +1 -1
  108. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  109. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  110. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  111. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  112. package/react/components/common/Accordion.d.ts +11 -0
  113. package/react/components/common/Accordion.js +20 -0
  114. package/react/components/common/Accordion.js.map +1 -0
  115. package/react/components/common/Button.js.map +1 -1
  116. package/react/components/common/ButtonIcon.js.map +1 -1
  117. package/react/components/common/ButtonRow.js.map +1 -1
  118. package/react/components/common/ButtonTile.js.map +1 -1
  119. package/react/components/common/Checkbox.d.ts +1 -0
  120. package/react/components/common/Checkbox.js +3 -1
  121. package/react/components/common/Checkbox.js.map +1 -1
  122. package/react/components/common/ColorPicker.js.map +1 -1
  123. package/react/components/common/DropZone.js.map +1 -1
  124. package/react/components/common/DropdownButton.js.map +1 -1
  125. package/react/components/common/FileInput.d.ts +2 -1
  126. package/react/components/common/FileInput.js +9 -4
  127. package/react/components/common/FileInput.js.map +1 -1
  128. package/react/components/common/FinsembleIcon.d.ts +1 -1
  129. package/react/components/common/FinsembleIcon.js +16 -0
  130. package/react/components/common/FinsembleIcon.js.map +1 -1
  131. package/react/components/common/FinsembleSelect.js.map +1 -1
  132. package/react/components/common/FinsembleToggle.js.map +1 -1
  133. package/react/components/common/Header.js +1 -1
  134. package/react/components/common/Header.js.map +1 -1
  135. package/react/components/common/ImagePreview.js.map +1 -1
  136. package/react/components/common/InputTable.d.ts +11 -0
  137. package/react/components/common/InputTable.js +50 -0
  138. package/react/components/common/InputTable.js.map +1 -0
  139. package/react/components/common/LoadingSpinner.js.map +1 -1
  140. package/react/components/common/Tab.js.map +1 -1
  141. package/react/components/common/Tooltip.js.map +1 -1
  142. package/react/components/common/css/accordion.css +99 -0
  143. package/react/components/common/css/application-edit-page.css +324 -117
  144. package/react/components/common/css/application-list.css +49 -47
  145. package/react/components/common/css/button.css +166 -164
  146. package/react/components/common/css/checkbox.css +30 -0
  147. package/react/components/common/css/color-picker.css +52 -52
  148. package/react/components/common/css/drop-zone.css +17 -17
  149. package/react/components/common/css/file-input.css +65 -49
  150. package/react/components/common/css/header.css +30 -43
  151. package/react/components/common/css/icon.css +13 -13
  152. package/react/components/common/css/image-preview.css +57 -57
  153. package/react/components/common/css/loading-spinner.css +39 -39
  154. package/react/components/common/css/selector.css +51 -51
  155. package/react/components/common/css/styles.css +127 -128
  156. package/react/components/common/css/tab.css +56 -56
  157. package/react/components/common/css/toggle.css +32 -32
  158. package/react/components/common/css/tooltip.css +78 -78
  159. package/react/components/common/file_helpers.js.map +1 -1
  160. package/react/components/common/fixtures/FinsembleIcon.css +4 -4
  161. package/react/components/common/helpers.js.map +1 -1
  162. package/react/components/common/stories/Accordion.stories.d.ts +14 -0
  163. package/react/components/common/stories/Accordion.stories.js +42 -0
  164. package/react/components/common/stories/Accordion.stories.js.map +1 -0
  165. package/react/components/common/stories/Button.stories.js.map +1 -1
  166. package/react/components/common/stories/ButtonIcon.stories.js.map +1 -1
  167. package/react/components/common/stories/ButtonRow.stories.js.map +1 -1
  168. package/react/components/common/stories/ButtonTile.stories.js.map +1 -1
  169. package/react/components/common/stories/Checkbox.stories.js.map +1 -1
  170. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  171. package/react/components/common/stories/DropZone.stories.js.map +1 -1
  172. package/react/components/common/stories/DropdownButton.stories.d.ts +11 -0
  173. package/react/components/common/stories/DropdownButton.stories.js +12 -0
  174. package/react/components/common/stories/DropdownButton.stories.js.map +1 -1
  175. package/react/components/common/stories/FileInput.stories.d.ts +2 -1
  176. package/react/components/common/stories/FileInput.stories.js +6 -0
  177. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  178. package/react/components/common/stories/FinsembleIcon.stories.js +1 -0
  179. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  180. package/react/components/common/stories/FinsembleSelect.stories.js.map +1 -1
  181. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  182. package/react/components/common/stories/Header.stories.js.map +1 -1
  183. package/react/components/common/stories/ImagePreview.stories.js.map +1 -1
  184. package/react/components/common/stories/InputTable.stories.d.ts +12 -0
  185. package/react/components/common/stories/InputTable.stories.js +35 -0
  186. package/react/components/common/stories/InputTable.stories.js.map +1 -0
  187. package/react/components/common/stories/LoadingSpinner.stories.js.map +1 -1
  188. package/react/components/common/stories/Tab.stories.js.map +1 -1
  189. package/react/components/common/stories/Tooltip.stories.js.map +1 -1
  190. package/react/components/{smartDesktopDesigner/tests/ApplicationEdit.spec.d.ts → common/tests/Accordion.spec.d.ts} +0 -0
  191. package/react/components/common/tests/Accordion.spec.js +53 -0
  192. package/react/components/common/tests/Accordion.spec.js.map +1 -0
  193. package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
  194. package/react/components/common/tests/Checkbox.spec.js +5 -3
  195. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  196. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  197. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  198. package/react/components/common/tests/FileInput.spec.js +20 -5
  199. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  200. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  201. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  202. package/react/components/common/tests/Header.spec.js +6 -2
  203. package/react/components/common/tests/Header.spec.js.map +1 -1
  204. package/react/components/common/tests/ImagePreview.spec.js.map +1 -1
  205. package/react/components/{smartDesktopDesigner/tests/ApplicationSetup.spec.d.ts → common/tests/InputTable.spec.d.ts} +0 -0
  206. package/react/components/common/tests/InputTable.spec.js +166 -0
  207. package/react/components/common/tests/InputTable.spec.js.map +1 -0
  208. package/react/components/common/tests/Tab.spec.js.map +1 -1
  209. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  210. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  211. package/react/components/favorites/FavoritesShell.js.map +1 -1
  212. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  213. package/react/components/favorites/FavoritesShell.stories.js.map +1 -1
  214. package/react/components/favorites/index.js.map +1 -1
  215. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  216. package/react/components/fdc3Resolver/ResolverDialog.css +126 -126
  217. package/react/components/fdc3Resolver/ResolverDialog.js +1 -1
  218. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  219. package/react/components/fdc3Resolver/ResolverDialog.spec.js +1 -1
  220. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  221. package/react/components/fdc3Resolver/ResolverDialog.stories.js +13 -0
  222. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  223. package/react/components/icon/Icon.js.map +1 -1
  224. package/react/components/icon/index.js.map +1 -1
  225. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  226. package/react/components/legacyControls/FinsembleDialogButton.js +1 -1
  227. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  228. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  229. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  230. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  231. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  232. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  233. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  234. package/react/components/legacyControls/stories/FinsembleDialog.stories.js.map +1 -1
  235. package/react/components/legacyControls/stories/FinsembleDialogButton.stories.js.map +1 -1
  236. package/react/components/legacyControls/stories/FinsembleDialogQuestion.stories.js.map +1 -1
  237. package/react/components/legacyControls/stories/FinsembleDialogTextInput.stories.js.map +1 -1
  238. package/react/components/legacyControls/tests/FinsembleDialog.spec.js.map +1 -1
  239. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  240. package/react/components/legacyControls/tests/FinsembleDialogQuestion.spec.js.map +1 -1
  241. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  242. package/react/components/linker/LinkerMenu.js.map +1 -1
  243. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  244. package/react/components/linker/index.js.map +1 -1
  245. package/react/components/linker/remoteRedux.js.map +1 -1
  246. package/react/components/menu/Menu.d.ts +1 -0
  247. package/react/components/menu/Menu.js.map +1 -1
  248. package/react/components/menu/MenuAutoResizer.d.ts +2 -1
  249. package/react/components/menu/MenuAutoResizer.js +4 -3
  250. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  251. package/react/components/menu/MenuContent.js.map +1 -1
  252. package/react/components/menu/MenuHotKey.js.map +1 -1
  253. package/react/components/menu/MenuItem.js.map +1 -1
  254. package/react/components/menu/MenuPortal.js +99 -92
  255. package/react/components/menu/MenuPortal.js.map +1 -1
  256. package/react/components/menu/MenuShell.d.ts +1 -0
  257. package/react/components/menu/MenuShell.js +3 -2
  258. package/react/components/menu/MenuShell.js.map +1 -1
  259. package/react/components/menu/MenuToggle.js.map +1 -1
  260. package/react/components/menu/index.js.map +1 -1
  261. package/react/components/menu/keyboardNavigation.js.map +1 -1
  262. package/react/components/menu/menuContext.d.ts +1 -0
  263. package/react/components/menu/menuContext.js.map +1 -1
  264. package/react/components/menu/menuHelpers.d.ts +1 -1
  265. package/react/components/menu/menuHelpers.js +2 -2
  266. package/react/components/menu/menuHelpers.js.map +1 -1
  267. package/react/components/notifications/components/NoNotifications.js.map +1 -1
  268. package/react/components/notifications/components/drawer/Drawer.js.map +1 -1
  269. package/react/components/notifications/components/drawer/DrawerControls.js +30 -6
  270. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  271. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  272. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +2 -0
  273. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  274. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +20 -27
  275. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  276. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  277. package/react/components/notifications/components/shared/IconButton.js +5 -1
  278. package/react/components/notifications/components/shared/IconButton.js.map +1 -1
  279. package/react/components/notifications/components/shared/NotificationCardShell.js +1 -1
  280. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  281. package/react/components/notifications/components/shared/OverflowMenu.js +5 -1
  282. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  283. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyActions.js.map +1 -1
  284. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyContentLogo.js.map +1 -1
  285. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  286. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderControls.js.map +1 -1
  287. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderLogo.js.map +1 -1
  288. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  289. package/react/components/notifications/components/views/CardView.js.map +1 -1
  290. package/react/components/notifications/components/views/ListView.js +1 -1
  291. package/react/components/notifications/components/views/ListView.js.map +1 -1
  292. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  293. package/react/components/notifications/constants.js.map +1 -1
  294. package/react/components/notifications/icons/Card.js.map +1 -1
  295. package/react/components/notifications/icons/Chevron.js.map +1 -1
  296. package/react/components/notifications/icons/CloseIcon.js.map +1 -1
  297. package/react/components/notifications/icons/EnvelopeClose.js.map +1 -1
  298. package/react/components/notifications/icons/EnvelopeOpen.js.map +1 -1
  299. package/react/components/notifications/icons/SnoozeIcon.js.map +1 -1
  300. package/react/components/notifications/index.js.map +1 -1
  301. package/react/components/notifications/notificationsContext.js.map +1 -1
  302. package/react/components/notifications/types.js.map +1 -1
  303. package/react/components/notifications/utils.js.map +1 -1
  304. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  305. package/react/components/processMonitor/ProcessMonitorTypes.js.map +1 -1
  306. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  307. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  308. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  309. package/react/components/processMonitor/constants.js.map +1 -1
  310. package/react/components/processMonitor/helpers.js.map +1 -1
  311. package/react/components/processMonitor/helpers.spec.js.map +1 -1
  312. package/react/components/processMonitor/index.js.map +1 -1
  313. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +1 -0
  314. package/react/components/processMonitor/stores/ProcessMonitorStore.js +51 -50
  315. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  316. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  317. package/react/components/quickComponentForm/index.js.map +1 -1
  318. package/react/components/quickComponentForm/quickComponent.css +3 -3
  319. package/react/components/search/Highlight.js.map +1 -1
  320. package/react/components/search/Highlight.spec.js.map +1 -1
  321. package/react/components/search/Highlight.stories.js.map +1 -1
  322. package/react/components/search/Search.js.map +1 -1
  323. package/react/components/search/SearchBestMatch.js.map +1 -1
  324. package/react/components/search/SearchInput.js.map +1 -1
  325. package/react/components/search/SearchProviderResults.js.map +1 -1
  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 +1 -1
  335. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  336. package/react/components/shared/NavigationButton.js.map +1 -1
  337. package/react/components/shared/Tag.js.map +1 -1
  338. package/react/components/shared/TagsMenu.js.map +1 -1
  339. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  340. package/react/components/shared/linkerUtil.js.map +1 -1
  341. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  342. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
  343. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  344. package/react/components/shared/validateURL.js.map +1 -1
  345. package/react/components/shared/validateURL.spec.js.map +1 -1
  346. package/react/components/singleInputDialog/SingleInputDialog.css +3 -3
  347. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  348. package/react/components/singleInputDialog/SingleInputDialog.spec.js.map +1 -1
  349. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  350. package/react/components/singleInputDialog/index.js.map +1 -1
  351. package/react/components/smartDesktopDesigner/AddApp.d.ts +14 -0
  352. package/react/components/smartDesktopDesigner/AddApp.js +60 -0
  353. package/react/components/smartDesktopDesigner/AddApp.js.map +1 -0
  354. package/react/components/smartDesktopDesigner/AppEditAccess.js +16 -32
  355. package/react/components/smartDesktopDesigner/AppEditAccess.js.map +1 -1
  356. package/react/components/smartDesktopDesigner/AppEditPage.d.ts +5 -19
  357. package/react/components/smartDesktopDesigner/AppEditPage.js +548 -59
  358. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  359. package/react/components/smartDesktopDesigner/Appearance.css +27 -94
  360. package/react/components/smartDesktopDesigner/Appearance.helpers.js.map +1 -1
  361. package/react/components/smartDesktopDesigner/Appearance.js +1 -1
  362. package/react/components/smartDesktopDesigner/Appearance.js.map +1 -1
  363. package/react/components/smartDesktopDesigner/Application.d.ts +1 -0
  364. package/react/components/smartDesktopDesigner/Application.js +151 -93
  365. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  366. package/react/components/smartDesktopDesigner/ApplicationList.d.ts +2 -1
  367. package/react/components/smartDesktopDesigner/ApplicationList.js +7 -3
  368. package/react/components/smartDesktopDesigner/ApplicationList.js.map +1 -1
  369. package/react/components/smartDesktopDesigner/Applications.d.ts +0 -3
  370. package/react/components/smartDesktopDesigner/Applications.js +52 -102
  371. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  372. package/react/components/smartDesktopDesigner/AssetsPage.css +26 -26
  373. package/react/components/smartDesktopDesigner/AssetsPage.js.map +1 -1
  374. package/react/components/smartDesktopDesigner/Authentication.js +2 -9
  375. package/react/components/smartDesktopDesigner/Authentication.js.map +1 -1
  376. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js +8 -1
  377. package/react/components/smartDesktopDesigner/AuthenticationProviderConfig.js.map +1 -1
  378. package/react/components/smartDesktopDesigner/Content.js.map +1 -1
  379. package/react/components/smartDesktopDesigner/ContentHeader.d.ts +5 -0
  380. package/react/components/smartDesktopDesigner/ContentHeader.js +10 -0
  381. package/react/components/smartDesktopDesigner/ContentHeader.js.map +1 -0
  382. package/react/components/smartDesktopDesigner/CurrentView.js +2 -1
  383. package/react/components/smartDesktopDesigner/CurrentView.js.map +1 -1
  384. package/react/components/smartDesktopDesigner/Export.d.ts +1 -0
  385. package/react/components/smartDesktopDesigner/Export.js +40 -9
  386. package/react/components/smartDesktopDesigner/Export.js.map +1 -1
  387. package/react/components/smartDesktopDesigner/ExportCloud.d.ts +3 -1
  388. package/react/components/smartDesktopDesigner/ExportCloud.js +4 -6
  389. package/react/components/smartDesktopDesigner/ExportCloud.js.map +1 -1
  390. package/react/components/smartDesktopDesigner/ExportDeployInfo.js.map +1 -1
  391. package/react/components/smartDesktopDesigner/ExportZip.d.ts +3 -1
  392. package/react/components/smartDesktopDesigner/ExportZip.js +8 -3
  393. package/react/components/smartDesktopDesigner/ExportZip.js.map +1 -1
  394. package/react/components/smartDesktopDesigner/GettingStarted.d.ts +1 -0
  395. package/react/components/smartDesktopDesigner/GettingStarted.js +11 -25
  396. package/react/components/smartDesktopDesigner/GettingStarted.js.map +1 -1
  397. package/react/components/smartDesktopDesigner/Navigation.d.ts +2 -2
  398. package/react/components/smartDesktopDesigner/Navigation.js +17 -15
  399. package/react/components/smartDesktopDesigner/Navigation.js.map +1 -1
  400. package/react/components/smartDesktopDesigner/ProjectErrors.js.map +1 -1
  401. package/react/components/smartDesktopDesigner/Publish.js.map +1 -1
  402. package/react/components/smartDesktopDesigner/PublishProgress.js.map +1 -1
  403. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +3 -3
  404. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +11 -17
  405. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  406. package/react/components/smartDesktopDesigner/ThemePage.css +109 -110
  407. package/react/components/smartDesktopDesigner/ThemePage.js +0 -7
  408. package/react/components/smartDesktopDesigner/ThemePage.js.map +1 -1
  409. package/react/components/smartDesktopDesigner/Themes.js +0 -2
  410. package/react/components/smartDesktopDesigner/Themes.js.map +1 -1
  411. package/react/components/smartDesktopDesigner/Toolbar.d.ts +15 -0
  412. package/react/components/smartDesktopDesigner/Toolbar.js +123 -0
  413. package/react/components/smartDesktopDesigner/Toolbar.js.map +1 -0
  414. package/react/components/smartDesktopDesigner/View.js +1 -1
  415. package/react/components/smartDesktopDesigner/View.js.map +1 -1
  416. package/react/components/smartDesktopDesigner/common/fsbl_functions.d.ts +1 -1
  417. package/react/components/smartDesktopDesigner/common/fsbl_functions.js +2 -2
  418. package/react/components/smartDesktopDesigner/common/fsbl_functions.js.map +1 -1
  419. package/react/components/smartDesktopDesigner/common/getCSSVars.js.map +1 -1
  420. package/react/components/smartDesktopDesigner/common/views.d.ts +2 -36
  421. package/react/components/smartDesktopDesigner/common/views.js +150 -111
  422. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  423. package/react/components/smartDesktopDesigner/css/appearance.css +18 -10
  424. package/react/components/smartDesktopDesigner/css/applications.css +167 -127
  425. package/react/components/smartDesktopDesigner/css/authentication.css +119 -125
  426. package/react/components/smartDesktopDesigner/css/buttons.css +12 -12
  427. package/react/components/smartDesktopDesigner/css/export.css +176 -163
  428. package/react/components/smartDesktopDesigner/css/getting-started.css +28 -6
  429. package/react/components/smartDesktopDesigner/css/nav.css +120 -93
  430. package/react/components/smartDesktopDesigner/css/project-errors.css +15 -15
  431. package/react/components/smartDesktopDesigner/css/project-header.css +124 -121
  432. package/react/components/smartDesktopDesigner/css/styles.css +178 -179
  433. package/react/components/smartDesktopDesigner/css/views.css +23 -16
  434. package/react/components/smartDesktopDesigner/fixtures/apps.d.ts +2 -0
  435. package/react/components/smartDesktopDesigner/fixtures/apps.js +41 -6
  436. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  437. package/react/components/smartDesktopDesigner/fixtures/authenticationProps.js.map +1 -1
  438. package/react/components/smartDesktopDesigner/fixtures/configTemplate.js.map +1 -1
  439. package/react/components/smartDesktopDesigner/fixtures/exportProps.js +3 -0
  440. package/react/components/smartDesktopDesigner/fixtures/exportProps.js.map +1 -1
  441. package/react/components/smartDesktopDesigner/fixtures/projectErrorsProps.js.map +1 -1
  442. package/react/components/smartDesktopDesigner/fixtures/publishProgress.js.map +1 -1
  443. package/react/components/smartDesktopDesigner/fixtures/themeProps.js.map +1 -1
  444. package/react/components/smartDesktopDesigner/fixtures/views.d.ts +2 -2
  445. package/react/components/smartDesktopDesigner/fixtures/views.js +58 -26
  446. package/react/components/smartDesktopDesigner/fixtures/views.js.map +1 -1
  447. package/react/components/smartDesktopDesigner/sdd_helpers.d.ts +1 -1
  448. package/react/components/smartDesktopDesigner/sdd_helpers.js +4 -3
  449. package/react/components/smartDesktopDesigner/sdd_helpers.js.map +1 -1
  450. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.d.ts +3 -1
  451. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js +12 -33
  452. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  453. package/react/components/smartDesktopDesigner/stories/Appearance.stories.js.map +1 -1
  454. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.d.ts +2 -1
  455. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js +8 -1
  456. package/react/components/smartDesktopDesigner/stories/ApplicationList.stories.js.map +1 -1
  457. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  458. package/react/components/smartDesktopDesigner/stories/AssetsPage.stories.js.map +1 -1
  459. package/react/components/smartDesktopDesigner/stories/Authentication.stories.js.map +1 -1
  460. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.d.ts +10 -0
  461. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.js +13 -0
  462. package/react/components/smartDesktopDesigner/stories/ContentHeader.stories.js.map +1 -0
  463. package/react/components/smartDesktopDesigner/stories/Export.stories.js.map +1 -1
  464. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.d.ts +1 -1
  465. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js +1 -1
  466. package/react/components/smartDesktopDesigner/stories/ExportCloud.stories.js.map +1 -1
  467. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.d.ts +1 -1
  468. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js +1 -1
  469. package/react/components/smartDesktopDesigner/stories/ExportZip.stories.js.map +1 -1
  470. package/react/components/smartDesktopDesigner/stories/GettingStarted.stories.js.map +1 -1
  471. package/react/components/smartDesktopDesigner/stories/Navigation.stories.js.map +1 -1
  472. package/react/components/smartDesktopDesigner/stories/ProjectErrors.stories.js.map +1 -1
  473. package/react/components/smartDesktopDesigner/stories/Publish.stories.js.map +1 -1
  474. package/react/components/smartDesktopDesigner/stories/PublishProgress.stories.js.map +1 -1
  475. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js +7 -1
  476. package/react/components/smartDesktopDesigner/stories/SmartDesktopDesigner.stories.js.map +1 -1
  477. package/react/components/smartDesktopDesigner/stories/ThemePage.stories.js.map +1 -1
  478. package/react/components/smartDesktopDesigner/stories/Themes.stories.js.map +1 -1
  479. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.d.ts +14 -0
  480. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.js +38 -0
  481. package/react/components/smartDesktopDesigner/stories/Toolbar.stories.js.map +1 -0
  482. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js +73 -122
  483. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  484. package/react/components/smartDesktopDesigner/tests/ApplicationList.spec.js.map +1 -1
  485. package/react/components/smartDesktopDesigner/tests/Applications.spec.d.ts +1 -1
  486. package/react/components/smartDesktopDesigner/tests/Applications.spec.js +61 -560
  487. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  488. package/react/components/smartDesktopDesigner/tests/Authentication.spec.js.map +1 -1
  489. package/react/components/smartDesktopDesigner/tests/{ProjectHeader.spec.d.ts → ContentHeader.spec.d.ts} +0 -0
  490. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.js +31 -0
  491. package/react/components/smartDesktopDesigner/tests/ContentHeader.spec.js.map +1 -0
  492. package/react/components/smartDesktopDesigner/tests/Export.spec.js +129 -0
  493. package/react/components/smartDesktopDesigner/tests/Export.spec.js.map +1 -1
  494. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js +7 -0
  495. package/react/components/smartDesktopDesigner/tests/ExportZip.spec.js.map +1 -1
  496. package/react/components/smartDesktopDesigner/tests/Navigation.spec.js.map +1 -1
  497. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js +3 -14
  498. package/react/components/smartDesktopDesigner/tests/ProjectErrors.spec.js.map +1 -1
  499. package/react/components/smartDesktopDesigner/tests/Publish.spec.js.map +1 -1
  500. package/react/components/smartDesktopDesigner/tests/PublishProgess.spec.js.map +1 -1
  501. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js +2 -31
  502. package/react/components/smartDesktopDesigner/tests/SmartDesktopDesigner.spec.js.map +1 -1
  503. package/react/components/smartDesktopDesigner/tests/Themes.spec.js.map +1 -1
  504. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.d.ts +1 -0
  505. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.js +203 -0
  506. package/react/components/smartDesktopDesigner/tests/Toolbar.spec.js.map +1 -0
  507. package/react/components/smartDesktopDesigner/tests/a11y_helper.js.map +1 -1
  508. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.d.ts +1 -0
  509. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.js +18 -0
  510. package/react/components/smartDesktopDesigner/tests/sdd_helpers.spec.js.map +1 -0
  511. package/react/components/smartDesktopDesigner/themeDefinitions.js.map +1 -1
  512. package/react/components/system/System.js.map +1 -1
  513. package/react/components/system/System.spec.js.map +1 -1
  514. package/react/components/system/System.stories.js.map +1 -1
  515. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  516. package/react/components/system/index.js.map +1 -1
  517. package/react/components/toolbar/AutoArrange.js.map +1 -1
  518. package/react/components/toolbar/DragHandle.js.map +1 -1
  519. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  520. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  521. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  522. package/react/components/toolbar/NotificationControl.js.map +1 -1
  523. package/react/components/toolbar/RevealAll.js.map +1 -1
  524. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  525. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  526. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  527. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  528. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  529. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  530. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncherMenu.js.map +1 -1
  531. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  532. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  533. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  534. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  535. package/react/components/toolbar/advancedAppLauncher/components/AppTagsList.js.map +1 -1
  536. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  537. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  538. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +47 -45
  539. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  540. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  541. package/react/components/toolbar/advancedAppLauncher/components/NoAppsFound.js.map +1 -1
  542. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  543. package/react/components/toolbar/advancedAppLauncher/components/SortBy.js.map +1 -1
  544. package/react/components/toolbar/advancedAppLauncher/components/TagsList.js.map +1 -1
  545. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  546. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  547. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  548. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  549. package/react/components/toolbar/advancedAppLauncher/stores/LauncherStore.js.map +1 -1
  550. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  551. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  552. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  553. package/react/components/toolbar/appLauncher/DynamicAppLauncher.js.map +1 -1
  554. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +1 -0
  555. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  556. package/react/components/toolbar/appLauncher/appLauncher.css +30 -30
  557. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  558. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +1 -0
  559. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +17 -34
  560. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  561. package/react/components/toolbar/dashbar/Dashbar.js +3 -1
  562. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  563. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  564. package/react/components/toolbar/index.js.map +1 -1
  565. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +1 -1
  566. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  567. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +1 -1
  568. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  569. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  570. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +1 -1
  571. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  572. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +1 -1
  573. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  574. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +90 -90
  575. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  576. package/react/components/userPreferences/UserPreferenceTypes.js.map +1 -1
  577. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  578. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  579. package/react/components/userPreferences/UserPreferencesWrapper.js.map +1 -1
  580. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  581. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  582. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  583. package/react/components/userPreferences/components/content/DashbarEditorItem.js.map +1 -1
  584. package/react/components/userPreferences/components/content/General.js.map +1 -1
  585. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  586. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  587. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  588. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  589. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  590. package/react/components/userPreferences/components/content/notificationViews/notificationViewsUtils.js.map +1 -1
  591. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  592. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  593. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js.map +1 -1
  594. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  595. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js.map +1 -1
  596. package/react/components/userPreferences/index.js.map +1 -1
  597. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  598. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  599. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js.map +1 -1
  600. package/react/components/userPreferences/stories/General.stories.js.map +1 -1
  601. package/react/components/userPreferences/stories/Notifications.stories.js.map +1 -1
  602. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js.map +1 -1
  603. package/react/components/userPreferences/stories/NotificationsSources.stories.js.map +1 -1
  604. package/react/components/userPreferences/stories/UserPreferences.stories.js.map +1 -1
  605. package/react/components/userPreferences/stories/WorkspaceButton.stories.js.map +1 -1
  606. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js.map +1 -1
  607. package/react/components/userPreferences/stories/WorkspaceItem.stories.js.map +1 -1
  608. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js.map +1 -1
  609. package/react/components/userPreferences/stories/Workspaces.stories.js.map +1 -1
  610. package/react/components/userPreferences/tests/ContentSection.spec.js.map +1 -1
  611. package/react/components/userPreferences/tests/DashbarEditor.spec.js.map +1 -1
  612. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js.map +1 -1
  613. package/react/components/userPreferences/tests/General.spec.js.map +1 -1
  614. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -1
  615. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js.map +1 -1
  616. package/react/components/userPreferences/tests/Notifications.spec.js.map +1 -1
  617. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  618. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js.map +1 -1
  619. package/react/components/userPreferences/tests/ScheduledRestart.spec.js +1 -1
  620. package/react/components/userPreferences/tests/ScheduledRestart.spec.js.map +1 -1
  621. package/react/components/userPreferences/tests/WorkspaceButton.spec.js.map +1 -1
  622. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js.map +1 -1
  623. package/react/components/userPreferences/tests/WorkspaceItem.spec.js.map +1 -1
  624. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js.map +1 -1
  625. package/react/components/utils.js.map +1 -1
  626. package/react/components/windowTitleBar/WindowTitleBarShell.js +8 -1
  627. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  628. package/react/components/windowTitleBar/components/center/Tab.d.ts +0 -1
  629. package/react/components/windowTitleBar/components/center/Tab.js +2 -2
  630. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  631. package/react/components/windowTitleBar/components/center/TabList.d.ts +0 -1
  632. package/react/components/windowTitleBar/components/center/TabList.js +16 -79
  633. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  634. package/react/components/windowTitleBar/components/center/TabRegion.js.map +1 -1
  635. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  636. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  637. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  638. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  639. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  640. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  641. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  642. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  643. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +7 -0
  644. package/react/components/windowTitleBar/components/right/MaximizeButton.js +11 -1
  645. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  646. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  647. package/react/components/windowTitleBar/components/windowTitle.d.ts +5 -4
  648. package/react/components/windowTitleBar/components/windowTitle.js +102 -39
  649. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  650. package/react/components/windowTitleBar/index.js.map +1 -1
  651. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +5 -1
  652. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  653. package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +1 -1
  654. package/react/components/windowTitleBar/windowTitleBarContext.js.map +1 -1
  655. package/react/components/yesNoDialog/Timer.spec.js.map +1 -1
  656. package/react/components/yesNoDialog/Timer.stories.js.map +1 -1
  657. package/react/components/yesNoDialog/YesNoDialog.css +3 -3
  658. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  659. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  660. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  661. package/react/components/yesNoDialog/index.js.map +1 -1
  662. package/react/components/yesNoDialog/timer.js.map +1 -1
  663. package/react/enzymeSetup.js +1 -1
  664. package/react/enzymeSetup.js.map +1 -1
  665. package/react/hooks/index.js.map +1 -1
  666. package/react/hooks/useAuth.js.map +1 -1
  667. package/react/hooks/useDashbar.d.ts +8 -0
  668. package/react/hooks/useDashbar.js +104 -0
  669. package/react/hooks/useDashbar.js.map +1 -0
  670. package/react/hooks/useDeepEffect.js.map +1 -1
  671. package/react/hooks/useFavorites.js.map +1 -1
  672. package/react/hooks/useFavoritesShell.js.map +1 -1
  673. package/react/hooks/useHotkey.js.map +1 -1
  674. package/react/hooks/useLinker.js.map +1 -1
  675. package/react/hooks/useMenu.js.map +1 -1
  676. package/react/hooks/useNotifications.js.map +1 -1
  677. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  678. package/react/hooks/usePubSub.js.map +1 -1
  679. package/react/hooks/useSearch.js.map +1 -1
  680. package/react/hooks/useToolbar.d.ts +0 -6
  681. package/react/hooks/useToolbar.js +0 -101
  682. package/react/hooks/useToolbar.js.map +1 -1
  683. package/react/hooks/useWorkspace.js.map +1 -1
  684. package/react/reducers/favoriteReducer.js.map +1 -1
  685. package/react/reducers/linkerReducer.js.map +1 -1
  686. package/react/reducers/menuReducer.js.map +1 -1
  687. package/react/reducers/rootReducer.d.ts +0 -4
  688. package/react/reducers/rootReducer.js.map +1 -1
  689. package/react/reducers/searchReducer.js.map +1 -1
  690. package/react/reducers/smartDesktopDesignerReducer.js +0 -3
  691. package/react/reducers/smartDesktopDesignerReducer.js.map +1 -1
  692. package/react/reducers/toolbarReducer.js.map +1 -1
  693. package/react/reducers/workspaceReducer.js.map +1 -1
  694. package/react/store.d.ts +0 -8
  695. package/react/store.js.map +1 -1
  696. package/react/types/advancedAppLauncherTypes.js.map +1 -1
  697. package/react/types/dashbarTypes.js.map +1 -1
  698. package/react/types/favoriteTypes.js.map +1 -1
  699. package/react/types/fdc3.d.ts +7 -35
  700. package/react/types/fdc3.js.map +1 -1
  701. package/react/types/hotkeyTypes.js.map +1 -1
  702. package/react/types/iconTypes.js.map +1 -1
  703. package/react/types/linkerTypes.js.map +1 -1
  704. package/react/types/searchTypes.js.map +1 -1
  705. package/react/types/smartDesktopDesignerTypes.d.ts +45 -5
  706. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  707. package/react/types/windowTitleBar.d.ts +3 -2
  708. package/react/types/windowTitleBar.js.map +1 -1
  709. package/react/types/workspaceTypes.js.map +1 -1
  710. package/react/components/common/FontSizeSelector.d.ts +0 -7
  711. package/react/components/common/FontSizeSelector.js +0 -42
  712. package/react/components/common/FontSizeSelector.js.map +0 -1
  713. package/react/components/common/stories/FontSizeSelector.stories.d.ts +0 -12
  714. package/react/components/common/stories/FontSizeSelector.stories.js +0 -24
  715. package/react/components/common/stories/FontSizeSelector.stories.js.map +0 -1
  716. package/react/components/smartDesktopDesigner/ApplicationEdit.d.ts +0 -25
  717. package/react/components/smartDesktopDesigner/ApplicationEdit.js +0 -103
  718. package/react/components/smartDesktopDesigner/ApplicationEdit.js.map +0 -1
  719. package/react/components/smartDesktopDesigner/ApplicationSetup.d.ts +0 -23
  720. package/react/components/smartDesktopDesigner/ApplicationSetup.js +0 -73
  721. package/react/components/smartDesktopDesigner/ApplicationSetup.js.map +0 -1
  722. package/react/components/smartDesktopDesigner/ProjectHeader.d.ts +0 -14
  723. package/react/components/smartDesktopDesigner/ProjectHeader.js +0 -70
  724. package/react/components/smartDesktopDesigner/ProjectHeader.js.map +0 -1
  725. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.d.ts +0 -4
  726. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js +0 -45
  727. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js.map +0 -1
  728. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.d.ts +0 -3
  729. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js +0 -29
  730. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js.map +0 -1
  731. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.d.ts +0 -12
  732. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js +0 -21
  733. package/react/components/smartDesktopDesigner/stories/ApplicationEdit.stories.js.map +0 -1
  734. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.d.ts +0 -12
  735. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js +0 -28
  736. package/react/components/smartDesktopDesigner/stories/ApplicationSetup.stories.js.map +0 -1
  737. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.d.ts +0 -10
  738. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js +0 -19
  739. package/react/components/smartDesktopDesigner/stories/ProjectHeader.stories.js.map +0 -1
  740. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js +0 -66
  741. package/react/components/smartDesktopDesigner/tests/ApplicationEdit.spec.js.map +0 -1
  742. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js +0 -41
  743. package/react/components/smartDesktopDesigner/tests/ApplicationSetup.spec.js.map +0 -1
  744. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js +0 -27
  745. package/react/components/smartDesktopDesigner/tests/ProjectHeader.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MaximizeButton.js","sourceRoot":"","sources":["../../../../../src/components/windowTitleBar/components/right/MaximizeButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n */\r\nimport * as React from \"react\";\r\nimport { FinsembleHoverDetector } from \"../../../legacyControls/FinsembleHoverDetector\";\r\nimport { WindowTitleBarContext } from \"../../windowTitleBarContext\";\r\nimport { getStore, Actions as HeaderActions } from \"../../stores/windowTitleBarStore\";\r\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\r\nlet windowTitleBarStore: StoreModel;\r\n\r\ninterface IProps {}\r\ninterface IState {\r\n\tmaximized: boolean;\r\n\thoverState: string;\r\n}\r\n\r\n/**\r\n * Maximize button. This button is hidden when the window is maximized. In its place is the restore button.\r\n */\r\nexport class MaximizeButton extends React.Component<IProps, IState> {\r\n\tstatic contextType = WindowTitleBarContext;\r\n\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.bindCorrectContext();\r\n\t\t/**\r\n\t\t * We assign in the constructor instead of via a require at the top of the file because the store is initialized asynchronously.\r\n\t\t */\r\n\t\twindowTitleBarStore = getStore();\r\n\t\tthis.state = {\r\n\t\t\tmaximized: windowTitleBarStore.getValue({ field: \"Maximize.maximized\" }),\r\n\t\t\thoverState: \"false\",\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\r\n\t *\r\n\t * @memberof MaximizeButton\r\n\t */\r\n\tbindCorrectContext() {\r\n\t\tthis.onMaximized = this.onMaximized.bind(this);\r\n\t\tthis.onRestored = this.onRestored.bind(this);\r\n\t\tthis.hoverAction = this.hoverAction.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * When the state changes, this listener is invoked. There are two states: Not maximized, and maximized. When the window is maximized, the button changes to an icon that denotes \"Restore to previous size.\"\r\n\t *\r\n\t * @param {any} err\r\n\t * @param {any} response\r\n\t * @memberof MaximizeButton\r\n\t */\r\n\tonRestored() {\r\n\t\tthis.setState({ maximized: false });\r\n\t}\r\n\r\n\tonMaximized() {\r\n\t\tthis.setState({ maximized: true });\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when the user clicks the button.\r\n\t *\r\n\t * @memberof MaximizeButton\r\n\t */\r\n\tonClick() {\r\n\t\tHeaderActions.clickMaximize();\r\n\t}\r\n\r\n\t/**\r\n\t * Add listeners to the store.\r\n\t *\r\n\t * @memberof MaximizeButton\r\n\t */\r\n\tUNSAFE_componentWillMount() {\r\n\t\tfinsembleWindow?.addListener(\"maximized\", this.onMaximized);\r\n\t\tfinsembleWindow?.addListener(\"restored\", this.onRestored);\r\n\t}\r\n\r\n\t/**\r\n\t * Remove listeners from the store.\r\n\t *\r\n\t * @memberof MaximizeButton\r\n\t */\r\n\tcomponentWillUnmount() {\r\n\t\tfinsembleWindow?.removeListener(\"maximized\", this.onMaximized);\r\n\t\tfinsembleWindow?.removeListener(\"restored\", this.onRestored);\r\n\t}\r\n\r\n\t/**\r\n\t * When your mouse enters/leaves the hoverDetector, this function is invoked.\r\n\t *\r\n\t * @param {any} newHoverState\r\n\t * @memberof LinkerButton\r\n\t */\r\n\thoverAction(newHoverState: string) {\r\n\t\tthis.setState({ hoverState: newHoverState });\r\n\t}\r\n\r\n\t/**\r\n\t * Render method.\r\n\t *\r\n\t * @returns\r\n\t * @memberof MaximizeButton\r\n\t */\r\n\trender() {\r\n\t\tconst tooltip = this.state.maximized ? \"Restore\" : \"Maximize\";\r\n\r\n\t\t// Classes for the maximize button.\r\n\t\tconst iconClasses = this.state.maximized ? \"ff-restore\" : \"ff-maximize\";\r\n\t\t// Classes for the wrap\r\n\t\tconst wrapClasses = `fsbl-icon fsbl-maximize ${this.state.maximized ? \"window-restore\" : \"window-max\"}`;\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{this.context.showMaximizeButton && (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName={wrapClasses}\r\n\t\t\t\t\t\tid=\"fsbl-window-restore\"\r\n\t\t\t\t\t\ttitle={tooltip}\r\n\t\t\t\t\t\tdata-hover={this.state.hoverState}\r\n\t\t\t\t\t\tonClick={this.onClick}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<FinsembleHoverDetector edge=\"top\" hoverAction={this.hoverAction} />\r\n\t\t\t\t\t\t<i className={iconClasses}></i>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"MaximizeButton.js","sourceRoot":"","sources":["../../../../../src/components/windowTitleBar/components/right/MaximizeButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport * as React from \"react\";\nimport { FinsembleHoverDetector } from \"../../../legacyControls/FinsembleHoverDetector\";\nimport { WindowTitleBarContext } from \"../../windowTitleBarContext\";\nimport { getStore, Actions as HeaderActions } from \"../../stores/windowTitleBarStore\";\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\n// Re-enable this import once load time for finsemble-core has been eliminated (e.g. tree shaking)\n//import { constants } from \"@finsemble/finsemble-core/\";\n//const { WINDOWSTATE } = constants;\nexport enum WINDOWSTATE {\n\tNORMAL = 0,\n\tMINIMIZED_WAS_NORMAL = 1,\n\tMAXIMIZED = 2,\n\tMINIMIZED_WAS_MAXIMIZED = 3,\n\tTRANSITIONING = 4,\n}\nlet windowTitleBarStore: StoreModel;\n\ninterface IProps {}\ninterface IState {\n\tmaximized: boolean;\n\thoverState: string;\n}\n\n/**\n * Maximize button. This button is hidden when the window is maximized. In its place is the restore button.\n */\nexport class MaximizeButton extends React.Component<IProps, IState> {\n\tstatic contextType = WindowTitleBarContext;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.bindCorrectContext();\n\t\t/**\n\t\t * We assign in the constructor instead of via a require at the top of the file because the store is initialized asynchronously.\n\t\t */\n\t\twindowTitleBarStore = getStore();\n\n\t\tconst isMaximized = finsembleWindow.windowOptions.windowState === WINDOWSTATE.MAXIMIZED;\n\t\twindowTitleBarStore.setValue({ field: \"Maximize.maximized\", value: isMaximized });\n\t\tthis.state = {\n\t\t\tmaximized: isMaximized,\n\t\t\thoverState: \"false\",\n\t\t};\n\t}\n\n\t/**\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\n\t *\n\t * @memberof MaximizeButton\n\t */\n\tbindCorrectContext() {\n\t\tthis.onMaximized = this.onMaximized.bind(this);\n\t\tthis.onRestored = this.onRestored.bind(this);\n\t\tthis.hoverAction = this.hoverAction.bind(this);\n\t}\n\n\t/**\n\t * When the state changes, this listener is invoked. There are two states: Not maximized, and maximized. When the window is maximized, the button changes to an icon that denotes \"Restore to previous size.\"\n\t *\n\t * @param {any} err\n\t * @param {any} response\n\t * @memberof MaximizeButton\n\t */\n\tonRestored() {\n\t\tthis.setState({ maximized: false });\n\t}\n\n\tonMaximized() {\n\t\tthis.setState({ maximized: true });\n\t}\n\n\t/**\n\t * Invoked when the user clicks the button.\n\t *\n\t * @memberof MaximizeButton\n\t */\n\tonClick() {\n\t\tHeaderActions.clickMaximize();\n\t}\n\n\t/**\n\t * Add listeners to the store.\n\t *\n\t * @memberof MaximizeButton\n\t */\n\tUNSAFE_componentWillMount() {\n\t\tfinsembleWindow?.addListener(\"maximized\", this.onMaximized);\n\t\tfinsembleWindow?.addListener(\"restored\", this.onRestored);\n\t}\n\n\t/**\n\t * Remove listeners from the store.\n\t *\n\t * @memberof MaximizeButton\n\t */\n\tcomponentWillUnmount() {\n\t\tfinsembleWindow?.removeListener(\"maximized\", this.onMaximized);\n\t\tfinsembleWindow?.removeListener(\"restored\", this.onRestored);\n\t}\n\n\t/**\n\t * When your mouse enters/leaves the hoverDetector, this function is invoked.\n\t *\n\t * @param {any} newHoverState\n\t * @memberof LinkerButton\n\t */\n\thoverAction(newHoverState: string) {\n\t\tthis.setState({ hoverState: newHoverState });\n\t}\n\n\t/**\n\t * Render method.\n\t *\n\t * @returns\n\t * @memberof MaximizeButton\n\t */\n\trender() {\n\t\tconst tooltip = this.state.maximized ? \"Restore\" : \"Maximize\";\n\n\t\t// Classes for the maximize button.\n\t\tconst iconClasses = this.state.maximized ? \"ff-restore\" : \"ff-maximize\";\n\t\t// Classes for the wrap\n\t\tconst wrapClasses = `fsbl-icon fsbl-maximize ${this.state.maximized ? \"window-restore\" : \"window-max\"}`;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{this.context.showMaximizeButton && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={wrapClasses}\n\t\t\t\t\t\tid=\"fsbl-window-restore\"\n\t\t\t\t\t\ttitle={tooltip}\n\t\t\t\t\t\tdata-hover={this.state.hoverState}\n\t\t\t\t\t\tonClick={this.onClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FinsembleHoverDetector edge=\"top\" hoverAction={this.hoverAction} />\n\t\t\t\t\t\t<i className={iconClasses}></i>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MinimizeButton.js","sourceRoot":"","sources":["../../../../../src/components/windowTitleBar/components/right/MinimizeButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAO5E,MAAM,OAAO,cAAe,SAAQ,KAAK,CAAC,SAAyB;IAGlE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAOD,kBAAkB;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAOD,OAAO;QACN,aAAa,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAQD,WAAW,CAAC,aAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9C,CAAC;IAQD,MAAM;QACL,OAAO,CACN,0CACE,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CACnC,6BACC,SAAS,EAAC,yBAAyB,EACnC,EAAE,EAAC,sBAAsB,gBACb,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YAErB,oBAAC,sBAAsB,IAAC,IAAI,EAAC,KAAK,EAAC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAI;YACpE,2BAAG,SAAS,EAAC,aAAa,GAAK,CAC1B,CACN,CACC,CACH,CAAC;IACH,CAAC;;AA3DM,0BAAW,GAAG,qBAAqB,CAAC","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n */\r\nimport * as React from \"react\";\r\nimport { FinsembleHoverDetector } from \"../../../legacyControls/FinsembleHoverDetector\";\r\nimport { WindowTitleBarContext } from \"../../windowTitleBarContext\";\r\nimport { Actions as HeaderActions } from \"../../stores/windowTitleBarStore\";\r\n\r\ninterface IProps {}\r\ninterface IState {\r\n\thoverState: string;\r\n}\r\n\r\nexport class MinimizeButton extends React.Component<IProps, IState> {\r\n\tstatic contextType = WindowTitleBarContext;\r\n\r\n\tconstructor(props: IProps) {\r\n\t\tsuper(props);\r\n\t\tthis.bindCorrectContext();\r\n\t\tthis.state = { hoverState: \"false\" };\r\n\t}\r\n\r\n\t/**\r\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\r\n\t *\r\n\t * @memberof MinimizeButton\r\n\t */\r\n\tbindCorrectContext() {\r\n\t\tthis.hoverAction = this.hoverAction.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when the user clicks the minimize button.\r\n\t *\r\n\t * @memberof MinimizeButton\r\n\t */\r\n\tonClick() {\r\n\t\tHeaderActions.clickMinimize();\r\n\t}\r\n\r\n\t/**\r\n\t * When your mouse enters/leaves the hoverDetector, this function is invoked.\r\n\t *\r\n\t * @param {string} newHoverState\r\n\t * @memberof MinimizeButton\r\n\t */\r\n\thoverAction(newHoverState: string) {\r\n\t\tthis.setState({ hoverState: newHoverState });\r\n\t}\r\n\r\n\t/**\r\n\t * Render method.\r\n\t *\r\n\t * @returns\r\n\t * @memberof MinimizeButton\r\n\t */\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{this.context.showMinimizeButton && (\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\tclassName=\"fsbl-icon fsbl-minimize\"\r\n\t\t\t\t\t\tid=\"fsbl-window-minimize\"\r\n\t\t\t\t\t\tdata-hover={this.state.hoverState}\r\n\t\t\t\t\t\ttitle=\"Minimize\"\r\n\t\t\t\t\t\tonClick={this.onClick}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<FinsembleHoverDetector edge=\"top\" hoverAction={this.hoverAction} />\r\n\t\t\t\t\t\t<i className=\"ff-minimize\"></i>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"MinimizeButton.js","sourceRoot":"","sources":["../../../../../src/components/windowTitleBar/components/right/MinimizeButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAO5E,MAAM,OAAO,cAAe,SAAQ,KAAK,CAAC,SAAyB;IAGlE,YAAY,KAAa;QACxB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAOD,kBAAkB;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAOD,OAAO;QACN,aAAa,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAQD,WAAW,CAAC,aAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9C,CAAC;IAQD,MAAM;QACL,OAAO,CACN,0CACE,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CACnC,6BACC,SAAS,EAAC,yBAAyB,EACnC,EAAE,EAAC,sBAAsB,gBACb,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YAErB,oBAAC,sBAAsB,IAAC,IAAI,EAAC,KAAK,EAAC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAI;YACpE,2BAAG,SAAS,EAAC,aAAa,GAAK,CAC1B,CACN,CACC,CACH,CAAC;IACH,CAAC;;AA3DM,0BAAW,GAAG,qBAAqB,CAAC","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport * as React from \"react\";\nimport { FinsembleHoverDetector } from \"../../../legacyControls/FinsembleHoverDetector\";\nimport { WindowTitleBarContext } from \"../../windowTitleBarContext\";\nimport { Actions as HeaderActions } from \"../../stores/windowTitleBarStore\";\n\ninterface IProps {}\ninterface IState {\n\thoverState: string;\n}\n\nexport class MinimizeButton extends React.Component<IProps, IState> {\n\tstatic contextType = WindowTitleBarContext;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.bindCorrectContext();\n\t\tthis.state = { hoverState: \"false\" };\n\t}\n\n\t/**\n\t * This is necessary to make sure that the `this` inside of the callback is correct.\n\t *\n\t * @memberof MinimizeButton\n\t */\n\tbindCorrectContext() {\n\t\tthis.hoverAction = this.hoverAction.bind(this);\n\t}\n\n\t/**\n\t * Invoked when the user clicks the minimize button.\n\t *\n\t * @memberof MinimizeButton\n\t */\n\tonClick() {\n\t\tHeaderActions.clickMinimize();\n\t}\n\n\t/**\n\t * When your mouse enters/leaves the hoverDetector, this function is invoked.\n\t *\n\t * @param {string} newHoverState\n\t * @memberof MinimizeButton\n\t */\n\thoverAction(newHoverState: string) {\n\t\tthis.setState({ hoverState: newHoverState });\n\t}\n\n\t/**\n\t * Render method.\n\t *\n\t * @returns\n\t * @memberof MinimizeButton\n\t */\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{this.context.showMinimizeButton && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"fsbl-icon fsbl-minimize\"\n\t\t\t\t\t\tid=\"fsbl-window-minimize\"\n\t\t\t\t\t\tdata-hover={this.state.hoverState}\n\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\tonClick={this.onClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<FinsembleHoverDetector edge=\"top\" hoverAction={this.hoverAction} />\n\t\t\t\t\t\t<i className=\"ff-minimize\"></i>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t}\n}\n"]}
@@ -3,20 +3,21 @@ declare type TitleProps = {
3
3
  windowIdentifier: any;
4
4
  onUpdate?: Function;
5
5
  titleWidth?: number;
6
- updateTitle?: EventTarget;
6
+ onClick?: () => void;
7
7
  };
8
8
  declare type TitleState = {
9
9
  title: string | undefined;
10
10
  icon: any;
11
+ windowName?: string;
11
12
  };
12
13
  export declare class Title extends Component<TitleProps, TitleState> {
13
14
  constructor(props: TitleProps);
14
- getTitle(e?: any, identifier?: any): Promise<void>;
15
+ initializeTitle(): Promise<void>;
16
+ handleTitleChange(title: string, isRemoteCall?: boolean): Promise<void>;
17
+ handleTabTitleChange(error: any, response: any): void;
15
18
  componentDidMount(): void;
16
19
  componentDidUpdate(): void;
17
- UNSAFE_componentWillMount(): void;
18
20
  componentWillUnmount(): void;
19
- UNSAFE_componentWillReceiveProps(nextProps: any): void;
20
21
  render(): JSX.Element;
21
22
  }
22
23
  export {};
@@ -1,6 +1,55 @@
1
1
  import React, { Component } from "react";
2
2
  import { Icon } from "../../icon/Icon";
3
3
  import { iconFromConfig } from "../../icon/Icon";
4
+ import { Store } from "../stores/windowTitleBarStore";
5
+ function EditTab(props) {
6
+ const [editingTitle, setEditingTitle] = React.useState(false);
7
+ const [clickTimeout, setClickTimeout] = React.useState(undefined);
8
+ const inputEl = React.useRef(null);
9
+ const updateTabTitle = (e) => {
10
+ const title = e.target.value;
11
+ if (props.onTitleChange)
12
+ props.onTitleChange(title);
13
+ setEditingTitle(false);
14
+ };
15
+ const beginEditing = async () => {
16
+ var _a, _b;
17
+ await setEditingTitle(true);
18
+ await ((_a = inputEl === null || inputEl === void 0 ? void 0 : inputEl.current) === null || _a === void 0 ? void 0 : _a.focus());
19
+ if (inputEl === null || inputEl === void 0 ? void 0 : inputEl.current) {
20
+ inputEl.current.value = (_b = props.title) !== null && _b !== void 0 ? _b : "";
21
+ }
22
+ };
23
+ const clickHandler = () => {
24
+ const allowTabEditing = Store.getValue("allowTabEditing");
25
+ if (clickTimeout) {
26
+ if (allowTabEditing) {
27
+ beginEditing();
28
+ }
29
+ }
30
+ else if (!editingTitle) {
31
+ let timeout = setTimeout(() => {
32
+ clearTimeout(clickTimeout);
33
+ setClickTimeout(undefined);
34
+ }, 500);
35
+ setClickTimeout(timeout);
36
+ if (props.setActiveTab)
37
+ props.setActiveTab();
38
+ }
39
+ };
40
+ const blurHandler = (e) => {
41
+ updateTabTitle(e);
42
+ };
43
+ const keyDownHandler = (e) => {
44
+ e.key === "Enter" && updateTabTitle(e);
45
+ };
46
+ return (React.createElement("div", { className: "fsbl-tab-editor", onClick: clickHandler }, editingTitle ? (React.createElement("div", { className: "fsbl-tab fsbl-active-tab", style: { width: props.tabWidth || "auto" } },
47
+ React.createElement("div", { draggable: true, onDragStart: (e) => {
48
+ e.stopPropagation();
49
+ e.preventDefault();
50
+ } },
51
+ React.createElement("input", { ref: inputEl, onBlur: blurHandler, onKeyDown: keyDownHandler, type: "text", className: "tab__input", maxLength: 32 })))) : (props.children)));
52
+ }
4
53
  export class Title extends Component {
5
54
  constructor(props) {
6
55
  var _a;
@@ -8,60 +57,74 @@ export class Title extends Component {
8
57
  this.state = {
9
58
  title: document.title,
10
59
  icon: null,
60
+ windowName: (_a = finsembleWindow.identifier) === null || _a === void 0 ? void 0 : _a.windowName,
11
61
  };
12
- this.getTitle = this.getTitle.bind(this);
13
- (_a = props.updateTitle) === null || _a === void 0 ? void 0 : _a.addEventListener("title-changed", () => {
14
- this.getTitle();
15
- });
62
+ this.handleTitleChange = this.handleTitleChange.bind(this);
63
+ this.handleTabTitleChange = this.handleTabTitleChange.bind(this);
16
64
  }
17
- async getTitle(e = null, identifier = this.props.windowIdentifier) {
18
- const { wrap: win } = await FSBL.FinsembleWindow.getInstance(identifier);
19
- win.getOptions((err, data) => {
20
- var _a, _b, _c;
21
- let { title } = data;
22
- const icon = iconFromConfig((_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.customData) === null || _a === void 0 ? void 0 : _a.foreign) === null || _b === void 0 ? void 0 : _b.components) === null || _c === void 0 ? void 0 : _c.Toolbar, title);
23
- win.getComponentState({ field: "persistedTitle" }, (error, persistedTitle) => {
24
- if (persistedTitle) {
25
- title = persistedTitle;
26
- }
27
- this.setState({
28
- title,
29
- icon,
30
- });
65
+ async initializeTitle() {
66
+ var _a, _b, _c, _d, _e, _f;
67
+ if (!((_a = this.props) === null || _a === void 0 ? void 0 : _a.windowIdentifier))
68
+ return;
69
+ const { wrap: win } = await FSBL.FinsembleWindow.getInstance(this.props.windowIdentifier);
70
+ const windowManagerConfig = (_b = win.windowOptions.customData) === null || _b === void 0 ? void 0 : _b.foreign.components["Window Manager"];
71
+ const { data } = await win.getOptions();
72
+ let title = (windowManagerConfig === null || windowManagerConfig === void 0 ? void 0 : windowManagerConfig.title) || ((_c = data) === null || _c === void 0 ? void 0 : _c.title) || finsembleWindow.name || "";
73
+ const icon = iconFromConfig((_f = (_e = (_d = data === null || data === void 0 ? void 0 : data.customData) === null || _d === void 0 ? void 0 : _d.foreign) === null || _e === void 0 ? void 0 : _e.components) === null || _f === void 0 ? void 0 : _f.Toolbar, title);
74
+ win.getComponentState({ field: "persistedTitle" }, (error, persistedTitle) => {
75
+ if (persistedTitle) {
76
+ title = persistedTitle;
77
+ }
78
+ this.setState({
79
+ title: title,
80
+ icon: icon,
31
81
  });
32
82
  });
33
83
  }
84
+ async handleTitleChange(title, isRemoteCall = false) {
85
+ this.setState({
86
+ title: title,
87
+ });
88
+ if (isRemoteCall) {
89
+ const { wrap: win } = await FSBL.FinsembleWindow.getInstance(this.props.windowIdentifier);
90
+ win.setComponentState({ field: "persistedTitle", value: title });
91
+ }
92
+ else {
93
+ document.title = title;
94
+ finsembleWindow.setComponentState({ field: "persistedTitle", value: title });
95
+ FSBL.Clients.RouterClient.transmit("tab-title-changed", { title: title, identifier: finsembleWindow.identifier });
96
+ }
97
+ }
98
+ handleTabTitleChange(error, response) {
99
+ var _a;
100
+ if (this.props.windowIdentifier.windowName != ((_a = finsembleWindow.identifier) === null || _a === void 0 ? void 0 : _a.windowName) &&
101
+ this.props.windowIdentifier.windowName == response.data.identifier.windowName &&
102
+ response.data.identifier.windowName != this.state.windowName) {
103
+ this.handleTitleChange(response.data.title, true);
104
+ }
105
+ }
34
106
  componentDidMount() {
35
- this.getTitle();
107
+ this.initializeTitle();
108
+ FSBL.Clients.RouterClient.addListener("tab-title-changed", this.handleTabTitleChange);
109
+ finsembleWindow.addEventListener("title-changed", this.initializeTitle);
36
110
  }
37
111
  componentDidUpdate() {
38
112
  if (typeof this.props.onUpdate === "function") {
39
113
  this.props.onUpdate();
40
114
  }
41
115
  }
42
- UNSAFE_componentWillMount() {
43
- var _a;
44
- FSBL.FinsembleWindow.getInstance((_a = this.props) === null || _a === void 0 ? void 0 : _a.windowIdentifier, (e, win) => {
45
- win.addEventListener("title-changed", this.getTitle);
46
- });
47
- }
48
116
  componentWillUnmount() {
49
- var _a;
50
- FSBL.FinsembleWindow.getInstance((_a = this.props) === null || _a === void 0 ? void 0 : _a.windowIdentifier, (e, win) => {
51
- win.removeEventListener("title-changed", this.getTitle);
52
- });
53
- }
54
- UNSAFE_componentWillReceiveProps(nextProps) {
55
- if (nextProps.windowIdentifier.windowName !== this.props.windowIdentifier.windowName) {
56
- this.getTitle(null, nextProps.windowIdentifier);
57
- }
117
+ FSBL.Clients.RouterClient.removeListener("tab-title-changed", this.handleTabTitleChange);
118
+ finsembleWindow.removeEventListener("title-changed", this.initializeTitle);
58
119
  }
59
120
  render() {
60
- let { titleWidth } = this.props;
61
- let style = titleWidth ? { width: titleWidth } : {};
62
- return (React.createElement("div", { className: "fsbl-tab-title", style: style },
63
- this.state.icon && React.createElement(Icon, Object.assign({}, this.state.icon)),
64
- React.createElement("div", { className: "title-text" }, this.state.title)));
121
+ var _a;
122
+ const { titleWidth } = this.props;
123
+ const style = titleWidth ? { width: titleWidth } : {};
124
+ return (React.createElement(EditTab, { tabWidth: titleWidth, setActiveTab: (_a = this === null || this === void 0 ? void 0 : this.props) === null || _a === void 0 ? void 0 : _a.onClick, onTitleChange: this.handleTitleChange, title: this.state.title },
125
+ React.createElement("div", { className: "fsbl-tab-title", style: style },
126
+ this.state.icon && React.createElement(Icon, Object.assign({}, this.state.icon)),
127
+ React.createElement("div", { className: "title-text" }, this.state.title))));
65
128
  }
66
129
  }
67
130
  //# sourceMappingURL=windowTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"windowTitle.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/components/windowTitle.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component } from \"react\";\r\nimport { Icon } from \"../../icon/Icon\";\r\nimport { iconFromConfig } from \"../../icon/Icon\";\r\n\r\ntype TitleProps = {\r\n\twindowIdentifier: any;\r\n\tonUpdate?: Function;\r\n\ttitleWidth?: number;\r\n\tupdateTitle?: EventTarget;\r\n};\r\n\r\ntype TitleState = {\r\n\ttitle: string | undefined;\r\n\ticon: any;\r\n};\r\n\r\nexport class Title extends Component<TitleProps, TitleState> {\r\n\tconstructor(props: TitleProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\ttitle: document.title,\r\n\t\t\ticon: null,\r\n\t\t};\r\n\t\tthis.getTitle = this.getTitle.bind(this);\r\n\t\tprops.updateTitle?.addEventListener(\"title-changed\", () => {\r\n\t\t\tthis.getTitle();\r\n\t\t});\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tasync getTitle(e: any = null, identifier = this.props.windowIdentifier) {\r\n\t\tconst { wrap: win } = await FSBL.FinsembleWindow.getInstance(identifier);\r\n\t\twin.getOptions((err: any, data: any) => {\r\n\t\t\tlet { title } = data;\r\n\t\t\tconst icon = iconFromConfig(data?.customData?.foreign?.components?.Toolbar, title);\r\n\t\t\twin.getComponentState({ field: \"persistedTitle\" }, (error: any, persistedTitle: any) => {\r\n\t\t\t\tif (persistedTitle) {\r\n\t\t\t\t\ttitle = persistedTitle;\r\n\t\t\t\t}\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\ticon,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.getTitle();\r\n\t}\r\n\r\n\t// Triggers a re-rendering of the drag handle in the title bar.\r\n\tcomponentDidUpdate() {\r\n\t\tif (typeof this.props.onUpdate === \"function\") {\r\n\t\t\tthis.props.onUpdate();\r\n\t\t}\r\n\t}\r\n\r\n\tUNSAFE_componentWillMount() {\r\n\t\tFSBL.FinsembleWindow.getInstance(this.props?.windowIdentifier, (e: any, win: any) => {\r\n\t\t\twin.addEventListener(\"title-changed\", this.getTitle);\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tFSBL.FinsembleWindow.getInstance(this.props?.windowIdentifier, (e: any, win: any) => {\r\n\t\t\twin.removeEventListener(\"title-changed\", this.getTitle);\r\n\t\t});\r\n\t}\r\n\r\n\tUNSAFE_componentWillReceiveProps(nextProps: any) {\r\n\t\t// We only need to re-render the logo if the name of the component changes. Otherwise excessive calls to getOptions\r\n\t\tif (nextProps.windowIdentifier.windowName !== this.props.windowIdentifier.windowName) {\r\n\t\t\tthis.getTitle(null, nextProps.windowIdentifier);\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet { titleWidth } = this.props;\r\n\t\tlet style = titleWidth ? { width: titleWidth } : {};\r\n\t\treturn (\r\n\t\t\t<div className=\"fsbl-tab-title\" style={style}>\r\n\t\t\t\t{this.state.icon && <Icon {...this.state.icon} />}\r\n\t\t\t\t<div className=\"title-text\">{this.state.title}</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"windowTitle.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/components/windowTitle.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component } from \"react\";\nimport { EditTabProps } from \"../../../types/windowTitleBar\";\nimport { Icon } from \"../../icon/Icon\";\nimport { iconFromConfig } from \"../../icon/Icon\";\nimport { Store } from \"../stores/windowTitleBarStore\";\n\ntype TitleProps = {\n\twindowIdentifier: any;\n\tonUpdate?: Function;\n\ttitleWidth?: number;\n\tonClick?: () => void;\n};\n\ntype TitleState = {\n\ttitle: string | undefined;\n\ticon: any;\n\twindowName?: string;\n};\n\n/**\n * The wrapper component for tab renaming\n * @param {*} props\n */\nfunction EditTab(props: EditTabProps) {\n\tconst [editingTitle, setEditingTitle] = React.useState(false);\n\tconst [clickTimeout, setClickTimeout] = React.useState<NodeJS.Timeout | undefined>(undefined);\n\tconst inputEl = React.useRef<HTMLInputElement>(null);\n\n\tconst updateTabTitle = (e: React.KeyboardEvent<HTMLInputElement> | React.FocusEvent<HTMLInputElement>) => {\n\t\tconst title = (e.target as HTMLInputElement).value;\n\t\t// notify that title was updated\n\t\tif (props.onTitleChange) props.onTitleChange(title);\n\t\tsetEditingTitle(false);\n\t};\n\n\tconst beginEditing = async () => {\n\t\tawait setEditingTitle(true);\n\t\tawait inputEl?.current?.focus();\n\t\tif (inputEl?.current) {\n\t\t\tinputEl.current.value = props.title ?? \"\";\n\t\t}\n\t};\n\n\tconst clickHandler = () => {\n\t\tconst allowTabEditing = Store.getValue(\"allowTabEditing\");\n\n\t\tif (clickTimeout) {\n\t\t\t// double click\n\t\t\tif (allowTabEditing) {\n\t\t\t\tbeginEditing();\n\t\t\t}\n\t\t} else if (!editingTitle) {\n\t\t\t// single click\n\t\t\tlet timeout = setTimeout(() => {\n\t\t\t\tclearTimeout(clickTimeout);\n\t\t\t\tsetClickTimeout(undefined);\n\t\t\t}, 500);\n\t\t\tsetClickTimeout(timeout);\n\t\t\tif (props.setActiveTab) props.setActiveTab();\n\t\t}\n\t};\n\n\tconst blurHandler = (e: React.FocusEvent<HTMLInputElement>) => {\n\t\tupdateTabTitle(e);\n\t};\n\n\tconst keyDownHandler = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\te.key === \"Enter\" && updateTabTitle(e);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"fsbl-tab-editor\"\n\t\t\t//We can't use Click and Dblclick events together cause for one dblclick fires two click events which close title editor.\n\t\t\t//Workaround with setTimeout should resolve this behaviour.\n\t\t\tonClick={clickHandler}\n\t\t>\n\t\t\t{editingTitle ? (\n\t\t\t\t<div className=\"fsbl-tab fsbl-active-tab\" style={{ width: props.tabWidth || \"auto\" }}>\n\t\t\t\t\t{/* workaround to disable tab dragging in the edit mode */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tdraggable={true}\n\t\t\t\t\t\tonDragStart={(e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tref={inputEl}\n\t\t\t\t\t\t\tonBlur={blurHandler}\n\t\t\t\t\t\t\tonKeyDown={keyDownHandler}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tclassName=\"tab__input\"\n\t\t\t\t\t\t\tmaxLength={32}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\tprops.children\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n/*\n * Description how stacked window tabs work.\n *\n * The simplest case - when you have only 2 tabs. In that case you will actually have 2 windows and 4 tabs.\n * Lets call them as: window 1 - w1, window 2 - w2, tab 1 from window 1 - w1_t1, tab 2 from window 1 - w1_t2, for tabs from window 2 - w2_t1 and w2_t2.\n * When you switch tabs you activate w1 or w2 with active tab w1_t1 or w2_t2 coresponderly.\n * Tabs w1_t2 and w2_t1 are inactive. They needed only for rendering. I call them as remote tabs, cause their titles must be synchronized with active tabs titles.\n * Thus when you rename active tab (w1_t1), the corresponding remote tab (w2_t1) should be updated automatically.\n */\n\nexport class Title extends Component<TitleProps, TitleState> {\n\tconstructor(props: TitleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\ttitle: document.title,\n\t\t\ticon: null,\n\t\t\t// save active window name\n\t\t\twindowName: finsembleWindow.identifier?.windowName,\n\t\t};\n\n\t\tthis.handleTitleChange = this.handleTitleChange.bind(this);\n\t\tthis.handleTabTitleChange = this.handleTabTitleChange.bind(this);\n\t}\n\n\tasync initializeTitle() {\n\t\t// happens when a stacked window loads\n\t\tif (!this.props?.windowIdentifier) return;\n\n\t\tconst { wrap: win } = await FSBL.FinsembleWindow.getInstance(this.props.windowIdentifier);\n\t\tconst windowManagerConfig = win.windowOptions.customData?.foreign.components[\"Window Manager\"];\n\t\tconst { data } = await win.getOptions();\n\t\tlet title = windowManagerConfig?.title || (data as any)?.title || finsembleWindow.name || \"\";\n\t\tconst icon = iconFromConfig(data?.customData?.foreign?.components?.Toolbar, title);\n\t\twin.getComponentState({ field: \"persistedTitle\" }, (error: any, persistedTitle: any) => {\n\t\t\tif (persistedTitle) {\n\t\t\t\ttitle = persistedTitle;\n\t\t\t}\n\t\t\tthis.setState({\n\t\t\t\ttitle: title,\n\t\t\t\ticon: icon,\n\t\t\t});\n\t\t});\n\t}\n\n\tasync handleTitleChange(title: string, isRemoteCall = false) {\n\t\tthis.setState({\n\t\t\ttitle: title,\n\t\t});\n\n\t\t// the remote tab was renamed\n\t\tif (isRemoteCall) {\n\t\t\tconst { wrap: win } = await FSBL.FinsembleWindow.getInstance(this.props.windowIdentifier);\n\t\t\twin.setComponentState({ field: \"persistedTitle\", value: title });\n\t\t}\n\t\t// the active tab was renamed\n\t\telse {\n\t\t\tdocument.title = title;\n\t\t\tfinsembleWindow.setComponentState({ field: \"persistedTitle\", value: title });\n\t\t\t// notify that tab was renamed\n\t\t\tFSBL.Clients.RouterClient.transmit(\"tab-title-changed\", { title: title, identifier: finsembleWindow.identifier });\n\t\t}\n\t}\n\n\thandleTabTitleChange(error: any, response: any) {\n\t\t// Update title only for corrsponding remote tab.\n\t\tif (\n\t\t\tthis.props.windowIdentifier.windowName != finsembleWindow.identifier?.windowName &&\n\t\t\tthis.props.windowIdentifier.windowName == response.data.identifier.windowName &&\n\t\t\tresponse.data.identifier.windowName != this.state.windowName\n\t\t) {\n\t\t\t// update tab name when remote tab was renamed\n\t\t\tthis.handleTitleChange(response.data.title, true);\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.initializeTitle();\n\t\t// subscrite on remote tab-title-changed event\n\t\tFSBL.Clients.RouterClient.addListener(\"tab-title-changed\", this.handleTabTitleChange);\n\n\t\t// While spawning a window we set document.title multiple times (set a short window title for example). This listener should reinitialize title if it has been changed.\n\t\tfinsembleWindow.addEventListener(\"title-changed\", this.initializeTitle);\n\t}\n\n\t// Triggers a re-rendering of the drag handle in the title bar.\n\tcomponentDidUpdate() {\n\t\tif (typeof this.props.onUpdate === \"function\") {\n\t\t\tthis.props.onUpdate();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tFSBL.Clients.RouterClient.removeListener(\"tab-title-changed\", this.handleTabTitleChange);\n\t\tfinsembleWindow.removeEventListener(\"title-changed\", this.initializeTitle);\n\t}\n\n\trender() {\n\t\tconst { titleWidth } = this.props;\n\t\tconst style = titleWidth ? { width: titleWidth } : {};\n\t\treturn (\n\t\t\t<EditTab\n\t\t\t\ttabWidth={titleWidth}\n\t\t\t\tsetActiveTab={this?.props?.onClick}\n\t\t\t\tonTitleChange={this.handleTitleChange}\n\t\t\t\ttitle={this.state.title}\n\t\t\t>\n\t\t\t\t<div className=\"fsbl-tab-title\" style={style}>\n\t\t\t\t\t{this.state.icon && <Icon {...this.state.icon} />}\n\t\t\t\t\t<div className=\"title-text\">{this.state.title}</div>\n\t\t\t\t</div>\n\t\t\t</EditTab>\n\t\t);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/windowTitleBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC","sourcesContent":["export { WindowTitleBarShell } from \"./WindowTitleBarShell\";\r\nexport { LinkerButton } from \"./components/left/LinkerButton\";\r\nexport { ShareButton } from \"./components/left/ShareButton\";\r\nexport { TabRegion } from \"./components/center/TabRegion\";\r\nexport { AlwaysOnTopButton } from \"./components/right/AlwaysOnTopButton\";\r\nexport { MinimizeButton } from \"./components/right/MinimizeButton\";\r\nexport { MaximizeButton } from \"./components/right/MaximizeButton\";\r\nexport { CloseButton } from \"./components/right/CloseButton\";\r\nexport { GroupingButton } from \"./components/right/GroupingButton\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/windowTitleBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC","sourcesContent":["export { WindowTitleBarShell } from \"./WindowTitleBarShell\";\nexport { LinkerButton } from \"./components/left/LinkerButton\";\nexport { ShareButton } from \"./components/left/ShareButton\";\nexport { TabRegion } from \"./components/center/TabRegion\";\nexport { AlwaysOnTopButton } from \"./components/right/AlwaysOnTopButton\";\nexport { MinimizeButton } from \"./components/right/MinimizeButton\";\nexport { MaximizeButton } from \"./components/right/MaximizeButton\";\nexport { CloseButton } from \"./components/right/CloseButton\";\nexport { GroupingButton } from \"./components/right/GroupingButton\";\n"]}
@@ -179,6 +179,10 @@ const Actions = {
179
179
  });
180
180
  }
181
181
  else {
182
+ windowTitleBarStore.setValue({
183
+ field: "allowTabEditing",
184
+ value: dockingConfig.tabbing.allowEditing !== undefined ? dockingConfig.tabbing.allowEditing : true,
185
+ });
182
186
  if (typeof windowTitleBarConfig.showTabs !== "boolean") {
183
187
  windowTitleBarStore.setValue({
184
188
  field: "showTabs",
@@ -312,7 +316,7 @@ const Actions = {
312
316
  }
313
317
  },
314
318
  clickMaximize: function () {
315
- if (finsembleWindow.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)
319
+ if (finsembleWindow.windowOptions.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)
316
320
  return finsembleWindow.maximize(() => {
317
321
  windowTitleBarStore.setValue({
318
322
  field: "Maximize.maximized",
@@ -1 +1 @@
1
- {"version":3,"file":"windowTitleBarStore.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/stores/windowTitleBarStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\r\n * Copyright 2017 by ChartIQ, Inc.\r\n * All rights reserved.\r\n */\r\nimport windowTitleBarStoreDefaults from \"./windowTitleBarStoreDefaults\";\r\nimport { StandardCallback } from \"@finsemble/finsemble-core/types/types\";\r\nimport { FinsembleWindow, WindowIdentifier } from \"@finsemble/finsemble-core\";\r\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\r\n\r\nconst getWindowNameForDocking = (finsembleWindow: FinsembleWindow) => {\r\n\tconst parent = finsembleWindow.parentWindow;\r\n\treturn parent ? parent.name : finsembleWindow.name;\r\n};\r\n\r\ntype ParentParams = {\r\n\twindowIdentifiers: WindowIdentifier[];\r\n\tvisibleWindowIdentifier: WindowIdentifier;\r\n\tcreate: boolean;\r\n};\r\n\r\nconst getStackedWindow = (params: ParentParams, cb: StandardCallback) => {\r\n\tif (!finsembleWindow.parentWindow && params.create) {\r\n\t\tconst onParentSet = (evt: any) => {\r\n\t\t\tconst { parentName } = evt.data;\r\n\t\t\tfinsembleWindow.setParent({ windowName: parentName }, (err2, windowWrapper) => {\r\n\t\t\t\tcb?.(err2, windowWrapper);\r\n\t\t\t});\r\n\t\t\tfinsembleWindow.removeListener(\"parent-set\", onParentSet);\r\n\t\t};\r\n\t\tfinsembleWindow.addListener(\"parent-set\", onParentSet);\r\n\t\tFSBL.Clients.LauncherClient.spawn(\r\n\t\t\t\"StackedWindow\",\r\n\t\t\t{\r\n\t\t\t\twindowType: \"StackedWindow\",\r\n\t\t\t\tdata: { windowIdentifiers: params.windowIdentifiers },\r\n\t\t\t\toptions: { newStack: true },\r\n\t\t\t},\r\n\t\t\t(err) => {\r\n\t\t\t\tif (!err) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tcb?.(err, null);\r\n\t\t\t}\r\n\t\t);\r\n\t} else {\r\n\t\tfinsembleWindow.getParent(cb);\r\n\t}\r\n};\r\n\r\nlet windowTitleBarStore: StoreModel;\r\n\r\ntype ConstantsType = {\r\n\tPARENT_WRAPPER_UPDATES: string;\r\n\tCHILD_WINDOW_FIELD: string;\r\n\tVISIBLE_WINDOW_FIELD: string;\r\n\tTAB_SCROLL_POSITION_CHANGED: string;\r\n};\r\n\r\ntype ActionsType = {\r\n\tparentWrapperStore: any;\r\n\tparentSubscriptions: any[];\r\n\tparentWrapper: FinsembleWindow | null;\r\n\r\n\tinitialize: () => void;\r\n\tgetMyDockingGroups: (groupData: any) => any[];\r\n\tonTabListScrollPositionChanged: StandardCallback;\r\n\tsetTabListScrollPosition: (translateX: number) => void;\r\n\tremoteStateUpdate: (command: string, state: any) => void;\r\n\tclickMinimize: () => void;\r\n\tclickClose: () => void;\r\n\ttoggleGroup: () => void;\r\n\tclickMaximize: () => void;\r\n\tgetTabs: () => WindowIdentifier[];\r\n\t_setTabs: (tabs: WindowIdentifier[] | null) => any;\r\n\taddTabLocally: (windowIdentifier: WindowIdentifier, i: number) => void;\r\n\tremoveTabsLocally: () => void;\r\n\tremoveTabLocally: (windowIdentifier: WindowIdentifier) => void;\r\n\treorderTabLocally: (tab: WindowIdentifier, newIndex: number) => undefined | any;\r\n\taddTab: (windowIdentifier: WindowIdentifier, i: number) => any;\r\n\tremoveTab: (windowIdentifier: WindowIdentifier, i: number) => any;\r\n\tcloseTab: (windowIdentifier: WindowIdentifier) => void;\r\n\treorderTab: (tab: WindowIdentifier, newIndex: number) => any;\r\n\tfindTab: (tab: WindowIdentifier) => { tab: WindowIdentifier; currentIndex: number };\r\n\tsetActiveTab: (windowIdentifier: WindowIdentifier) => Promise<any>;\r\n\tonTabListChanged: StandardCallback;\r\n\tstopListeningOnParentWrapper: (cb: Function) => void;\r\n\tlistenOnParentWrapper: () => void;\r\n\tsetupStore: (cb?: Function) => void;\r\n\tgetInitialTabList: (cb: StandardCallback) => void;\r\n\tcreateParentWrapper: (params: ParentParams, cb?: Function) => void;\r\n};\r\n\r\n// these are constants that are set inside of setupStore. so they're declared as vars and not constants.\r\nlet constants: ConstantsType;\r\nconst Actions: ActionsType = {\r\n\tparentWrapperStore: null,\r\n\tinitialize: function () {\r\n\t\t// This ensures that our config is correct, even if the developer missed some entries\r\n\t\tlet { options } = FSBL.Clients.WindowClient;\r\n\t\tlet windowTitleBarConfig = options.customData.foreign.components[\"Window Manager\"];\r\n\t\tlet { FSBLHeader } = windowTitleBarConfig;\r\n\t\tlet self = this;\r\n\r\n\t\t// Display name is first up for display. If it doesn't exist, we look for a default title (or one that's already set on init). If no title, we display the window's name (e.g., '5434-Welcome Component-2321').\r\n\t\tconst displayName = options.customData?.component?.displayName;\r\n\r\n\t\t/**\r\n\t\t * The windowTitleBar (header) is dumb. It just reflects the state of the component window. The headerCommandChannel allows the WindowClient to take control of the state of the header. All of the details of listening to window events are handled inside the WindowClient\r\n\t\t */\r\n\t\tFSBL.Clients.WindowClient.headerCommandChannel((command, state) => {\r\n\t\t\tthis.remoteStateUpdate(command, state);\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * \"FSBLHeader\" can be true, false or an object. If false then we'll never even be here. If true, then maximize, minimize and close buttons will display. If an object, then the developer can override whether buttons are shown with \"hideMaximize\", \"hideMinimize\" and \"hideClose\"\r\n\t\t */\r\n\t\tif (FSBLHeader) {\r\n\t\t\tconst max = !!FSBLHeader.hideMaximize;\r\n\r\n\t\t\twindowTitleBarStore.setValues([\r\n\t\t\t\t{ field: \"Maximize.hide\", value: max },\r\n\t\t\t\t{ field: \"Minimize.hide\", value: !!FSBLHeader.hideMinimize },\r\n\t\t\t\t{ field: \"Close.hide\", value: !!FSBLHeader.hideClose },\r\n\t\t\t\t{ field: \"AlwaysOnTop.show\", value: !!FSBLHeader.alwaysOnTop },\r\n\t\t\t]);\r\n\r\n\t\t\t// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\r\n\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\tfield: \"hackScrollbar\",\r\n\t\t\t\tvalue: windowTitleBarConfig.hackScrollbar !== false,\r\n\t\t\t});\r\n\r\n\t\t\tconst title = FSBL.Clients.WindowClient.title || windowTitleBarConfig.title || displayName;\r\n\r\n\t\t\tif (title) {\r\n\t\t\t\tdocument.title = title;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Handles whether to show the linker button.\r\n\t\t */\r\n\t\tif (windowTitleBarConfig.showLinker) {\r\n\t\t\t// Get state (channel membership) from the linkerClient. Then set the value in the header so that the title bar accurately reflects the state.\r\n\t\t\tconst cb: StandardCallback = (err, response) => {\r\n\t\t\t\tif (response.channels) {\r\n\t\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\t\tfield: \"Linker.channels\",\r\n\t\t\t\t\t\tvalue: response.channels,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\tfield: \"Linker.showLinkerButton\",\r\n\t\t\t\t\tvalue: true,\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tcb(null, FSBL.Clients.LinkerClient.getState());\r\n\t\t\t/* [Terry] no longer necessary?\r\n\t\t\tFSBL.Clients.LinkerClient.getLinkedChannels({\r\n\t\t\t\twindowName: options.name,\r\n\t\t\t\tuuid: options.uuid,\r\n\t\t\t\tcomponentType: options.customData.component.type\r\n\t\t\t}, cb);\r\n\t\t\t*/\r\n\t\t\tFSBL.Clients.LinkerClient.onStateChange(cb);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Listen for updates from the dragAndDropClient.\r\n\t\t */\r\n\t\tFSBL.Clients.RouterClient.subscribe(\r\n\t\t\t`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`,\r\n\t\t\t(err, response) => {\r\n\t\t\t\tif (err) {\r\n\t\t\t\t\treturn console.error(err);\r\n\t\t\t\t}\r\n\t\t\t\twindowTitleBarStore.setValues([\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield: \"Sharer.emitterEnabled\",\r\n\t\t\t\t\t\tvalue: response.data.emitterEnabled,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tfield: \"Sharer.receiverEnabled\",\r\n\t\t\t\t\t\tvalue: response.data.receiverEnabled,\r\n\t\t\t\t\t},\r\n\t\t\t\t]);\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * When a group update is publish, we sift through the data to see if this window is snapped or grouped with other windows. Then we publish that info, and the GroupingButton renders the correct icon.\r\n\t\t * @param {*} err\r\n\t\t * @param {*} response\r\n\t\t */\r\n\t\tconst onDockingGroupUpdate: StandardCallback = function (err, response) {\r\n\t\t\tif (err || !response.data || !response.data.groupData) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tFSBL.Clients.Logger.system.debug(\"On docking group update\", response.data.groupData);\r\n\t\t\tlet groupNames = Object.keys(response.data.groupData);\r\n\t\t\tlet movableGroups = groupNames\r\n\t\t\t\t.filter((groupName) => response.data.groupData[groupName].isMovable)\r\n\t\t\t\t.map((groupName) => response.data.groupData[groupName]);\r\n\t\t\t// This is all movable and snapped groups. It's used later to figure out the icon to display.\r\n\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\tfield: \"Main.allDockingGroups\",\r\n\t\t\t\tvalue: response.data.groupData,\r\n\t\t\t});\r\n\r\n\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\tfield: \"Main.allMovableDockingGroups\",\r\n\t\t\t\tvalue: movableGroups,\r\n\t\t\t});\r\n\t\t\tlet myGroups = self.getMyDockingGroups(response.data.groupData);\r\n\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\tfield: \"Main.dockingGroups\",\r\n\t\t\t\tvalue: myGroups,\r\n\t\t\t});\r\n\t\t\t/**\r\n\t\t\t * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.\r\n\t\t\t */\r\n\t\t\tlet isSnapped = false;\r\n\t\t\tlet isInMovableGroup = false;\r\n\t\t\tlet isTopRight = false;\r\n\t\t\tlet windowName = getWindowNameForDocking(finsembleWindow);\r\n\t\t\tfor (let i = 0; i < myGroups.length; i++) {\r\n\t\t\t\tlet myGroup = myGroups[i];\r\n\t\t\t\tif (myGroup.isMovable) {\r\n\t\t\t\t\tisInMovableGroup = true;\r\n\t\t\t\t\tif (windowName == myGroup.topRightWindow) {\r\n\t\t\t\t\t\tisTopRight = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisSnapped = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet icon: string | false = false;\r\n\r\n\t\t\tif (isSnapped) {\r\n\t\t\t\ticon = \"joiner\";\r\n\t\t\t}\r\n\t\t\tif (isInMovableGroup) {\r\n\t\t\t\ticon = \"ejector\";\r\n\t\t\t}\r\n\r\n\t\t\twindowTitleBarStore.setValues([\r\n\t\t\t\t{ field: \"isSnapped\", value: isSnapped },\r\n\t\t\t\t{ field: \"isGrouped\", value: isInMovableGroup },\r\n\t\t\t\t{ field: \"isTopRight\", value: isTopRight },\r\n\t\t\t\t{ field: \"Main.dockingIcon\", value: icon },\r\n\t\t\t]);\r\n\t\t};\r\n\r\n\t\tFSBL.Clients.RouterClient.subscribe(\"Finsemble.WorkspaceService.groupUpdate\", onDockingGroupUpdate);\r\n\r\n\t\t// default title.\r\n\t\twindowTitleBarStore.setValue({\r\n\t\t\tfield: \"Main.windowTitle\",\r\n\t\t\tvalue: FSBL.Clients.WindowClient.getWindowTitle(),\r\n\t\t});\r\n\r\n\t\tconst getValuesCallback: StandardCallback = (err, values) => {\r\n\t\t\tconst finsembleConfig = values.finsemble;\r\n\r\n\t\t\t// Check FEA config for DOM based movement configuration\r\n\t\t\tconst { useDOMBasedMovement } = values[\"finsemble-electron-adapter\"];\r\n\r\n\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\tfield: \"Main.useDOMBasedMovement\",\r\n\t\t\t\tvalue: typeof useDOMBasedMovement === \"undefined\" ? true : useDOMBasedMovement,\r\n\t\t\t});\r\n\r\n\t\t\tlet globalWindowManagerConfig = finsembleConfig[\"Window Manager\"] || {\r\n\t\t\t\talwaysOnTopIcon: false,\r\n\t\t\t\tshowTabs: false,\r\n\t\t\t}; // Override defaults if finsemble.Window Manager exists.\r\n\r\n\t\t\t// Look to see if docking is enabled. Cascade through backward compatibility with old \"betaFeatures\" and then a default if no config is found at all.\r\n\r\n\t\t\tif (!finsembleConfig.servicesConfig) finsembleConfig.servicesConfig = {};\r\n\t\t\tlet dockingConfig = finsembleConfig.servicesConfig.docking || finsembleConfig.docking;\r\n\t\t\tif (!dockingConfig && finsembleConfig.betaFeatures) dockingConfig = finsembleConfig.betaFeatures.docking;\r\n\t\t\tif (!dockingConfig) dockingConfig = { enabled: true };\r\n\t\t\tif (!dockingConfig.tabbing) dockingConfig.tabbing = {};\r\n\r\n\t\t\twindowTitleBarStore.setValues([{ field: \"Main.dockingEnabled\", value: dockingConfig.enabled }]);\r\n\r\n\t\t\t// Whether the alwaysOnTop pin shows or not depends first on the global setting (finsemble[\"Window Manager\"].alwaysOnTop) and then\r\n\t\t\t// on the specific setting for this component (foreign.components[\"Widow Manager\"].alwaysOnTop)\r\n\t\t\tlet { alwaysOnTopIcon } = globalWindowManagerConfig;\r\n\t\t\tif (windowTitleBarConfig.alwaysOnTopIcon === false || windowTitleBarConfig.alwaysOnTopIcon === true)\r\n\t\t\t\t({ alwaysOnTopIcon } = windowTitleBarConfig);\r\n\r\n\t\t\twindowTitleBarStore.setValues([{ field: \"AlwaysOnTop.show\", value: alwaysOnTopIcon }]);\r\n\r\n\t\t\t// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.\r\n\t\t\tif (dockingConfig.tabbing.enabled === false) {\r\n\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\tfield: \"showTabs\",\r\n\t\t\t\t\tvalue: dockingConfig.tabbing.enabled,\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// If tabbing is enabled system-wide, look to the global config for its value. Then look to the local component's config.\r\n\r\n\t\t\t\t// This is the global window manager config.\r\n\t\t\t\tif (typeof windowTitleBarConfig.showTabs !== \"boolean\") {\r\n\t\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\t\tfield: \"showTabs\",\r\n\t\t\t\t\t\tvalue: globalWindowManagerConfig.showTabs,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t// This is the component's config.\r\n\t\t\t\tif (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {\r\n\t\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\t\tfield: \"showTabs\",\r\n\t\t\t\t\t\tvalue: windowTitleBarConfig.showTabs,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]\r\n\t\t\t\tlet showTabs = true;\r\n\t\t\t\tconst getOptionsCallback: StandardCallback = (_, opts) => {\r\n\t\t\t\t\tif (opts.customData && opts.customData.foreign && opts.customData.foreign.services) {\r\n\t\t\t\t\t\tif (opts.customData.foreign.services.windowService) {\r\n\t\t\t\t\t\t\tif (opts.customData.foreign.services.windowService.allowTabbing !== undefined) {\r\n\t\t\t\t\t\t\t\tshowTabs = opts.customData.foreign.services.windowService.allowTabbing;\r\n\t\t\t\t\t\t\t} else if (opts.customData.foreign.services.windowService.ignoreTilingAndTabbingRequests != undefined) {\r\n\t\t\t\t\t\t\t\tshowTabs = !opts.customData.foreign.services.windowService.ignoreTilingAndTabbingRequests;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (opts.customData.foreign.services.dockingService) {\r\n\t\t\t\t\t\t\tif (opts.customData.foreign.services.dockingService.allowTabbing !== undefined) {\r\n\t\t\t\t\t\t\t\tshowTabs = opts.customData.foreign.services.dockingService.allowTabbing;\r\n\t\t\t\t\t\t\t} else if (opts.customData.foreign.services.dockingService.ignoreTilingAndTabbingRequests != undefined) {\r\n\t\t\t\t\t\t\t\tshowTabs = !opts.customData.foreign.services.dockingService.ignoreTilingAndTabbingRequests;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\t\tfield: \"showTabs\",\r\n\t\t\t\t\t\tvalue: showTabs,\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t\tfinsembleWindow.getOptions(getOptionsCallback);\r\n\t\t\t}\r\n\t\t};\r\n\t\tFSBL.Clients.ConfigClient.getValues(\r\n\t\t\t[{ field: \"finsemble\" }, { field: \"finsemble-electron-adapter\" }],\r\n\t\t\tgetValuesCallback\r\n\t\t);\r\n\r\n\t\tActions.getInitialTabList((err, values) => {\r\n\t\t\tconst onParentSet = () => {\r\n\t\t\t\tActions.parentWrapper = null;\r\n\t\t\t\tActions.getInitialTabList(() => {\r\n\t\t\t\t\tFSBL.Clients.Logger.system.debug(\"docking group update after initial tab list\");\r\n\t\t\t\t\tonDockingGroupUpdate(null, {\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\r\n\t\t\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tconst onParentCleared = () => {\r\n\t\t\t\tActions.parentWrapper = null;\r\n\t\t\t\tFSBL.Clients.Logger.system.debug(\"ClearParent, setting tabs to null\");\r\n\t\t\t\tActions.stopListeningOnParentWrapper(() => {\r\n\t\t\t\t\tActions.parentWrapperStore = null;\r\n\t\t\t\t\tActions._setTabs(null);\r\n\t\t\t\t\tonDockingGroupUpdate(null, {\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\r\n\t\t\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tfinsembleWindow?.addListener(\"setParent\", onParentSet);\r\n\t\t\tfinsembleWindow?.addListener(\"clearParent\", onParentCleared);\r\n\t\t\tif (err) {\r\n\t\t\t\treturn FSBL.Clients.Logger.system.error(\"Error in getInitialTabList.\", err);\r\n\t\t\t}\r\n\r\n\t\t\tif (values) Actions._setTabs(values);\r\n\t\t});\r\n\t},\r\n\t/**\r\n\t * Helper function to sift through all of the data coming from the windowService. Outputs an array of groups that the window belongs to.\r\n\t */\r\n\tgetMyDockingGroups: function (groupData) {\r\n\t\tlet myGroups = [];\r\n\t\tlet windowName = getWindowNameForDocking(finsembleWindow);\r\n\t\tif (finsembleWindow?.parentWindow) {\r\n\t\t\twindowName = finsembleWindow?.parentWindow.name;\r\n\t\t}\r\n\t\tFSBL.Clients.Logger.system.debug(\"Getting docking groups for \", windowName, groupData);\r\n\t\tif (groupData) {\r\n\t\t\tfor (let groupName in groupData) {\r\n\t\t\t\tgroupData[groupName].groupName = groupName;\r\n\t\t\t\tif (groupData[groupName].windowNames.includes(windowName)) {\r\n\t\t\t\t\tmyGroups.push(groupData[groupName]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn myGroups;\r\n\t},\r\n\tonTabListScrollPositionChanged: function (err, response) {\r\n\t\twindowTitleBarStore.setValue({\r\n\t\t\tfield: \"tabListTranslateX\",\r\n\t\t\tvalue: response.data.translateX,\r\n\t\t});\r\n\t},\r\n\tsetTabListScrollPosition: function (translateX) {\r\n\t\tFSBL.Clients.RouterClient.transmit(constants.TAB_SCROLL_POSITION_CHANGED, {\r\n\t\t\ttranslateX,\r\n\t\t});\r\n\t},\r\n\t/**\r\n\t * Handles messages coming from the windowClient.\r\n\t */\r\n\tremoteStateUpdate: function (command, state) {\r\n\t\tconst key = Object.keys(state)[0];\r\n\t\tconst field = `${command}.${key}`;\r\n\t\twindowTitleBarStore.setValue({ field: field, value: state[key] });\r\n\t},\r\n\t/**\r\n\t * Minimizes the window.\r\n\t */\r\n\tclickMinimize: function () {\r\n\t\tfinsembleWindow.minimize(() => {});\r\n\t},\r\n\t/**\r\n\t * Closes the window, allows for cleanup. Removes the window from workspace; this function is only invoked when the user clicks the close button.\r\n\t */\r\n\tclickClose: function () {\r\n\t\tFSBL.Clients.WindowClient.close({\r\n\t\t\tcloseWindow: true,\r\n\t\t\tremoveFromWorkspace: true, // this will cause the entire stack to close. Using this instead of a new parameter to ensure backwards compatibility\r\n\t\t\tuserInitiated: true,\r\n\t\t});\r\n\t},\r\n\t/**\r\n\t * Toggles group membership. If two windows are snapped, and this button is clicked, they become part of the same group that can be moved around together.\r\n\t */\r\n\ttoggleGroup: function () {\r\n\t\tconst groups = windowTitleBarStore.getValue({ field: \"Main.dockingGroups\" });\r\n\t\tconst isInMovableGroup = groups.some((group: any) => group.isMovable);\r\n\t\tif (isInMovableGroup) {\r\n\t\t\tfinsembleWindow.ejectFromGroup();\r\n\t\t} else {\r\n\t\t\tfinsembleWindow.formGroup();\r\n\t\t}\r\n\t},\r\n\t/**\r\n\t * Maximizes the window.\r\n\t */\r\n\tclickMaximize: function () {\r\n\t\tif (finsembleWindow.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)\r\n\t\t\treturn finsembleWindow.maximize(() => {\r\n\t\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\t\tfield: \"Maximize.maximized\",\r\n\t\t\t\t\tvalue: true,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn finsembleWindow.restore(() => {\r\n\t\t\twindowTitleBarStore.setValue({\r\n\t\t\t\tfield: \"Maximize.maximized\",\r\n\t\t\t\tvalue: false,\r\n\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\tgetTabs() {\r\n\t\treturn windowTitleBarStore.getValue({ field: \"tabs\" }) as WindowIdentifier[];\r\n\t},\r\n\t_setTabs(tabs) {\r\n\t\tFSBL.Clients.Logger.system.debug(\"Set tabs\", tabs);\r\n\t\tlet activeIdentifier: any = finsembleWindow.identifier;\r\n\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\r\n\t\treturn windowTitleBarStore.setValue({\r\n\t\t\tfield: \"tabs\",\r\n\t\t\tvalue: tabs || [activeIdentifier],\r\n\t\t});\r\n\t},\r\n\taddTabLocally: function (windowIdentifier, i) {\r\n\t\tlet tabs = Actions.getTabs();\r\n\t\tif (typeof i === \"undefined\") {\r\n\t\t\ti = tabs.length + 1;\r\n\t\t}\r\n\t\ttabs.splice(i, 0, windowIdentifier);\r\n\t\tActions._setTabs(tabs);\r\n\t},\r\n\tremoveTabsLocally: function () {\r\n\t\tActions._setTabs(null);\r\n\t},\r\n\tremoveTabLocally: function (windowIdentifier) {\r\n\t\tlet tabs = Actions.getTabs();\r\n\t\tlet i = tabs.findIndex((el) => el.windowName === windowIdentifier.windowName && el.uuid === windowIdentifier.uuid);\r\n\t\ttabs.splice(i, 1);\r\n\t\tActions._setTabs(tabs);\r\n\t},\r\n\treorderTabLocally: function (tab, newIndex) {\r\n\t\tlet tabs = Actions.getTabs();\r\n\t\tlet { currentIndex } = Actions.findTab(tab);\r\n\t\tif (currentIndex === newIndex) return;\r\n\t\tif (currentIndex === -1) {\r\n\t\t\treturn Actions.addTabLocally(tab, newIndex);\r\n\t\t}\r\n\t\ttabs.splice(currentIndex, 1);\r\n\t\ttabs.splice(newIndex, 0, tab);\r\n\r\n\t\tActions._setTabs(tabs);\r\n\t},\r\n\taddTab: function (windowIdentifier, i) {\r\n\t\tlet tabs = Actions.getTabs();\r\n\t\ttabs.push(windowIdentifier);\r\n\t\t// quick UI update\r\n\t\tActions._setTabs(tabs);\r\n\t\tlet callback = () => {\r\n\t\t\tActions.parentWrapper?.setVisibleWindow({ windowIdentifier });\r\n\t\t};\r\n\r\n\t\tif (!Actions.parentWrapper) {\r\n\t\t\treturn Actions.createParentWrapper({\r\n\t\t\t\twindowIdentifiers: finsembleWindow.identifier\r\n\t\t\t\t\t? [finsembleWindow.identifier, windowIdentifier]\r\n\t\t\t\t\t: [windowIdentifier],\r\n\t\t\t\tvisibleWindowIdentifier: windowIdentifier,\r\n\t\t\t\tcreate: true,\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn Actions.parentWrapper.addWindow({ windowIdentifier, position: i }, callback);\r\n\t},\r\n\tremoveTab: function (windowIdentifier, i) {\r\n\t\treturn Actions.parentWrapper?.removeWindow({\r\n\t\t\twindowIdentifier,\r\n\t\t\tposition: i,\r\n\t\t});\r\n\t},\r\n\tcloseTab: function (windowIdentifier) {\r\n\t\tconst close: StandardCallback = (err, wrap) => {\r\n\t\t\twrap.close({ removeFromWorkspace: true });\r\n\t\t};\r\n\t\tFSBL.FinsembleWindow.getInstance(windowIdentifier, close);\r\n\t},\r\n\treorderTab: function (tab, newIndex) {\r\n\t\tlet tabs = Actions.getTabs();\r\n\t\tlet { currentIndex } = Actions.findTab(tab);\r\n\t\tif (currentIndex === -1 || !Actions.parentWrapper) {\r\n\t\t\treturn Actions.addTab(tab, newIndex);\r\n\t\t}\r\n\t\ttabs.splice(currentIndex, 1);\r\n\t\ttabs.splice(newIndex, 0, tab);\r\n\t\t// Local change, quickly updates the dom.\r\n\t\tActions._setTabs(tabs);\r\n\t\tActions.parentWrapper.reorder({ windowIdentifiers: tabs });\r\n\t},\r\n\tfindTab: function (tab) {\r\n\t\tlet tabs = this.getTabs();\r\n\t\tlet currentIndex = tabs.findIndex((el) => tab.windowName === el.windowName && tab.uuid === el.uuid);\r\n\t\treturn { tab, currentIndex };\r\n\t},\r\n\tsetActiveTab: function (windowIdentifier) {\r\n\t\tFSBL.Clients.Logger.system.debug(\"setActiveTab.visibleWindow\");\r\n\t\treturn finsembleWindow.parentWindow.setVisibleWindow({ windowIdentifier });\r\n\t},\r\n\tparentWrapper: null,\r\n\tonTabListChanged: function (err, response) {\r\n\t\tFSBL.Clients.Logger.system.debug(\"OnTabListChanged\", response.data);\r\n\t\tif (response.data && response.data.hasOwnProperty(constants.CHILD_WINDOW_FIELD)) {\r\n\t\t\tActions._setTabs(response.data[constants.CHILD_WINDOW_FIELD]);\r\n\t\t}\r\n\t},\r\n\tparentSubscriptions: [],\r\n\tstopListeningOnParentWrapper: function (cb) {\r\n\t\tActions.parentSubscriptions.forEach((sub) => {\r\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(sub);\r\n\t\t});\r\n\t\tActions.parentSubscriptions = []; // remove the subscribeId\r\n\t\t// Syncs scroll state across all tabs in a stack.\r\n\t\tFSBL.Clients.RouterClient.removeListener(\r\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\r\n\t\t\tActions.onTabListScrollPositionChanged\r\n\t\t);\r\n\t\tcb();\r\n\t},\r\n\tlistenOnParentWrapper: function () {\r\n\t\tlet TABLIST_SUBSCRIPTION = FSBL.Clients.RouterClient.subscribe(\r\n\t\t\tconstants.PARENT_WRAPPER_UPDATES,\r\n\t\t\tActions.onTabListChanged\r\n\t\t);\r\n\t\tFSBL.Clients.RouterClient.addListener(\r\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\r\n\t\t\tActions.onTabListScrollPositionChanged\r\n\t\t);\r\n\t\tActions.parentSubscriptions.push(TABLIST_SUBSCRIPTION);\r\n\t},\r\n\tsetupStore: function (cb = Function.prototype) {\r\n\t\tconstants = {\r\n\t\t\tPARENT_WRAPPER_UPDATES: `Finsemble.StackedWindow.${Actions.parentWrapper?.identifier?.windowName}`,\r\n\t\t\tCHILD_WINDOW_FIELD: \"childWindowIdentifiers\",\r\n\t\t\tVISIBLE_WINDOW_FIELD: \"visibleWindowIdentifier\",\r\n\t\t\tTAB_SCROLL_POSITION_CHANGED: `${Actions.parentWrapper?.name}.tabListTabListScrollPositionChanged`,\r\n\t\t};\r\n\t\tActions.listenOnParentWrapper();\r\n\t\tcb();\r\n\t},\r\n\tgetInitialTabList: function (cb) {\r\n\t\tfinsembleWindow.getParent((err, parentWrapper) => {\r\n\t\t\tActions.parentWrapper = parentWrapper;\r\n\t\t\tif (Actions.parentWrapper) {\r\n\t\t\t\tFSBL.Clients.Logger.system.debug(\"GetInitialTabList, parent exists\");\r\n\t\t\t\tActions.setupStore(cb);\r\n\t\t\t} else {\r\n\t\t\t\tlet activeIdentifier: any = finsembleWindow.identifier;\r\n\t\t\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\r\n\t\t\t\tlet tabs = [activeIdentifier];\r\n\t\t\t\tcb(null, tabs);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\tcreateParentWrapper(params: ParentParams, cb = Function.prototype) {\r\n\t\t(window as any).Actions = Actions;\r\n\t\tif (Actions.parentWrapper) {\r\n\t\t\tcb();\r\n\t\t} else {\r\n\t\t\tconst getStackedWindowCallback: StandardCallback = (err, wrap) => {\r\n\t\t\t\tif (err) {\r\n\t\t\t\t\tActions.parentWrapper = null;\r\n\t\t\t\t\tActions._setTabs(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tActions.parentWrapper = wrap;\r\n\t\t\t\t\tActions.setupStore(cb);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tgetStackedWindow(params, getStackedWindowCallback);\r\n\t\t}\r\n\t},\r\n};\r\n\r\n/**\r\n * Initializes the store for the windowTitleBar.\r\n *\r\n * @param {any} cb\r\n */\r\nfunction initialize(cb: Function) {\r\n\tFSBL.Clients.DistributedStoreClient.createStore(\r\n\t\t{ store: \"windowTitleBarStore\", values: windowTitleBarStoreDefaults },\r\n\t\t(err, store) => {\r\n\t\t\tif (!err && store) {\r\n\t\t\t\twindowTitleBarStore = store;\r\n\t\t\t}\r\n\t\t\tActions.initialize();\r\n\t\t\treturn cb(store, Actions);\r\n\t\t}\r\n\t);\r\n}\r\n\r\nlet getStore = () => windowTitleBarStore;\r\n\r\nclass StoreManager {\r\n\tinitialized = false;\r\n\r\n\tinitializing = false;\r\n\r\n\tstore: StoreModel | null = null;\r\n\r\n\tcallbacks: Function[] = [];\r\n\r\n\tconstructor() {}\r\n\r\n\tinitialize() {\r\n\t\tif (this.initializing) return;\r\n\t\tthis.initializing = true;\r\n\t\tinitialize((store: StoreModel) => {\r\n\t\t\tthis.initialized = true;\r\n\t\t\tthis.store = store;\r\n\t\t\tthis.callbacks.forEach((cb) => cb(store));\r\n\t\t});\r\n\t}\r\n\r\n\taddInitializedListener(cb: Function) {\r\n\t\tif (this.initialized) return cb(this.store);\r\n\t\tthis.callbacks.push(cb);\r\n\t}\r\n\r\n\tremoveInitializedListener(cb: Function) {\r\n\t\tthis.callbacks = this.callbacks.filter((entry) => entry !== cb);\r\n\t}\r\n}\r\nconst storeManager = new StoreManager();\r\n\r\nexport { storeManager };\r\nexport { initialize };\r\nexport { windowTitleBarStore as Store };\r\nexport { Actions };\r\nexport { getStore };\r\n"]}
1
+ {"version":3,"file":"windowTitleBarStore.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/stores/windowTitleBarStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport windowTitleBarStoreDefaults from \"./windowTitleBarStoreDefaults\";\nimport { StandardCallback } from \"@finsemble/finsemble-core/types/types\";\nimport { FinsembleWindow, WindowIdentifier } from \"@finsemble/finsemble-core\";\nimport StoreModel from \"@finsemble/finsemble-core/types/clients/StoreModel\";\n\nconst getWindowNameForDocking = (finsembleWindow: FinsembleWindow) => {\n\tconst parent = finsembleWindow.parentWindow;\n\treturn parent ? parent.name : finsembleWindow.name;\n};\n\ntype ParentParams = {\n\twindowIdentifiers: WindowIdentifier[];\n\tvisibleWindowIdentifier: WindowIdentifier;\n\tcreate: boolean;\n};\n\nconst getStackedWindow = (params: ParentParams, cb: StandardCallback) => {\n\tif (!finsembleWindow.parentWindow && params.create) {\n\t\tconst onParentSet = (evt: any) => {\n\t\t\tconst { parentName } = evt.data;\n\t\t\tfinsembleWindow.setParent({ windowName: parentName }, (err2, windowWrapper) => {\n\t\t\t\tcb?.(err2, windowWrapper);\n\t\t\t});\n\t\t\tfinsembleWindow.removeListener(\"parent-set\", onParentSet);\n\t\t};\n\t\tfinsembleWindow.addListener(\"parent-set\", onParentSet);\n\t\tFSBL.Clients.LauncherClient.spawn(\n\t\t\t\"StackedWindow\",\n\t\t\t{\n\t\t\t\twindowType: \"StackedWindow\",\n\t\t\t\tdata: { windowIdentifiers: params.windowIdentifiers },\n\t\t\t\toptions: { newStack: true },\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (!err) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcb?.(err, null);\n\t\t\t}\n\t\t);\n\t} else {\n\t\tfinsembleWindow.getParent(cb);\n\t}\n};\n\nlet windowTitleBarStore: StoreModel;\n\ntype ConstantsType = {\n\tPARENT_WRAPPER_UPDATES: string;\n\tCHILD_WINDOW_FIELD: string;\n\tVISIBLE_WINDOW_FIELD: string;\n\tTAB_SCROLL_POSITION_CHANGED: string;\n};\n\ntype ActionsType = {\n\tparentWrapperStore: any;\n\tparentSubscriptions: any[];\n\tparentWrapper: FinsembleWindow | null;\n\n\tinitialize: () => void;\n\tgetMyDockingGroups: (groupData: any) => any[];\n\tonTabListScrollPositionChanged: StandardCallback;\n\tsetTabListScrollPosition: (translateX: number) => void;\n\tremoteStateUpdate: (command: string, state: any) => void;\n\tclickMinimize: () => void;\n\tclickClose: () => void;\n\ttoggleGroup: () => void;\n\tclickMaximize: () => void;\n\tgetTabs: () => WindowIdentifier[];\n\t_setTabs: (tabs: WindowIdentifier[] | null) => any;\n\taddTabLocally: (windowIdentifier: WindowIdentifier, i: number) => void;\n\tremoveTabsLocally: () => void;\n\tremoveTabLocally: (windowIdentifier: WindowIdentifier) => void;\n\treorderTabLocally: (tab: WindowIdentifier, newIndex: number) => undefined | any;\n\taddTab: (windowIdentifier: WindowIdentifier, i: number) => any;\n\tremoveTab: (windowIdentifier: WindowIdentifier, i: number) => any;\n\tcloseTab: (windowIdentifier: WindowIdentifier) => void;\n\treorderTab: (tab: WindowIdentifier, newIndex: number) => any;\n\tfindTab: (tab: WindowIdentifier) => { tab: WindowIdentifier; currentIndex: number };\n\tsetActiveTab: (windowIdentifier: WindowIdentifier) => Promise<any>;\n\tonTabListChanged: StandardCallback;\n\tstopListeningOnParentWrapper: (cb: Function) => void;\n\tlistenOnParentWrapper: () => void;\n\tsetupStore: (cb?: Function) => void;\n\tgetInitialTabList: (cb: StandardCallback) => void;\n\tcreateParentWrapper: (params: ParentParams, cb?: Function) => void;\n};\n\n// these are constants that are set inside of setupStore. so they're declared as vars and not constants.\nlet constants: ConstantsType;\nconst Actions: ActionsType = {\n\tparentWrapperStore: null,\n\tinitialize: function () {\n\t\t// This ensures that our config is correct, even if the developer missed some entries\n\t\tlet { options } = FSBL.Clients.WindowClient;\n\t\tlet windowTitleBarConfig = options.customData.foreign.components[\"Window Manager\"];\n\t\tlet { FSBLHeader } = windowTitleBarConfig;\n\t\tlet self = this;\n\n\t\t// Display name is first up for display. If it doesn't exist, we look for a default title (or one that's already set on init). If no title, we display the window's name (e.g., '5434-Welcome Component-2321').\n\t\tconst displayName = options.customData?.component?.displayName;\n\n\t\t/**\n\t\t * The windowTitleBar (header) is dumb. It just reflects the state of the component window. The headerCommandChannel allows the WindowClient to take control of the state of the header. All of the details of listening to window events are handled inside the WindowClient\n\t\t */\n\t\tFSBL.Clients.WindowClient.headerCommandChannel((command, state) => {\n\t\t\tthis.remoteStateUpdate(command, state);\n\t\t});\n\n\t\t/**\n\t\t * \"FSBLHeader\" can be true, false or an object. If false then we'll never even be here. If true, then maximize, minimize and close buttons will display. If an object, then the developer can override whether buttons are shown with \"hideMaximize\", \"hideMinimize\" and \"hideClose\"\n\t\t */\n\t\tif (FSBLHeader) {\n\t\t\tconst max = !!FSBLHeader.hideMaximize;\n\n\t\t\twindowTitleBarStore.setValues([\n\t\t\t\t{ field: \"Maximize.hide\", value: max },\n\t\t\t\t{ field: \"Minimize.hide\", value: !!FSBLHeader.hideMinimize },\n\t\t\t\t{ field: \"Close.hide\", value: !!FSBLHeader.hideClose },\n\t\t\t\t{ field: \"AlwaysOnTop.show\", value: !!FSBLHeader.alwaysOnTop },\n\t\t\t]);\n\n\t\t\t// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"hackScrollbar\",\n\t\t\t\tvalue: windowTitleBarConfig.hackScrollbar !== false,\n\t\t\t});\n\n\t\t\tconst title = FSBL.Clients.WindowClient.title || windowTitleBarConfig.title || displayName;\n\n\t\t\tif (title) {\n\t\t\t\tdocument.title = title;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Handles whether to show the linker button.\n\t\t */\n\t\tif (windowTitleBarConfig.showLinker) {\n\t\t\t// Get state (channel membership) from the linkerClient. Then set the value in the header so that the title bar accurately reflects the state.\n\t\t\tconst cb: StandardCallback = (err, response) => {\n\t\t\t\tif (response.channels) {\n\t\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\t\tfield: \"Linker.channels\",\n\t\t\t\t\t\tvalue: response.channels,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\t\t\tvalue: true,\n\t\t\t\t});\n\t\t\t};\n\t\t\tcb(null, FSBL.Clients.LinkerClient.getState());\n\t\t\t/* [Terry] no longer necessary?\n\t\t\tFSBL.Clients.LinkerClient.getLinkedChannels({\n\t\t\t\twindowName: options.name,\n\t\t\t\tuuid: options.uuid,\n\t\t\t\tcomponentType: options.customData.component.type\n\t\t\t}, cb);\n\t\t\t*/\n\t\t\tFSBL.Clients.LinkerClient.onStateChange(cb);\n\t\t}\n\n\t\t/**\n\t\t * Listen for updates from the dragAndDropClient.\n\t\t */\n\t\tFSBL.Clients.RouterClient.subscribe(\n\t\t\t`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`,\n\t\t\t(err, response) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn console.error(err);\n\t\t\t\t}\n\t\t\t\twindowTitleBarStore.setValues([\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\t\t\tvalue: response.data.emitterEnabled,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: \"Sharer.receiverEnabled\",\n\t\t\t\t\t\tvalue: response.data.receiverEnabled,\n\t\t\t\t\t},\n\t\t\t\t]);\n\t\t\t}\n\t\t);\n\n\t\t/**\n\t\t * When a group update is publish, we sift through the data to see if this window is snapped or grouped with other windows. Then we publish that info, and the GroupingButton renders the correct icon.\n\t\t * @param {*} err\n\t\t * @param {*} response\n\t\t */\n\t\tconst onDockingGroupUpdate: StandardCallback = function (err, response) {\n\t\t\tif (err || !response.data || !response.data.groupData) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tFSBL.Clients.Logger.system.debug(\"On docking group update\", response.data.groupData);\n\t\t\tlet groupNames = Object.keys(response.data.groupData);\n\t\t\tlet movableGroups = groupNames\n\t\t\t\t.filter((groupName) => response.data.groupData[groupName].isMovable)\n\t\t\t\t.map((groupName) => response.data.groupData[groupName]);\n\t\t\t// This is all movable and snapped groups. It's used later to figure out the icon to display.\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\tvalue: response.data.groupData,\n\t\t\t});\n\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Main.allMovableDockingGroups\",\n\t\t\t\tvalue: movableGroups,\n\t\t\t});\n\t\t\tlet myGroups = self.getMyDockingGroups(response.data.groupData);\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Main.dockingGroups\",\n\t\t\t\tvalue: myGroups,\n\t\t\t});\n\t\t\t/**\n\t\t\t * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.\n\t\t\t */\n\t\t\tlet isSnapped = false;\n\t\t\tlet isInMovableGroup = false;\n\t\t\tlet isTopRight = false;\n\t\t\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\t\t\tfor (let i = 0; i < myGroups.length; i++) {\n\t\t\t\tlet myGroup = myGroups[i];\n\t\t\t\tif (myGroup.isMovable) {\n\t\t\t\t\tisInMovableGroup = true;\n\t\t\t\t\tif (windowName == myGroup.topRightWindow) {\n\t\t\t\t\t\tisTopRight = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisSnapped = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet icon: string | false = false;\n\n\t\t\tif (isSnapped) {\n\t\t\t\ticon = \"joiner\";\n\t\t\t}\n\t\t\tif (isInMovableGroup) {\n\t\t\t\ticon = \"ejector\";\n\t\t\t}\n\n\t\t\twindowTitleBarStore.setValues([\n\t\t\t\t{ field: \"isSnapped\", value: isSnapped },\n\t\t\t\t{ field: \"isGrouped\", value: isInMovableGroup },\n\t\t\t\t{ field: \"isTopRight\", value: isTopRight },\n\t\t\t\t{ field: \"Main.dockingIcon\", value: icon },\n\t\t\t]);\n\t\t};\n\n\t\tFSBL.Clients.RouterClient.subscribe(\"Finsemble.WorkspaceService.groupUpdate\", onDockingGroupUpdate);\n\n\t\t// default title.\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Main.windowTitle\",\n\t\t\tvalue: FSBL.Clients.WindowClient.getWindowTitle(),\n\t\t});\n\n\t\tconst getValuesCallback: StandardCallback = (err, values) => {\n\t\t\tconst finsembleConfig = values.finsemble;\n\n\t\t\t// Check FEA config for DOM based movement configuration\n\t\t\tconst { useDOMBasedMovement } = values[\"finsemble-electron-adapter\"];\n\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Main.useDOMBasedMovement\",\n\t\t\t\tvalue: typeof useDOMBasedMovement === \"undefined\" ? true : useDOMBasedMovement,\n\t\t\t});\n\n\t\t\tlet globalWindowManagerConfig = finsembleConfig[\"Window Manager\"] || {\n\t\t\t\talwaysOnTopIcon: false,\n\t\t\t\tshowTabs: false,\n\t\t\t}; // Override defaults if finsemble.Window Manager exists.\n\n\t\t\t// Look to see if docking is enabled. Cascade through backward compatibility with old \"betaFeatures\" and then a default if no config is found at all.\n\n\t\t\tif (!finsembleConfig.servicesConfig) finsembleConfig.servicesConfig = {};\n\t\t\tlet dockingConfig = finsembleConfig.servicesConfig.docking || finsembleConfig.docking;\n\t\t\tif (!dockingConfig && finsembleConfig.betaFeatures) dockingConfig = finsembleConfig.betaFeatures.docking;\n\t\t\tif (!dockingConfig) dockingConfig = { enabled: true };\n\t\t\tif (!dockingConfig.tabbing) dockingConfig.tabbing = {};\n\n\t\t\twindowTitleBarStore.setValues([{ field: \"Main.dockingEnabled\", value: dockingConfig.enabled }]);\n\n\t\t\t// Whether the alwaysOnTop pin shows or not depends first on the global setting (finsemble[\"Window Manager\"].alwaysOnTop) and then\n\t\t\t// on the specific setting for this component (foreign.components[\"Widow Manager\"].alwaysOnTop)\n\t\t\tlet { alwaysOnTopIcon } = globalWindowManagerConfig;\n\t\t\tif (windowTitleBarConfig.alwaysOnTopIcon === false || windowTitleBarConfig.alwaysOnTopIcon === true)\n\t\t\t\t({ alwaysOnTopIcon } = windowTitleBarConfig);\n\n\t\t\twindowTitleBarStore.setValues([{ field: \"AlwaysOnTop.show\", value: alwaysOnTopIcon }]);\n\n\t\t\t// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.\n\t\t\tif (dockingConfig.tabbing.enabled === false) {\n\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\tfield: \"showTabs\",\n\t\t\t\t\tvalue: dockingConfig.tabbing.enabled,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\tfield: \"allowTabEditing\",\n\t\t\t\t\tvalue: dockingConfig.tabbing.allowEditing !== undefined ? dockingConfig.tabbing.allowEditing : true,\n\t\t\t\t});\n\n\t\t\t\t// If tabbing is enabled system-wide, look to the global config for its value. Then look to the local component's config.\n\n\t\t\t\t// This is the global window manager config.\n\t\t\t\tif (typeof windowTitleBarConfig.showTabs !== \"boolean\") {\n\t\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\t\tfield: \"showTabs\",\n\t\t\t\t\t\tvalue: globalWindowManagerConfig.showTabs,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// This is the component's config.\n\t\t\t\tif (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {\n\t\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\t\tfield: \"showTabs\",\n\t\t\t\t\t\tvalue: windowTitleBarConfig.showTabs,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]\n\t\t\t\tlet showTabs = true;\n\t\t\t\tconst getOptionsCallback: StandardCallback = (_, opts) => {\n\t\t\t\t\tif (opts.customData && opts.customData.foreign && opts.customData.foreign.services) {\n\t\t\t\t\t\tif (opts.customData.foreign.services.windowService) {\n\t\t\t\t\t\t\tif (opts.customData.foreign.services.windowService.allowTabbing !== undefined) {\n\t\t\t\t\t\t\t\tshowTabs = opts.customData.foreign.services.windowService.allowTabbing;\n\t\t\t\t\t\t\t} else if (opts.customData.foreign.services.windowService.ignoreTilingAndTabbingRequests != undefined) {\n\t\t\t\t\t\t\t\tshowTabs = !opts.customData.foreign.services.windowService.ignoreTilingAndTabbingRequests;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (opts.customData.foreign.services.dockingService) {\n\t\t\t\t\t\t\tif (opts.customData.foreign.services.dockingService.allowTabbing !== undefined) {\n\t\t\t\t\t\t\t\tshowTabs = opts.customData.foreign.services.dockingService.allowTabbing;\n\t\t\t\t\t\t\t} else if (opts.customData.foreign.services.dockingService.ignoreTilingAndTabbingRequests != undefined) {\n\t\t\t\t\t\t\t\tshowTabs = !opts.customData.foreign.services.dockingService.ignoreTilingAndTabbingRequests;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\t\tfield: \"showTabs\",\n\t\t\t\t\t\tvalue: showTabs,\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tfinsembleWindow.getOptions(getOptionsCallback);\n\t\t\t}\n\t\t};\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[{ field: \"finsemble\" }, { field: \"finsemble-electron-adapter\" }],\n\t\t\tgetValuesCallback\n\t\t);\n\n\t\tActions.getInitialTabList((err, values) => {\n\t\t\tconst onParentSet = () => {\n\t\t\t\tActions.parentWrapper = null;\n\t\t\t\tActions.getInitialTabList(() => {\n\t\t\t\t\tFSBL.Clients.Logger.system.debug(\"docking group update after initial tab list\");\n\t\t\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\t\t\tconst onParentCleared = () => {\n\t\t\t\tActions.parentWrapper = null;\n\t\t\t\tFSBL.Clients.Logger.system.debug(\"ClearParent, setting tabs to null\");\n\t\t\t\tActions.stopListeningOnParentWrapper(() => {\n\t\t\t\t\tActions.parentWrapperStore = null;\n\t\t\t\t\tActions._setTabs(null);\n\t\t\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tfinsembleWindow?.addListener(\"setParent\", onParentSet);\n\t\t\tfinsembleWindow?.addListener(\"clearParent\", onParentCleared);\n\t\t\tif (err) {\n\t\t\t\treturn FSBL.Clients.Logger.system.error(\"Error in getInitialTabList.\", err);\n\t\t\t}\n\n\t\t\tif (values) Actions._setTabs(values);\n\t\t});\n\t},\n\t/**\n\t * Helper function to sift through all of the data coming from the windowService. Outputs an array of groups that the window belongs to.\n\t */\n\tgetMyDockingGroups: function (groupData) {\n\t\tlet myGroups = [];\n\t\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\t\tif (finsembleWindow?.parentWindow) {\n\t\t\twindowName = finsembleWindow?.parentWindow.name;\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"Getting docking groups for \", windowName, groupData);\n\t\tif (groupData) {\n\t\t\tfor (let groupName in groupData) {\n\t\t\t\tgroupData[groupName].groupName = groupName;\n\t\t\t\tif (groupData[groupName].windowNames.includes(windowName)) {\n\t\t\t\t\tmyGroups.push(groupData[groupName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn myGroups;\n\t},\n\tonTabListScrollPositionChanged: function (err, response) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"tabListTranslateX\",\n\t\t\tvalue: response.data.translateX,\n\t\t});\n\t},\n\tsetTabListScrollPosition: function (translateX) {\n\t\tFSBL.Clients.RouterClient.transmit(constants.TAB_SCROLL_POSITION_CHANGED, {\n\t\t\ttranslateX,\n\t\t});\n\t},\n\t/**\n\t * Handles messages coming from the windowClient.\n\t */\n\tremoteStateUpdate: function (command, state) {\n\t\tconst key = Object.keys(state)[0];\n\t\tconst field = `${command}.${key}`;\n\t\twindowTitleBarStore.setValue({ field: field, value: state[key] });\n\t},\n\t/**\n\t * Minimizes the window.\n\t */\n\tclickMinimize: function () {\n\t\tfinsembleWindow.minimize(() => {});\n\t},\n\t/**\n\t * Closes the window, allows for cleanup. Removes the window from workspace; this function is only invoked when the user clicks the close button.\n\t */\n\tclickClose: function () {\n\t\tFSBL.Clients.WindowClient.close({\n\t\t\tcloseWindow: true,\n\t\t\tremoveFromWorkspace: true, // this will cause the entire stack to close. Using this instead of a new parameter to ensure backwards compatibility\n\t\t\tuserInitiated: true,\n\t\t});\n\t},\n\t/**\n\t * Toggles group membership. If two windows are snapped, and this button is clicked, they become part of the same group that can be moved around together.\n\t */\n\ttoggleGroup: function () {\n\t\tconst groups = windowTitleBarStore.getValue({ field: \"Main.dockingGroups\" });\n\t\tconst isInMovableGroup = groups.some((group: any) => group.isMovable);\n\t\tif (isInMovableGroup) {\n\t\t\tfinsembleWindow.ejectFromGroup();\n\t\t} else {\n\t\t\tfinsembleWindow.formGroup();\n\t\t}\n\t},\n\t/**\n\t * Maximizes the window.\n\t */\n\tclickMaximize: function () {\n\t\tif (finsembleWindow.windowOptions.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)\n\t\t\treturn finsembleWindow.maximize(() => {\n\t\t\t\twindowTitleBarStore.setValue({\n\t\t\t\t\tfield: \"Maximize.maximized\",\n\t\t\t\t\tvalue: true,\n\t\t\t\t});\n\t\t\t});\n\n\t\treturn finsembleWindow.restore(() => {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Maximize.maximized\",\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t});\n\t},\n\n\tgetTabs() {\n\t\treturn windowTitleBarStore.getValue({ field: \"tabs\" }) as WindowIdentifier[];\n\t},\n\t_setTabs(tabs) {\n\t\tFSBL.Clients.Logger.system.debug(\"Set tabs\", tabs);\n\t\tlet activeIdentifier: any = finsembleWindow.identifier;\n\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\n\t\treturn windowTitleBarStore.setValue({\n\t\t\tfield: \"tabs\",\n\t\t\tvalue: tabs || [activeIdentifier],\n\t\t});\n\t},\n\taddTabLocally: function (windowIdentifier, i) {\n\t\tlet tabs = Actions.getTabs();\n\t\tif (typeof i === \"undefined\") {\n\t\t\ti = tabs.length + 1;\n\t\t}\n\t\ttabs.splice(i, 0, windowIdentifier);\n\t\tActions._setTabs(tabs);\n\t},\n\tremoveTabsLocally: function () {\n\t\tActions._setTabs(null);\n\t},\n\tremoveTabLocally: function (windowIdentifier) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet i = tabs.findIndex((el) => el.windowName === windowIdentifier.windowName && el.uuid === windowIdentifier.uuid);\n\t\ttabs.splice(i, 1);\n\t\tActions._setTabs(tabs);\n\t},\n\treorderTabLocally: function (tab, newIndex) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet { currentIndex } = Actions.findTab(tab);\n\t\tif (currentIndex === newIndex) return;\n\t\tif (currentIndex === -1) {\n\t\t\treturn Actions.addTabLocally(tab, newIndex);\n\t\t}\n\t\ttabs.splice(currentIndex, 1);\n\t\ttabs.splice(newIndex, 0, tab);\n\n\t\tActions._setTabs(tabs);\n\t},\n\taddTab: function (windowIdentifier, i) {\n\t\tlet tabs = Actions.getTabs();\n\t\ttabs.push(windowIdentifier);\n\t\t// quick UI update\n\t\tActions._setTabs(tabs);\n\t\tlet callback = () => {\n\t\t\tActions.parentWrapper?.setVisibleWindow({ windowIdentifier });\n\t\t};\n\n\t\tif (!Actions.parentWrapper) {\n\t\t\treturn Actions.createParentWrapper({\n\t\t\t\twindowIdentifiers: finsembleWindow.identifier\n\t\t\t\t\t? [finsembleWindow.identifier, windowIdentifier]\n\t\t\t\t\t: [windowIdentifier],\n\t\t\t\tvisibleWindowIdentifier: windowIdentifier,\n\t\t\t\tcreate: true,\n\t\t\t});\n\t\t}\n\t\treturn Actions.parentWrapper.addWindow({ windowIdentifier, position: i }, callback);\n\t},\n\tremoveTab: function (windowIdentifier, i) {\n\t\treturn Actions.parentWrapper?.removeWindow({\n\t\t\twindowIdentifier,\n\t\t\tposition: i,\n\t\t});\n\t},\n\tcloseTab: function (windowIdentifier) {\n\t\tconst close: StandardCallback = (err, wrap) => {\n\t\t\twrap.close({ removeFromWorkspace: true });\n\t\t};\n\t\tFSBL.FinsembleWindow.getInstance(windowIdentifier, close);\n\t},\n\treorderTab: function (tab, newIndex) {\n\t\tlet tabs = Actions.getTabs();\n\t\tlet { currentIndex } = Actions.findTab(tab);\n\t\tif (currentIndex === -1 || !Actions.parentWrapper) {\n\t\t\treturn Actions.addTab(tab, newIndex);\n\t\t}\n\t\ttabs.splice(currentIndex, 1);\n\t\ttabs.splice(newIndex, 0, tab);\n\t\t// Local change, quickly updates the dom.\n\t\tActions._setTabs(tabs);\n\t\tActions.parentWrapper.reorder({ windowIdentifiers: tabs });\n\t},\n\tfindTab: function (tab) {\n\t\tlet tabs = this.getTabs();\n\t\tlet currentIndex = tabs.findIndex((el) => tab.windowName === el.windowName && tab.uuid === el.uuid);\n\t\treturn { tab, currentIndex };\n\t},\n\tsetActiveTab: function (windowIdentifier) {\n\t\tFSBL.Clients.Logger.system.debug(\"setActiveTab.visibleWindow\");\n\t\treturn finsembleWindow.parentWindow.setVisibleWindow({ windowIdentifier });\n\t},\n\tparentWrapper: null,\n\tonTabListChanged: function (err, response) {\n\t\tFSBL.Clients.Logger.system.debug(\"OnTabListChanged\", response.data);\n\t\tif (response.data && response.data.hasOwnProperty(constants.CHILD_WINDOW_FIELD)) {\n\t\t\tActions._setTabs(response.data[constants.CHILD_WINDOW_FIELD]);\n\t\t}\n\t},\n\tparentSubscriptions: [],\n\tstopListeningOnParentWrapper: function (cb) {\n\t\tActions.parentSubscriptions.forEach((sub) => {\n\t\t\tFSBL.Clients.RouterClient.unsubscribe(sub);\n\t\t});\n\t\tActions.parentSubscriptions = []; // remove the subscribeId\n\t\t// Syncs scroll state across all tabs in a stack.\n\t\tFSBL.Clients.RouterClient.removeListener(\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\n\t\t\tActions.onTabListScrollPositionChanged\n\t\t);\n\t\tcb();\n\t},\n\tlistenOnParentWrapper: function () {\n\t\tlet TABLIST_SUBSCRIPTION = FSBL.Clients.RouterClient.subscribe(\n\t\t\tconstants.PARENT_WRAPPER_UPDATES,\n\t\t\tActions.onTabListChanged\n\t\t);\n\t\tFSBL.Clients.RouterClient.addListener(\n\t\t\tconstants.TAB_SCROLL_POSITION_CHANGED,\n\t\t\tActions.onTabListScrollPositionChanged\n\t\t);\n\t\tActions.parentSubscriptions.push(TABLIST_SUBSCRIPTION);\n\t},\n\tsetupStore: function (cb = Function.prototype) {\n\t\tconstants = {\n\t\t\tPARENT_WRAPPER_UPDATES: `Finsemble.StackedWindow.${Actions.parentWrapper?.identifier?.windowName}`,\n\t\t\tCHILD_WINDOW_FIELD: \"childWindowIdentifiers\",\n\t\t\tVISIBLE_WINDOW_FIELD: \"visibleWindowIdentifier\",\n\t\t\tTAB_SCROLL_POSITION_CHANGED: `${Actions.parentWrapper?.name}.tabListTabListScrollPositionChanged`,\n\t\t};\n\t\tActions.listenOnParentWrapper();\n\t\tcb();\n\t},\n\tgetInitialTabList: function (cb) {\n\t\tfinsembleWindow.getParent((err, parentWrapper) => {\n\t\t\tActions.parentWrapper = parentWrapper;\n\t\t\tif (Actions.parentWrapper) {\n\t\t\t\tFSBL.Clients.Logger.system.debug(\"GetInitialTabList, parent exists\");\n\t\t\t\tActions.setupStore(cb);\n\t\t\t} else {\n\t\t\t\tlet activeIdentifier: any = finsembleWindow.identifier;\n\t\t\t\tactiveIdentifier.title = finsembleWindow.windowOptions.title;\n\t\t\t\tlet tabs = [activeIdentifier];\n\t\t\t\tcb(null, tabs);\n\t\t\t}\n\t\t});\n\t},\n\tcreateParentWrapper(params: ParentParams, cb = Function.prototype) {\n\t\t(window as any).Actions = Actions;\n\t\tif (Actions.parentWrapper) {\n\t\t\tcb();\n\t\t} else {\n\t\t\tconst getStackedWindowCallback: StandardCallback = (err, wrap) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tActions.parentWrapper = null;\n\t\t\t\t\tActions._setTabs(null);\n\t\t\t\t} else {\n\t\t\t\t\tActions.parentWrapper = wrap;\n\t\t\t\t\tActions.setupStore(cb);\n\t\t\t\t}\n\t\t\t};\n\t\t\tgetStackedWindow(params, getStackedWindowCallback);\n\t\t}\n\t},\n};\n\n/**\n * Initializes the store for the windowTitleBar.\n *\n * @param {any} cb\n */\nfunction initialize(cb: Function) {\n\tFSBL.Clients.DistributedStoreClient.createStore(\n\t\t{ store: \"windowTitleBarStore\", values: windowTitleBarStoreDefaults },\n\t\t(err, store) => {\n\t\t\tif (!err && store) {\n\t\t\t\twindowTitleBarStore = store;\n\t\t\t}\n\t\t\tActions.initialize();\n\t\t\treturn cb(store, Actions);\n\t\t}\n\t);\n}\n\nlet getStore = () => windowTitleBarStore;\n\nclass StoreManager {\n\tinitialized = false;\n\n\tinitializing = false;\n\n\tstore: StoreModel | null = null;\n\n\tcallbacks: Function[] = [];\n\n\tconstructor() {}\n\n\tinitialize() {\n\t\tif (this.initializing) return;\n\t\tthis.initializing = true;\n\t\tinitialize((store: StoreModel) => {\n\t\t\tthis.initialized = true;\n\t\t\tthis.store = store;\n\t\t\tthis.callbacks.forEach((cb) => cb(store));\n\t\t});\n\t}\n\n\taddInitializedListener(cb: Function) {\n\t\tif (this.initialized) return cb(this.store);\n\t\tthis.callbacks.push(cb);\n\t}\n\n\tremoveInitializedListener(cb: Function) {\n\t\tthis.callbacks = this.callbacks.filter((entry) => entry !== cb);\n\t}\n}\nconst storeManager = new StoreManager();\n\nexport { storeManager };\nexport { initialize };\nexport { windowTitleBarStore as Store };\nexport { Actions };\nexport { getStore };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"windowTitleBarStoreDefaults.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/stores/windowTitleBarStoreDefaults.ts"],"names":[],"mappings":"AAAA,eAAe;IACd,IAAI,EAAE;QACL,WAAW,EAAE,EAAE;QACf,kBAAkB,EAAE,KAAK;QACzB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,KAAK;QACrB,MAAM,EAAE;YACP,KAAK,EAAE;gBACN,KAAK,EAAE,EAAE;aACT;SACD;QACD,mBAAmB,EAAE,IAAI;KACzB;IACD,MAAM,EAAE;QACP,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,KAAK;KACtB;IACD,MAAM,EAAE;QACP,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,EAAE;QACf,gBAAgB,EAAE,KAAK;KACvB;IACD,KAAK,EAAE;QACN,IAAI,EAAE,KAAK;KACX;IACD,QAAQ,EAAE;QACT,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;KACX;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,KAAK;KACX;IACD,OAAO,EAAE;QACR,OAAO,EAAE,KAAK;KACd;IACD,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;CACb,CAAC","sourcesContent":["export default {\r\n\tMain: {\r\n\t\twindowTitle: \"\",\r\n\t\tshowDockingTooltip: false,\r\n\t\tdockingIcon: false,\r\n\t\tdockingEnabled: false,\r\n\t\tmains2: {\r\n\t\t\tmain3: {\r\n\t\t\t\tmain4: {},\r\n\t\t\t},\r\n\t\t},\r\n\t\tuseDOMBasedMovement: true,\r\n\t},\r\n\tSharer: {\r\n\t\temitterEnabled: false,\r\n\t\treceiverEnabled: false,\r\n\t\treceiverHandler: false,\r\n\t},\r\n\tLinker: {\r\n\t\tchannels: {},\r\n\t\tallChannels: {},\r\n\t\tshowLinkerButton: false,\r\n\t},\r\n\tClose: {\r\n\t\thide: false,\r\n\t},\r\n\tMaximize: {\r\n\t\tmaximized: false,\r\n\t\thide: false,\r\n\t},\r\n\tMinimize: {\r\n\t\thide: false,\r\n\t},\r\n\tEjector: {\r\n\t\tenabled: false,\r\n\t},\r\n\tisSnapped: false,\r\n\tisGrouped: false,\r\n\tisTopRight: false,\r\n\ttabs: [],\r\n\tactiveTab: {},\r\n};\r\n"]}
1
+ {"version":3,"file":"windowTitleBarStoreDefaults.js","sourceRoot":"","sources":["../../../../src/components/windowTitleBar/stores/windowTitleBarStoreDefaults.ts"],"names":[],"mappings":"AAAA,eAAe;IACd,IAAI,EAAE;QACL,WAAW,EAAE,EAAE;QACf,kBAAkB,EAAE,KAAK;QACzB,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,KAAK;QACrB,MAAM,EAAE;YACP,KAAK,EAAE;gBACN,KAAK,EAAE,EAAE;aACT;SACD;QACD,mBAAmB,EAAE,IAAI;KACzB;IACD,MAAM,EAAE;QACP,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,KAAK;KACtB;IACD,MAAM,EAAE;QACP,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,EAAE;QACf,gBAAgB,EAAE,KAAK;KACvB;IACD,KAAK,EAAE;QACN,IAAI,EAAE,KAAK;KACX;IACD,QAAQ,EAAE;QACT,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;KACX;IACD,QAAQ,EAAE;QACT,IAAI,EAAE,KAAK;KACX;IACD,OAAO,EAAE;QACR,OAAO,EAAE,KAAK;KACd;IACD,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;CACb,CAAC","sourcesContent":["export default {\n\tMain: {\n\t\twindowTitle: \"\",\n\t\tshowDockingTooltip: false,\n\t\tdockingIcon: false,\n\t\tdockingEnabled: false,\n\t\tmains2: {\n\t\t\tmain3: {\n\t\t\t\tmain4: {},\n\t\t\t},\n\t\t},\n\t\tuseDOMBasedMovement: true,\n\t},\n\tSharer: {\n\t\temitterEnabled: false,\n\t\treceiverEnabled: false,\n\t\treceiverHandler: false,\n\t},\n\tLinker: {\n\t\tchannels: {},\n\t\tallChannels: {},\n\t\tshowLinkerButton: false,\n\t},\n\tClose: {\n\t\thide: false,\n\t},\n\tMaximize: {\n\t\tmaximized: false,\n\t\thide: false,\n\t},\n\tMinimize: {\n\t\thide: false,\n\t},\n\tEjector: {\n\t\tenabled: false,\n\t},\n\tisSnapped: false,\n\tisGrouped: false,\n\tisTopRight: false,\n\ttabs: [],\n\tactiveTab: {},\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"windowTitleBarContext.js","sourceRoot":"","sources":["../../../src/components/windowTitleBar/windowTitleBarContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,MAAM,mBAAmB,GAA8B;IACtD,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;IACtB,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,KAAK;IACxB,qBAAqB,EAAE,KAAK;IAC5B,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,IAAW;IACzB,eAAe,EAAE,EAAE;IACnB,WAAW,EAAE,IAAW;IACxB,iBAAiB,EAAE,IAAW;IAC9B,IAAI,EAAE,IAAW;IACjB,cAAc,EAAE,IAAW;IAC3B,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAA4B,mBAAmB,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { TabProperties } from \"../../types/windowTitleBar\";\r\n\r\nexport interface WindowTitleBarContextType {\r\n\tshowDockingButton: string | false;\r\n\tuseDOMBasedMovement: boolean;\r\n\ttabs: TabProperties[];\r\n\tshowLinkerButton: boolean;\r\n\tshowShareButton: boolean;\r\n\tshowTabRegion: boolean;\r\n\tshowAlwaysOnTopButton: boolean;\r\n\tshowMinimizeButton: boolean;\r\n\tshowMaximizeButton: boolean;\r\n\tshowCloseButton: boolean;\r\n\tonTabDropped: Function;\r\n\tthisWindowTitle: string;\r\n\tboundingBox: any;\r\n\tlistenForDragOver: boolean;\r\n\tonTitleUpdated: Function;\r\n\tshowTabs: boolean;\r\n\talwaysOnTop: boolean;\r\n}\r\n\r\nconst defaultConfigValues: WindowTitleBarContextType = {\r\n\tuseDOMBasedMovement: true,\r\n\tshowLinkerButton: false,\r\n\tshowShareButton: false,\r\n\tshowTabRegion: false,\r\n\tshowDockingButton: false,\r\n\tshowAlwaysOnTopButton: false,\r\n\tshowMinimizeButton: false,\r\n\tshowMaximizeButton: false,\r\n\tshowCloseButton: false,\r\n\tonTabDropped: null as any,\r\n\tthisWindowTitle: \"\",\r\n\tboundingBox: null as any,\r\n\tlistenForDragOver: null as any,\r\n\ttabs: null as any,\r\n\tonTitleUpdated: null as any,\r\n\tshowTabs: false,\r\n\talwaysOnTop: false,\r\n};\r\n\r\nexport const WindowTitleBarContext = React.createContext<WindowTitleBarContextType>(defaultConfigValues);\r\n"]}
1
+ {"version":3,"file":"windowTitleBarContext.js","sourceRoot":"","sources":["../../../src/components/windowTitleBar/windowTitleBarContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,MAAM,mBAAmB,GAA8B;IACtD,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;IACtB,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,KAAK;IACxB,qBAAqB,EAAE,KAAK;IAC5B,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,IAAW;IACzB,eAAe,EAAE,EAAE;IACnB,WAAW,EAAE,IAAW;IACxB,iBAAiB,EAAE,IAAW;IAC9B,IAAI,EAAE,IAAW;IACjB,cAAc,EAAE,IAAW;IAC3B,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAA4B,mBAAmB,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { TabProperties } from \"../../types/windowTitleBar\";\n\nexport interface WindowTitleBarContextType {\n\tshowDockingButton: string | false;\n\tuseDOMBasedMovement: boolean;\n\ttabs: TabProperties[];\n\tshowLinkerButton: boolean;\n\tshowShareButton: boolean;\n\tshowTabRegion: boolean;\n\tshowAlwaysOnTopButton: boolean;\n\tshowMinimizeButton: boolean;\n\tshowMaximizeButton: boolean;\n\tshowCloseButton: boolean;\n\tonTabDropped: Function;\n\tthisWindowTitle: string;\n\tboundingBox: any;\n\tlistenForDragOver: boolean;\n\tonTitleUpdated: Function;\n\tshowTabs: boolean;\n\talwaysOnTop: boolean;\n}\n\nconst defaultConfigValues: WindowTitleBarContextType = {\n\tuseDOMBasedMovement: true,\n\tshowLinkerButton: false,\n\tshowShareButton: false,\n\tshowTabRegion: false,\n\tshowDockingButton: false,\n\tshowAlwaysOnTopButton: false,\n\tshowMinimizeButton: false,\n\tshowMaximizeButton: false,\n\tshowCloseButton: false,\n\tonTabDropped: null as any,\n\tthisWindowTitle: \"\",\n\tboundingBox: null as any,\n\tlistenForDragOver: null as any,\n\ttabs: null as any,\n\tonTitleUpdated: null as any,\n\tshowTabs: false,\n\talwaysOnTop: false,\n};\n\nexport const WindowTitleBarContext = React.createContext<WindowTitleBarContextType>(defaultConfigValues);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Timer.spec.js","sourceRoot":"","sources":["../../../src/components/yesNoDialog/Timer.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAElF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,oBAAM,KAAK,CAAC,IAAe,EAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,oBAAM,KAAK,CAAC,IAAe,EAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\r\nimport { mount } from \"enzyme\";\r\nimport { describe, it } from \"mocha\";\r\nimport { expect } from \"chai\";\r\nimport { Basic } from \"./Timer.stories\";\r\nimport { IProps } from \"./timer\";\r\nimport { accessibilityAssessor } from \"../smartDesktopDesigner/tests/a11y_helper\";\r\n\r\ndescribe(\"<Timer/>\", () => {\r\n\tit(\"should pass accessibility scans (Page)\", async () => {\r\n\t\tconst wrapper = mount(<Basic {...(Basic.args as IProps)} />);\r\n\r\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\r\n\t});\r\n\tit(\"should display the text 'Time remaining: '\", async () => {\r\n\t\tconst wrapper = mount(<Basic {...(Basic.args as IProps)} />);\r\n\r\n\t\texpect(wrapper.find(\"div\").text()).to.contain(\"Time remaining:\");\r\n\t\twrapper.unmount();\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"Timer.spec.js","sourceRoot":"","sources":["../../../src/components/yesNoDialog/Timer.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAElF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,oBAAM,KAAK,CAAC,IAAe,EAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,oBAAM,KAAK,CAAC,IAAe,EAAI,CAAC,CAAC;QAE7D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { Basic } from \"./Timer.stories\";\nimport { IProps } from \"./timer\";\nimport { accessibilityAssessor } from \"../smartDesktopDesigner/tests/a11y_helper\";\n\ndescribe(\"<Timer/>\", () => {\n\tit(\"should pass accessibility scans (Page)\", async () => {\n\t\tconst wrapper = mount(<Basic {...(Basic.args as IProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\tit(\"should display the text 'Time remaining: '\", async () => {\n\t\tconst wrapper = mount(<Basic {...(Basic.args as IProps)} />);\n\n\t\texpect(wrapper.find(\"div\").text()).to.contain(\"Time remaining:\");\n\t\twrapper.unmount();\n\t});\n});\n"]}