@finsemble/finsemble-ui 6.6.1 → 7.0.0-beta-X

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 (902) hide show
  1. package/package.json +31 -43
  2. package/react/actions/favoriteActions.d.ts +1 -0
  3. package/react/actions/favoriteActions.js +1 -0
  4. package/react/actions/favoriteActions.js.map +1 -1
  5. package/react/actions/menuActions.d.ts +1 -0
  6. package/react/actions/menuActions.js +1 -0
  7. package/react/actions/menuActions.js.map +1 -1
  8. package/react/actions/rootActions.d.ts +1 -0
  9. package/react/actions/rootActions.js +1 -0
  10. package/react/actions/rootActions.js.map +1 -1
  11. package/react/actions/searchActions.d.ts +1 -0
  12. package/react/actions/searchActions.js +1 -0
  13. package/react/actions/searchActions.js.map +1 -1
  14. package/react/actions/toolbarActions.d.ts +34 -0
  15. package/react/actions/toolbarActions.js +17 -0
  16. package/react/actions/toolbarActions.js.map +1 -1
  17. package/react/actions/workspaceActions.d.ts +1 -0
  18. package/react/actions/workspaceActions.js +1 -0
  19. package/react/actions/workspaceActions.js.map +1 -1
  20. package/react/assets/css/advancedAppLauncher.css +22 -19
  21. package/react/assets/css/appCatalog.css +67 -72
  22. package/react/assets/css/authentication.css +4 -3
  23. package/react/assets/css/button.css +4 -11
  24. package/react/assets/css/core/formElements.css +1 -1
  25. package/react/assets/css/core/icons.css +3 -2
  26. package/react/assets/css/core/notifications.css +2 -2
  27. package/react/assets/css/core/windowFrame.css +9 -9
  28. package/react/assets/css/dashbar.css +1 -1
  29. package/react/assets/css/defaultTheme.css +9 -53
  30. package/react/assets/css/dialogs.css +13 -11
  31. package/react/assets/css/favorites.css +3 -48
  32. package/react/assets/css/finsemble.css +6 -2
  33. package/react/assets/css/font-finance.css +233 -120
  34. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
  35. package/react/assets/css/linkerWindow.css +15 -3
  36. package/react/assets/css/menus.css +12 -12
  37. package/react/assets/css/notificationsCenter.css +49 -33
  38. package/react/assets/css/processMonitor.css +7 -4
  39. package/react/assets/css/search.css +1 -1
  40. package/react/assets/css/shared/animations.css +10 -4
  41. package/react/assets/css/shared/common.css +40 -0
  42. package/react/assets/css/tags.css +10 -10
  43. package/react/assets/css/toolbar.css +22 -19
  44. package/react/assets/css/userPreferences.css +29 -26
  45. package/react/assets/css/windowTitleBar.css +86 -40
  46. package/react/assets/icons/server.svg +26 -0
  47. package/react/componentTemplateGenerator.js +3 -2
  48. package/react/componentTemplateGenerator.js.map +1 -1
  49. package/react/components/FinsembleProvider.d.ts +7 -0
  50. package/react/components/FinsembleProvider.js +2 -0
  51. package/react/components/FinsembleProvider.js.map +1 -1
  52. package/react/components/appCatalog/AppCatalog.d.ts +4 -0
  53. package/react/components/appCatalog/AppCatalog.js +4 -0
  54. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  55. package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
  56. package/react/components/appCatalog/AppCatalogComponent.js +70 -1
  57. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  58. package/react/components/appCatalog/components/AppCard.d.ts +35 -0
  59. package/react/components/appCatalog/components/AppCard.js +42 -0
  60. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  61. package/react/components/appCatalog/components/AppResults.d.ts +10 -0
  62. package/react/components/appCatalog/components/AppResults.js +24 -0
  63. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  64. package/react/components/appCatalog/components/Carousel.d.ts +26 -0
  65. package/react/components/appCatalog/components/Carousel.js +34 -0
  66. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  67. package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
  68. package/react/components/appCatalog/components/EmptyResults.js +8 -0
  69. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  70. package/react/components/appCatalog/components/Hero.d.ts +15 -0
  71. package/react/components/appCatalog/components/Hero.js +15 -0
  72. package/react/components/appCatalog/components/Hero.js.map +1 -1
  73. package/react/components/appCatalog/components/Home.d.ts +6 -4
  74. package/react/components/appCatalog/components/Home.js +10 -0
  75. package/react/components/appCatalog/components/Home.js.map +1 -1
  76. package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
  77. package/react/components/appCatalog/components/SearchBar.js +33 -0
  78. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  79. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
  80. package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
  81. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  82. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
  83. package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
  84. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  85. package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
  86. package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
  87. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  88. package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
  89. package/react/components/appCatalog/components/Showcase/Header.js +12 -0
  90. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  91. package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
  92. package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
  93. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  94. package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
  95. package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
  96. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  97. package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
  98. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
  99. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  100. package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
  101. package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
  102. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  103. package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
  104. package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
  105. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  106. package/react/components/appCatalog/components/Tag.d.ts +6 -0
  107. package/react/components/appCatalog/components/Tag.js +10 -0
  108. package/react/components/appCatalog/components/Tag.js.map +1 -1
  109. package/react/components/appCatalog/components/Toast.d.ts +5 -0
  110. package/react/components/appCatalog/components/Toast.js +9 -0
  111. package/react/components/appCatalog/components/Toast.js.map +1 -1
  112. package/react/components/appCatalog/components/helpers.js +1 -0
  113. package/react/components/appCatalog/components/helpers.js.map +1 -1
  114. package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
  115. package/react/components/appCatalog/modules/AppDirectory.js +5 -0
  116. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  117. package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
  118. package/react/components/appCatalog/modules/FDC3.js +40 -0
  119. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  120. package/react/components/appCatalog/stores/appStore.js +1 -0
  121. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  122. package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
  123. package/react/components/appCatalog/stores/storeActions.js +116 -1
  124. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  125. package/react/components/common/ButtonIcon.js +1 -1
  126. package/react/components/common/ButtonIcon.js.map +1 -1
  127. package/react/components/common/ButtonRow.js +2 -2
  128. package/react/components/common/ButtonRow.js.map +1 -1
  129. package/react/components/common/Checkbox.d.ts +1 -0
  130. package/react/components/common/Checkbox.js +3 -3
  131. package/react/components/common/Checkbox.js.map +1 -1
  132. package/react/components/common/ColorPicker.d.ts +5 -0
  133. package/react/components/common/ColorPicker.js +56 -15
  134. package/react/components/common/ColorPicker.js.map +1 -1
  135. package/react/components/common/DropZone.d.ts +11 -0
  136. package/react/components/common/DropZone.js +21 -1
  137. package/react/components/common/DropZone.js.map +1 -1
  138. package/react/components/common/DropdownButton.d.ts +4 -0
  139. package/react/components/common/DropdownButton.js +4 -0
  140. package/react/components/common/DropdownButton.js.map +1 -1
  141. package/react/components/common/ErrorBoundary.d.ts +34 -0
  142. package/react/components/common/ErrorBoundary.js +43 -0
  143. package/react/components/common/ErrorBoundary.js.map +1 -0
  144. package/react/components/common/FileInput.d.ts +8 -1
  145. package/react/components/common/FileInput.js +19 -4
  146. package/react/components/common/FileInput.js.map +1 -1
  147. package/react/components/common/FinsembleIcon.d.ts +13 -2
  148. package/react/components/common/FinsembleIcon.js +61 -5
  149. package/react/components/common/FinsembleIcon.js.map +1 -1
  150. package/react/components/common/FinsembleLink.d.ts +6 -0
  151. package/react/components/common/FinsembleLink.js +12 -0
  152. package/react/components/common/FinsembleLink.js.map +1 -0
  153. package/react/components/common/FinsembleSelect.js +5 -1
  154. package/react/components/common/FinsembleSelect.js.map +1 -1
  155. package/react/components/common/FinsembleToggle.d.ts +1 -2
  156. package/react/components/common/FinsembleToggle.js +2 -6
  157. package/react/components/common/FinsembleToggle.js.map +1 -1
  158. package/react/components/common/FinsembleToggleButtonBar.d.ts +13 -0
  159. package/react/components/common/FinsembleToggleButtonBar.js +44 -0
  160. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -0
  161. package/react/components/common/InputTable.d.ts +10 -3
  162. package/react/components/common/InputTable.js +20 -13
  163. package/react/components/common/InputTable.js.map +1 -1
  164. package/react/components/common/Tab.js +36 -5
  165. package/react/components/common/Tab.js.map +1 -1
  166. package/react/components/common/TimeSelect.js +34 -3
  167. package/react/components/common/TimeSelect.js.map +1 -1
  168. package/react/components/common/Tooltip.js +2 -0
  169. package/react/components/common/Tooltip.js.map +1 -1
  170. package/react/components/common/css/FinsembleToggle.css +22 -0
  171. package/react/components/common/css/accordion.css +9 -6
  172. package/react/components/common/css/application-edit-page.css +48 -45
  173. package/react/components/common/css/button.css +10 -5
  174. package/react/components/common/css/color-picker.css +3 -3
  175. package/react/components/common/css/drop-zone.css +2 -6
  176. package/react/components/common/css/file-input.css +5 -5
  177. package/react/components/common/css/header.css +3 -2
  178. package/react/components/common/css/icon.css +1 -1
  179. package/react/components/common/css/loading-spinner.css +7 -12
  180. package/react/components/common/css/selector.css +4 -4
  181. package/react/components/common/css/styles.css +22 -16
  182. package/react/components/common/css/tab.css +14 -14
  183. package/react/components/common/css/time-select.css +2 -1
  184. package/react/components/common/css/toggle.css +4 -12
  185. package/react/components/common/css/tooltip.css +2 -3
  186. package/react/components/common/file_helpers.js +2 -0
  187. package/react/components/common/file_helpers.js.map +1 -1
  188. package/react/components/common/helpers.js +12 -1
  189. package/react/components/common/helpers.js.map +1 -1
  190. package/react/components/common/stories/ColorPicker.stories.js +9 -11
  191. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  192. package/react/components/common/stories/FileInput.stories.d.ts +3 -1
  193. package/react/components/common/stories/FileInput.stories.js +12 -0
  194. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  195. package/react/components/common/stories/FinsembleToggle.stories.d.ts +1 -2
  196. package/react/components/common/stories/FinsembleToggle.stories.js +0 -7
  197. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  198. package/react/components/common/stories/FinsembleToggleButtonBar.stories.d.ts +14 -0
  199. package/react/components/common/stories/FinsembleToggleButtonBar.stories.js +97 -0
  200. package/react/components/common/stories/FinsembleToggleButtonBar.stories.js.map +1 -0
  201. package/react/components/common/stories/InputTable.stories.d.ts +4 -3
  202. package/react/components/common/stories/InputTable.stories.js +18 -8
  203. package/react/components/common/stories/InputTable.stories.js.map +1 -1
  204. package/react/components/common/tests/Accordion.spec.js +6 -0
  205. package/react/components/common/tests/Accordion.spec.js.map +1 -1
  206. package/react/components/common/tests/ButtonRow.spec.js +5 -0
  207. package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
  208. package/react/components/common/tests/Checkbox.spec.js +1 -0
  209. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  210. package/react/components/common/tests/ColorPicker.spec.js +6 -0
  211. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  212. package/react/components/common/tests/DropZone.spec.js +1 -0
  213. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  214. package/react/components/common/tests/FileInput.spec.js +22 -0
  215. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  216. package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
  217. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  218. package/react/components/common/tests/FinsembleToggle.spec.js +2 -6
  219. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  220. package/react/components/common/tests/FinsembleToggleButtonBar.spec.d.ts +1 -0
  221. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +41 -0
  222. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -0
  223. package/react/components/common/tests/InputTable.spec.js +3 -3
  224. package/react/components/common/tests/InputTable.spec.js.map +1 -1
  225. package/react/components/common/tests/TimeSelect.spec.js +4 -0
  226. package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
  227. package/react/components/common/tests/Tooltip.spec.js +16 -0
  228. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  229. package/react/components/favorites/FavoriteMaker.d.ts +8 -0
  230. package/react/components/favorites/FavoriteMaker.js +10 -1
  231. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  232. package/react/components/favorites/FavoritesShell.d.ts +4 -0
  233. package/react/components/favorites/FavoritesShell.js +13 -1
  234. package/react/components/favorites/FavoritesShell.js.map +1 -1
  235. package/react/components/favorites/FavoritesShell.spec.js +3 -0
  236. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  237. package/react/components/fdc3Resolver/ResolverContainer.js +12 -7
  238. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  239. package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
  240. package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
  241. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  242. package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
  243. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  244. package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
  245. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  246. package/react/components/icon/Icon.d.ts +14 -1
  247. package/react/components/icon/Icon.js +42 -1
  248. package/react/components/icon/Icon.js.map +1 -1
  249. package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
  250. package/react/components/legacyControls/FinsembleDialog.js +16 -1
  251. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  252. package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
  253. package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
  254. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  255. package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
  256. package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
  257. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  258. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
  259. package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
  260. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  261. package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
  262. package/react/components/legacyControls/FinsembleDnDContext.js +133 -8
  263. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  264. package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
  265. package/react/components/legacyControls/FinsembleDraggable.js +3 -0
  266. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  267. package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
  268. package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
  269. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  270. package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
  271. package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
  272. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  273. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
  274. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  275. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
  276. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  277. package/react/components/linker/LinkerMenu.d.ts +3 -0
  278. package/react/components/linker/LinkerMenu.js +21 -0
  279. package/react/components/linker/LinkerMenu.js.map +1 -1
  280. package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
  281. package/react/components/linker/LinkerMenuDeprecated.js +9 -0
  282. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  283. package/react/components/linker/remoteRedux.js +1 -0
  284. package/react/components/linker/remoteRedux.js.map +1 -1
  285. package/react/components/menu/Menu.d.ts +15 -0
  286. package/react/components/menu/Menu.js +15 -0
  287. package/react/components/menu/Menu.js.map +1 -1
  288. package/react/components/menu/MenuAutoResizer.d.ts +7 -0
  289. package/react/components/menu/MenuAutoResizer.js +27 -0
  290. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  291. package/react/components/menu/MenuContent.d.ts +4 -0
  292. package/react/components/menu/MenuContent.js +4 -0
  293. package/react/components/menu/MenuContent.js.map +1 -1
  294. package/react/components/menu/MenuHotKey.d.ts +14 -0
  295. package/react/components/menu/MenuHotKey.js +15 -0
  296. package/react/components/menu/MenuHotKey.js.map +1 -1
  297. package/react/components/menu/MenuItem.d.ts +8 -0
  298. package/react/components/menu/MenuItem.js +13 -2
  299. package/react/components/menu/MenuItem.js.map +1 -1
  300. package/react/components/menu/MenuPortal.js +125 -24
  301. package/react/components/menu/MenuPortal.js.map +1 -1
  302. package/react/components/menu/MenuShell.d.ts +16 -0
  303. package/react/components/menu/MenuShell.js +26 -0
  304. package/react/components/menu/MenuShell.js.map +1 -1
  305. package/react/components/menu/MenuToggle.d.ts +3 -0
  306. package/react/components/menu/MenuToggle.js +5 -2
  307. package/react/components/menu/MenuToggle.js.map +1 -1
  308. package/react/components/menu/keyboardNavigation.d.ts +13 -22
  309. package/react/components/menu/keyboardNavigation.js +165 -160
  310. package/react/components/menu/keyboardNavigation.js.map +1 -1
  311. package/react/components/menu/menuContext.d.ts +6 -0
  312. package/react/components/menu/menuContext.js +6 -0
  313. package/react/components/menu/menuContext.js.map +1 -1
  314. package/react/components/menu/menuHelpers.d.ts +22 -0
  315. package/react/components/menu/menuHelpers.js +58 -1
  316. package/react/components/menu/menuHelpers.js.map +1 -1
  317. package/react/components/notifications/components/drawer/DrawerControls.js +47 -25
  318. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  319. package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
  320. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  321. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +37 -6
  322. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  323. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +17 -10
  324. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  325. package/react/components/notifications/components/shared/CheckButton.js +19 -8
  326. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  327. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
  328. package/react/components/notifications/components/shared/NotificationCardShell.js +15 -7
  329. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  330. package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
  331. package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
  332. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  333. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js +2 -1
  334. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  335. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js +2 -1
  336. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  337. package/react/components/notifications/components/views/CardView.js +8 -3
  338. package/react/components/notifications/components/views/CardView.js.map +1 -1
  339. package/react/components/notifications/components/views/ListView.js +11 -1
  340. package/react/components/notifications/components/views/ListView.js.map +1 -1
  341. package/react/components/notifications/notificationsContext.d.ts +4 -0
  342. package/react/components/notifications/notificationsContext.js +4 -0
  343. package/react/components/notifications/notificationsContext.js.map +1 -1
  344. package/react/components/notifications/types.d.ts +6 -0
  345. package/react/components/notifications/types.js.map +1 -1
  346. package/react/components/notifications/utils.d.ts +4 -0
  347. package/react/components/notifications/utils.js +4 -0
  348. package/react/components/notifications/utils.js.map +1 -1
  349. package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
  350. package/react/components/processMonitor/ProcessMonitor.js +21 -3
  351. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  352. package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
  353. package/react/components/processMonitor/components/ChildWindow.js +5 -0
  354. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  355. package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
  356. package/react/components/processMonitor/components/ListHeader.js +7 -0
  357. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  358. package/react/components/processMonitor/components/ProcessStatistics.js +12 -3
  359. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  360. package/react/components/processMonitor/constants.js +6 -0
  361. package/react/components/processMonitor/constants.js.map +1 -1
  362. package/react/components/processMonitor/helpers.d.ts +13 -0
  363. package/react/components/processMonitor/helpers.js +27 -6
  364. package/react/components/processMonitor/helpers.js.map +1 -1
  365. package/react/components/processMonitor/helpers.spec.js +7 -3
  366. package/react/components/processMonitor/helpers.spec.js.map +1 -1
  367. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
  368. package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
  369. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  370. package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
  371. package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
  372. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  373. package/react/components/quickComponentForm/quickComponent.css +1 -1
  374. package/react/components/sdd/AddApp.d.ts +7 -4
  375. package/react/components/sdd/AddApp.js +144 -34
  376. package/react/components/sdd/AddApp.js.map +1 -1
  377. package/react/components/sdd/AppEditAccess.d.ts +4 -3
  378. package/react/components/sdd/AppEditAccess.js +8 -0
  379. package/react/components/sdd/AppEditAccess.js.map +1 -1
  380. package/react/components/sdd/AppEditPage.d.ts +6 -4
  381. package/react/components/sdd/AppEditPage.js +205 -393
  382. package/react/components/sdd/AppEditPage.js.map +1 -1
  383. package/react/components/sdd/Appearance.css +1 -1
  384. package/react/components/sdd/Appearance.d.ts +2 -1
  385. package/react/components/sdd/Appearance.js +18 -7
  386. package/react/components/sdd/Appearance.js.map +1 -1
  387. package/react/components/sdd/Application.d.ts +5 -4
  388. package/react/components/sdd/Application.js +94 -44
  389. package/react/components/sdd/Application.js.map +1 -1
  390. package/react/components/sdd/Applications.d.ts +12 -11
  391. package/react/components/sdd/Applications.js +110 -15
  392. package/react/components/sdd/Applications.js.map +1 -1
  393. package/react/components/sdd/AssetsPage.css +3 -3
  394. package/react/components/sdd/Authentication.js +1 -6
  395. package/react/components/sdd/Authentication.js.map +1 -1
  396. package/react/components/sdd/AuthenticationProviderConfig.js +5 -3
  397. package/react/components/sdd/AuthenticationProviderConfig.js.map +1 -1
  398. package/react/components/sdd/EditPreload.d.ts +4 -3
  399. package/react/components/sdd/EditPreload.js +49 -22
  400. package/react/components/sdd/EditPreload.js.map +1 -1
  401. package/react/components/sdd/Export.d.ts +7 -6
  402. package/react/components/sdd/Export.js +4 -3
  403. package/react/components/sdd/Export.js.map +1 -1
  404. package/react/components/sdd/ExportCloud.js +4 -0
  405. package/react/components/sdd/ExportCloud.js.map +1 -1
  406. package/react/components/sdd/GettingStarted.js +3 -3
  407. package/react/components/sdd/GettingStarted.js.map +1 -1
  408. package/react/components/sdd/Navigation.js +28 -4
  409. package/react/components/sdd/Navigation.js.map +1 -1
  410. package/react/components/sdd/OptionalSettingsView.d.ts +6 -5
  411. package/react/components/sdd/OptionalSettingsView.js +2 -10
  412. package/react/components/sdd/OptionalSettingsView.js.map +1 -1
  413. package/react/components/sdd/ProjectErrors.js +1 -1
  414. package/react/components/sdd/ProjectErrors.js.map +1 -1
  415. package/react/components/sdd/Publish.js +4 -2
  416. package/react/components/sdd/Publish.js.map +1 -1
  417. package/react/components/sdd/PublishProgress.js +11 -1
  418. package/react/components/sdd/PublishProgress.js.map +1 -1
  419. package/react/components/sdd/SmartDesktopDesigner.d.ts +17 -16
  420. package/react/components/sdd/SmartDesktopDesigner.js +54 -34
  421. package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
  422. package/react/components/sdd/ThemePage.css +6 -23
  423. package/react/components/sdd/ThemePage.js +8 -5
  424. package/react/components/sdd/ThemePage.js.map +1 -1
  425. package/react/components/sdd/Themes.d.ts +2 -1
  426. package/react/components/sdd/Themes.js +4 -2
  427. package/react/components/sdd/Themes.js.map +1 -1
  428. package/react/components/sdd/Toolbar.d.ts +5 -4
  429. package/react/components/sdd/Toolbar.js +18 -9
  430. package/react/components/sdd/Toolbar.js.map +1 -1
  431. package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
  432. package/react/components/sdd/appEditPage/Behavior.js +134 -0
  433. package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
  434. package/react/components/sdd/appEditPage/Component.d.ts +22 -0
  435. package/react/components/sdd/appEditPage/Component.js +76 -0
  436. package/react/components/sdd/appEditPage/Component.js.map +1 -0
  437. package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
  438. package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
  439. package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
  440. package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
  441. package/react/components/sdd/appEditPage/Interop.js +40 -0
  442. package/react/components/sdd/appEditPage/Interop.js.map +1 -0
  443. package/react/components/sdd/appEditPage/Position.d.ts +18 -0
  444. package/react/components/sdd/appEditPage/Position.js +72 -0
  445. package/react/components/sdd/appEditPage/Position.js.map +1 -0
  446. package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
  447. package/react/components/sdd/appEditPage/Preloads.js +16 -0
  448. package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
  449. package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
  450. package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
  451. package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
  452. package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
  453. package/react/components/sdd/appEditPage/Workspace.js +30 -0
  454. package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
  455. package/react/components/sdd/common/getCSSVars.js +7 -2
  456. package/react/components/sdd/common/getCSSVars.js.map +1 -1
  457. package/react/components/sdd/common/setPreloadDefaults.d.ts +1 -1
  458. package/react/components/sdd/common/setPreloadDefaults.js +9 -4
  459. package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
  460. package/react/components/sdd/common/views.js +7 -4
  461. package/react/components/sdd/common/views.js.map +1 -1
  462. package/react/components/sdd/css/addApp.css +65 -0
  463. package/react/components/sdd/css/appearance.css +6 -0
  464. package/react/components/sdd/css/applications.css +27 -34
  465. package/react/components/sdd/css/authentication.css +7 -6
  466. package/react/components/sdd/css/buttons.css +1 -1
  467. package/react/components/sdd/css/export.css +5 -3
  468. package/react/components/sdd/css/getting-started.css +2 -2
  469. package/react/components/sdd/css/nav.css +11 -14
  470. package/react/components/sdd/css/project-header.css +5 -7
  471. package/react/components/sdd/css/styles.css +29 -23
  472. package/react/components/sdd/css/views.css +4 -3
  473. package/react/components/sdd/fixtures/apps.js +12 -0
  474. package/react/components/sdd/fixtures/apps.js.map +1 -1
  475. package/react/components/sdd/fixtures/authenticationProps.js +15 -1
  476. package/react/components/sdd/fixtures/authenticationProps.js.map +1 -1
  477. package/react/components/sdd/fixtures/configTemplate.js +1 -0
  478. package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
  479. package/react/components/sdd/fixtures/preloads.js +14 -12
  480. package/react/components/sdd/fixtures/preloads.js.map +1 -1
  481. package/react/components/sdd/fixtures/publishProgress.js +40 -0
  482. package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
  483. package/react/components/sdd/sdd_helpers.d.ts +6 -0
  484. package/react/components/sdd/sdd_helpers.js +6 -0
  485. package/react/components/sdd/sdd_helpers.js.map +1 -1
  486. package/react/components/sdd/smartDesktopClient.d.ts +466 -0
  487. package/react/components/sdd/smartDesktopClient.js +906 -0
  488. package/react/components/sdd/smartDesktopClient.js.map +1 -0
  489. package/react/components/sdd/smartDesktopClient.spec.d.ts +1 -0
  490. package/react/components/sdd/smartDesktopClient.spec.js +64 -0
  491. package/react/components/sdd/smartDesktopClient.spec.js.map +1 -0
  492. package/react/components/sdd/stories/AddApp.stories.d.ts +11 -0
  493. package/react/components/sdd/stories/AddApp.stories.js +26 -0
  494. package/react/components/sdd/stories/AddApp.stories.js.map +1 -0
  495. package/react/components/sdd/stories/AppEditPage.stories.d.ts +5 -1
  496. package/react/components/sdd/stories/AppEditPage.stories.js +5 -0
  497. package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
  498. package/react/components/sdd/stories/Appearance.stories.d.ts +1 -1
  499. package/react/components/sdd/stories/Appearance.stories.js +2 -0
  500. package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
  501. package/react/components/sdd/stories/Authentication.stories.js +2 -16
  502. package/react/components/sdd/stories/Authentication.stories.js.map +1 -1
  503. package/react/components/sdd/stories/OptionalSettingsView.stories.js +1 -1
  504. package/react/components/sdd/stories/OptionalSettingsView.stories.js.map +1 -1
  505. package/react/components/sdd/stories/SmartDesktopDesigner.stories.d.ts +1 -1
  506. package/react/components/sdd/stories/SmartDesktopDesigner.stories.js +3 -0
  507. package/react/components/sdd/stories/SmartDesktopDesigner.stories.js.map +1 -1
  508. package/react/components/sdd/stories/Themes.stories.d.ts +1 -1
  509. package/react/components/sdd/stories/Themes.stories.js +1 -0
  510. package/react/components/sdd/stories/Themes.stories.js.map +1 -1
  511. package/react/components/sdd/tests/AddApp.spec.d.ts +1 -0
  512. package/react/components/sdd/tests/AddApp.spec.js +133 -0
  513. package/react/components/sdd/tests/AddApp.spec.js.map +1 -0
  514. package/react/components/sdd/tests/AppEditPage.spec.js +108 -23
  515. package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
  516. package/react/components/sdd/tests/Application.spec.js +351 -369
  517. package/react/components/sdd/tests/Application.spec.js.map +1 -1
  518. package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
  519. package/react/components/sdd/tests/Applications.spec.js +30 -50
  520. package/react/components/sdd/tests/Applications.spec.js.map +1 -1
  521. package/react/components/sdd/tests/Authentication.spec.js +8 -1
  522. package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
  523. package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
  524. package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
  525. package/react/components/sdd/tests/EditPreload.spec.js +63 -7
  526. package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
  527. package/react/components/sdd/tests/Export.spec.js +8 -1
  528. package/react/components/sdd/tests/Export.spec.js.map +1 -1
  529. package/react/components/sdd/tests/ItemList.spec.js +4 -0
  530. package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
  531. package/react/components/sdd/tests/Navigation.spec.js +2 -2
  532. package/react/components/sdd/tests/Navigation.spec.js.map +1 -1
  533. package/react/components/sdd/tests/OptionalSettingsView.spec.js +264 -0
  534. package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
  535. package/react/components/sdd/tests/ProjectErrors.spec.js +3 -1
  536. package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
  537. package/react/components/sdd/tests/SmartDesktopDesigner.spec.js +2 -2
  538. package/react/components/sdd/tests/SmartDesktopDesigner.spec.js.map +1 -1
  539. package/react/components/sdd/tests/Themes.spec.js +1 -1
  540. package/react/components/sdd/tests/Themes.spec.js.map +1 -1
  541. package/react/components/sdd/tests/Toolbar.spec.js +53 -0
  542. package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
  543. package/react/components/sdd/tests/a11y_helper.js +8 -0
  544. package/react/components/sdd/tests/a11y_helper.js.map +1 -1
  545. package/react/components/search/Highlight.d.ts +6 -0
  546. package/react/components/search/Highlight.js +19 -0
  547. package/react/components/search/Highlight.js.map +1 -1
  548. package/react/components/search/Highlight.stories.js +1 -1
  549. package/react/components/search/Highlight.stories.js.map +1 -1
  550. package/react/components/search/Search.js +1 -1
  551. package/react/components/search/Search.js.map +1 -1
  552. package/react/components/search/SearchBestMatch.d.ts +4 -0
  553. package/react/components/search/SearchBestMatch.js +11 -0
  554. package/react/components/search/SearchBestMatch.js.map +1 -1
  555. package/react/components/search/SearchInput.d.ts +5 -0
  556. package/react/components/search/SearchInput.js +6 -0
  557. package/react/components/search/SearchInput.js.map +1 -1
  558. package/react/components/search/SearchProviderResults.js +2 -0
  559. package/react/components/search/SearchProviderResults.js.map +1 -1
  560. package/react/components/search/SearchResult.d.ts +5 -0
  561. package/react/components/search/SearchResult.js +6 -0
  562. package/react/components/search/SearchResult.js.map +1 -1
  563. package/react/components/search/SearchResult.spec.d.ts +1 -0
  564. package/react/components/search/SearchResult.spec.js +46 -0
  565. package/react/components/search/SearchResult.spec.js.map +1 -0
  566. package/react/components/search/SearchResult.stories.d.ts +16 -0
  567. package/react/components/search/SearchResult.stories.js +113 -0
  568. package/react/components/search/SearchResult.stories.js.map +1 -0
  569. package/react/components/search/SearchResults.js +5 -1
  570. package/react/components/search/SearchResults.js.map +1 -1
  571. package/react/components/search/SearchResults.spec.d.ts +1 -0
  572. package/react/components/search/SearchResults.spec.js +35 -0
  573. package/react/components/search/SearchResults.spec.js.map +1 -0
  574. package/react/components/search/SearchResults.stories.d.ts +11 -0
  575. package/react/components/search/SearchResults.stories.js +458 -0
  576. package/react/components/search/SearchResults.stories.js.map +1 -0
  577. package/react/components/shared/Animate.d.ts +5 -0
  578. package/react/components/shared/Animate.js +12 -1
  579. package/react/components/shared/Animate.js.map +1 -1
  580. package/react/components/shared/DefaultDropdownButton.js +26 -6
  581. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  582. package/react/components/shared/Tag.d.ts +0 -4
  583. package/react/components/shared/Tag.js +4 -0
  584. package/react/components/shared/Tag.js.map +1 -1
  585. package/react/components/shared/TagsMenu.d.ts +6 -0
  586. package/react/components/shared/TagsMenu.js +7 -0
  587. package/react/components/shared/TagsMenu.js.map +1 -1
  588. package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
  589. package/react/components/shared/addProtocolToValidURL.js +6 -0
  590. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  591. package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
  592. package/react/components/shared/openQuitConfirmationDialog.js +4 -4
  593. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  594. package/react/components/shared/tests/DefaultDropdownButton.spec.js +12 -0
  595. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
  596. package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
  597. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  598. package/react/components/shared/validateURL.d.ts +18 -0
  599. package/react/components/shared/validateURL.js +24 -5
  600. package/react/components/shared/validateURL.js.map +1 -1
  601. package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
  602. package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
  603. package/react/components/singleInputDialog/SingleInputDialog.js +46 -0
  604. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  605. package/react/components/singleInputDialog/SingleInputDialog.stories.js +2 -2
  606. package/react/components/singleInputDialog/SingleInputDialog.stories.js.map +1 -1
  607. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +1 -16
  608. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +5 -3
  609. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  610. package/react/components/system/System.d.ts +22 -0
  611. package/react/components/system/System.js +23 -1
  612. package/react/components/system/System.js.map +1 -1
  613. package/react/components/system/System.stories.js +1 -0
  614. package/react/components/system/System.stories.js.map +1 -1
  615. package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
  616. package/react/components/system/SystemTrayComponentShell.js +9 -0
  617. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  618. package/react/components/toolbar/AutoArrange.d.ts +5 -0
  619. package/react/components/toolbar/AutoArrange.js +8 -1
  620. package/react/components/toolbar/AutoArrange.js.map +1 -1
  621. package/react/components/toolbar/AutoArrange.spec.js +10 -4
  622. package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
  623. package/react/components/toolbar/AutoArrange.stories.js +1 -0
  624. package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
  625. package/react/components/toolbar/DragHandle.d.ts +4 -0
  626. package/react/components/toolbar/DragHandle.js +11 -0
  627. package/react/components/toolbar/DragHandle.js.map +1 -1
  628. package/react/components/toolbar/DragHandle.spec.js +1 -0
  629. package/react/components/toolbar/DragHandle.spec.js.map +1 -1
  630. package/react/components/toolbar/DragHandle.stories.js +1 -0
  631. package/react/components/toolbar/DragHandle.stories.js.map +1 -1
  632. package/react/components/toolbar/MinimizeAll.d.ts +4 -0
  633. package/react/components/toolbar/MinimizeAll.js +7 -1
  634. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  635. package/react/components/toolbar/MinimizeAll.spec.js +1 -0
  636. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  637. package/react/components/toolbar/MinimizeAll.stories.js +1 -0
  638. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  639. package/react/components/toolbar/NotificationControl.d.ts +5 -0
  640. package/react/components/toolbar/NotificationControl.js +8 -1
  641. package/react/components/toolbar/NotificationControl.js.map +1 -1
  642. package/react/components/toolbar/RevealAll.d.ts +4 -0
  643. package/react/components/toolbar/RevealAll.js +7 -1
  644. package/react/components/toolbar/RevealAll.js.map +1 -1
  645. package/react/components/toolbar/RevealAll.spec.js +1 -0
  646. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  647. package/react/components/toolbar/RevealAll.stories.js +1 -0
  648. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  649. package/react/components/toolbar/SddButton.d.ts +4 -0
  650. package/react/components/toolbar/SddButton.js +4 -0
  651. package/react/components/toolbar/SddButton.js.map +1 -1
  652. package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
  653. package/react/components/toolbar/ToolbarIcon.js +6 -2
  654. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  655. package/react/components/toolbar/ToolbarSection.d.ts +8 -9
  656. package/react/components/toolbar/ToolbarSection.js +21 -7
  657. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  658. package/react/components/toolbar/ToolbarShell.d.ts +5 -0
  659. package/react/components/toolbar/ToolbarShell.js +7 -0
  660. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  661. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
  662. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
  663. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  664. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
  665. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
  666. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  667. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
  668. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
  669. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  670. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
  671. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
  672. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  673. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
  674. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +21 -10
  675. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  676. package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
  677. package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
  678. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  679. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
  680. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
  681. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  682. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
  683. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
  684. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  685. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
  686. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
  687. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  688. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
  689. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  690. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
  691. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
  692. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  693. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
  694. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
  695. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  696. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
  697. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
  698. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  699. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
  700. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
  701. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  702. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
  703. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +83 -1
  704. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  705. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
  706. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +12 -3
  707. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  708. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
  709. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
  710. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  711. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
  712. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
  713. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  714. package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
  715. package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
  716. package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
  717. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  718. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
  719. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
  720. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  721. package/react/components/toolbar/dashbar/Dashbar.js +91 -15
  722. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  723. package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
  724. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  725. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +8 -1
  726. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
  727. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  728. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +17 -1
  729. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +21 -1
  730. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  731. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
  732. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
  733. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  734. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +6 -1
  735. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
  736. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  737. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +78 -2
  738. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +191 -40
  739. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  740. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
  741. package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
  742. package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
  743. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  744. package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
  745. package/react/components/userPreferences/UserPreferences.d.ts +8 -0
  746. package/react/components/userPreferences/UserPreferences.js +8 -0
  747. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  748. package/react/components/userPreferences/UserPreferencesBase.js +4 -0
  749. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  750. package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
  751. package/react/components/userPreferences/components/ContentSection.js +1 -1
  752. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  753. package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
  754. package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
  755. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  756. package/react/components/userPreferences/components/content/Notifications.js +3 -0
  757. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  758. package/react/components/userPreferences/components/content/Workspaces.d.ts +14 -2
  759. package/react/components/userPreferences/components/content/Workspaces.js +78 -38
  760. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  761. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +7 -3
  762. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  763. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
  764. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  765. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
  766. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  767. package/react/components/userPreferences/components/general/ScheduledClose.js +26 -5
  768. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  769. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +1 -1
  770. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  771. package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +1 -1
  772. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +20 -10
  773. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  774. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +18 -1
  775. package/react/components/userPreferences/stores/UserPreferencesStore.js +35 -6
  776. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  777. package/react/components/userPreferences/tests/LeftNav.spec.js +15 -1
  778. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -1
  779. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
  780. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  781. package/react/components/userPreferences/tests/UserPreferencesBase.spec.d.ts +1 -0
  782. package/react/components/userPreferences/tests/UserPreferencesBase.spec.js +42 -0
  783. package/react/components/userPreferences/tests/UserPreferencesBase.spec.js.map +1 -0
  784. package/react/components/userPreferences/tests/Workspace.spec.d.ts +1 -0
  785. package/react/components/userPreferences/tests/Workspace.spec.js +139 -0
  786. package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -0
  787. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +130 -2
  788. package/react/components/windowTitleBar/WindowTitleBarShell.js +386 -27
  789. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  790. package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
  791. package/react/components/windowTitleBar/components/center/Tab.js +3 -0
  792. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  793. package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
  794. package/react/components/windowTitleBar/components/center/TabList.js +170 -4
  795. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  796. package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
  797. package/react/components/windowTitleBar/components/left/LinkerButton.js +27 -5
  798. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  799. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
  800. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
  801. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  802. package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
  803. package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
  804. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  805. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
  806. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
  807. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  808. package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
  809. package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
  810. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  811. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
  812. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  813. package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
  814. package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
  815. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  816. package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
  817. package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
  818. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  819. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
  820. package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
  821. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  822. package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
  823. package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
  824. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  825. package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
  826. package/react/components/windowTitleBar/components/windowTitle.js +245 -48
  827. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  828. package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
  829. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +81 -6
  830. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  831. package/react/components/yesNoDialog/YesNoDialog.css +1 -1
  832. package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
  833. package/react/components/yesNoDialog/YesNoDialog.js +64 -1
  834. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  835. package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
  836. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  837. package/react/components/yesNoDialog/YesNoDialog.stories.js +2 -2
  838. package/react/components/yesNoDialog/YesNoDialog.stories.js.map +1 -1
  839. package/react/components/yesNoDialog/timer.js +2 -0
  840. package/react/components/yesNoDialog/timer.js.map +1 -1
  841. package/react/enzymeSetup.js +10 -0
  842. package/react/enzymeSetup.js.map +1 -1
  843. package/react/hooks/useDashbar.js +10 -0
  844. package/react/hooks/useDashbar.js.map +1 -1
  845. package/react/hooks/useDeepEffect.d.ts +4 -0
  846. package/react/hooks/useDeepEffect.js +21 -0
  847. package/react/hooks/useDeepEffect.js.map +1 -1
  848. package/react/hooks/useFavorites.d.ts +15 -0
  849. package/react/hooks/useFavorites.js +3 -0
  850. package/react/hooks/useFavorites.js.map +1 -1
  851. package/react/hooks/useFavoritesShell.d.ts +4 -0
  852. package/react/hooks/useFavoritesShell.js +23 -0
  853. package/react/hooks/useFavoritesShell.js.map +1 -1
  854. package/react/hooks/useHotkey.d.ts +6 -0
  855. package/react/hooks/useHotkey.js +9 -0
  856. package/react/hooks/useHotkey.js.map +1 -1
  857. package/react/hooks/useLinker.js +14 -0
  858. package/react/hooks/useLinker.js.map +1 -1
  859. package/react/hooks/useMenu.d.ts +29 -0
  860. package/react/hooks/useMenu.js +12 -1
  861. package/react/hooks/useMenu.js.map +1 -1
  862. package/react/hooks/useNotifications.d.ts +44 -0
  863. package/react/hooks/useNotifications.js +104 -12
  864. package/react/hooks/useNotifications.js.map +1 -1
  865. package/react/hooks/useOutsideClickDetector.d.ts +3 -0
  866. package/react/hooks/useOutsideClickDetector.js +3 -0
  867. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  868. package/react/hooks/usePubSub.d.ts +17 -0
  869. package/react/hooks/usePubSub.js +18 -0
  870. package/react/hooks/usePubSub.js.map +1 -1
  871. package/react/hooks/useSearch.d.ts +5 -0
  872. package/react/hooks/useSearch.js +30 -0
  873. package/react/hooks/useSearch.js.map +1 -1
  874. package/react/hooks/useToolbar.d.ts +1 -1
  875. package/react/hooks/useToolbar.js +54 -2
  876. package/react/hooks/useToolbar.js.map +1 -1
  877. package/react/reducers/favoriteReducer.d.ts +3 -0
  878. package/react/reducers/linkerReducer.d.ts +3 -0
  879. package/react/reducers/linkerReducer.js +4 -0
  880. package/react/reducers/linkerReducer.js.map +1 -1
  881. package/react/reducers/menuReducer.d.ts +28 -0
  882. package/react/reducers/menuReducer.js +34 -0
  883. package/react/reducers/menuReducer.js.map +1 -1
  884. package/react/reducers/rootReducer.d.ts +2 -2
  885. package/react/reducers/rootReducer.js +3 -0
  886. package/react/reducers/rootReducer.js.map +1 -1
  887. package/react/reducers/searchReducer.d.ts +7 -0
  888. package/react/reducers/searchReducer.js +6 -0
  889. package/react/reducers/searchReducer.js.map +1 -1
  890. package/react/reducers/workspaceReducer.js +1 -0
  891. package/react/reducers/workspaceReducer.js.map +1 -1
  892. package/react/store.d.ts +8 -4
  893. package/react/store.js +11 -0
  894. package/react/store.js.map +1 -1
  895. package/react/tsconfig.tsbuildinfo +1 -0
  896. package/react/types/fdc3.d.ts +2 -0
  897. package/react/types/linkerTypes.d.ts +13 -0
  898. package/react/types/linkerTypes.js +1 -0
  899. package/react/types/linkerTypes.js.map +1 -1
  900. package/react/types/smartDesktopDesignerTypes.d.ts +8 -0
  901. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  902. package/react/types/workspaceTypes.d.ts +8 -0
@@ -1,3 +1,7 @@
1
+ /*!
2
+ * Copyright 2017 by ChartIQ, Inc.
3
+ * All rights reserved.
4
+ */
1
5
  import windowTitleBarStoreDefaults from "./windowTitleBarStoreDefaults";
2
6
  const getWindowNameForDocking = (finsembleWindow) => {
3
7
  const parent = finsembleWindow.parentWindow;
@@ -29,6 +33,11 @@ const getStackedWindow = (params, cb) => {
29
33
  }
30
34
  };
31
35
  let windowTitleBarStore;
36
+ /**
37
+ * 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.
38
+ * @param {*} err
39
+ * @param {*} response
40
+ */
32
41
  const onDockingGroupUpdate = (err, response) => {
33
42
  if (err || !response.data || !response.data.groupData) {
34
43
  return;
@@ -38,6 +47,7 @@ const onDockingGroupUpdate = (err, response) => {
38
47
  let movableGroups = groupNames
39
48
  .filter((groupName) => response.data.groupData[groupName].isMovable)
40
49
  .map((groupName) => response.data.groupData[groupName]);
50
+ // This is all movable and snapped groups. It's used later to figure out the icon to display.
41
51
  windowTitleBarStore.setValue({
42
52
  field: "Main.allDockingGroups",
43
53
  value: response.data.groupData,
@@ -51,6 +61,9 @@ const onDockingGroupUpdate = (err, response) => {
51
61
  field: "Main.dockingGroups",
52
62
  value: myGroups,
53
63
  });
64
+ /**
65
+ * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.
66
+ */
54
67
  let isSnapped = false;
55
68
  let isInMovableGroup = false;
56
69
  let isTopRight = false;
@@ -81,6 +94,9 @@ const onDockingGroupUpdate = (err, response) => {
81
94
  { field: "Main.dockingIcon", value: icon },
82
95
  ]);
83
96
  };
97
+ /**
98
+ * Listen for updates from the dragAndDropClient.
99
+ */
84
100
  const listenForDNDUpdates = () => {
85
101
  FSBL.Clients.RouterClient.subscribe(`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`, (err, response) => {
86
102
  if (err) {
@@ -98,7 +114,11 @@ const listenForDNDUpdates = () => {
98
114
  ]);
99
115
  });
100
116
  };
117
+ /**
118
+ * Handles whether to show the linker button.
119
+ */
101
120
  const showLinkerButton = () => {
121
+ // Get state (channel membership) from the linkerClient. Then set the value in the header so that the title bar accurately reflects the state.
102
122
  const cb = (err, response) => {
103
123
  if (response.channels) {
104
124
  windowTitleBarStore.setValue({
@@ -151,8 +171,12 @@ const processInitialTabList = (err, values) => {
151
171
  if (values)
152
172
  Actions._setTabs(values);
153
173
  };
174
+ /**
175
+ * "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"
176
+ */
154
177
  const processFSBLHeader = (FSBLHeader, windowTitleBarConfig, options) => {
155
178
  var _a, _b;
179
+ // 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').
156
180
  const displayName = (_b = (_a = options.customData) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.displayName;
157
181
  const max = !!FSBLHeader.hideMaximize;
158
182
  windowTitleBarStore.setValues([
@@ -161,15 +185,23 @@ const processFSBLHeader = (FSBLHeader, windowTitleBarConfig, options) => {
161
185
  { field: "Close.hide", value: !!FSBLHeader.hideClose },
162
186
  { field: "AlwaysOnTop.show", value: !!FSBLHeader.alwaysOnTop },
163
187
  ]);
188
+ // By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto
164
189
  windowTitleBarStore.setValue({
165
190
  field: "hackScrollbar",
166
- value: windowTitleBarConfig.hackScrollbar !== false,
191
+ value: windowTitleBarConfig.FSBLHeader.hackScrollbar !== false,
192
+ });
193
+ windowTitleBarStore.setValue({
194
+ field: "adjustContentHeights",
195
+ value: windowTitleBarConfig.FSBLHeader.adjustContentHeights !== false,
196
+ });
197
+ // By default, fixed positioned elements with a top style set to '0px' will be bumped by the header height and the
198
+ // DOM will be monitored for nodes that are added dynamically and bump them if they are fixed with a top style of 0px.
199
+ windowTitleBarStore.setValue({
200
+ field: "bumpElements",
201
+ value: Object.assign({ fixed: "0Positioned", bumpBy: "25px", monitorFixedAdditions: true }, windowTitleBarConfig.FSBLHeader.bumpElements),
167
202
  });
168
- const title = FSBL.Clients.WindowClient.title || windowTitleBarConfig.title || displayName;
169
- if (title) {
170
- document.title = title;
171
- }
172
203
  };
204
+ // Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]
173
205
  const getOptionsCallback = (err, opts) => {
174
206
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
175
207
  const windowAllowTabbing = (_d = (_c = (_b = (_a = opts.customData) === null || _a === void 0 ? void 0 : _a.foreign) === null || _b === void 0 ? void 0 : _b.services) === null || _c === void 0 ? void 0 : _c.windowService) === null || _d === void 0 ? void 0 : _d.allowTabbing;
@@ -188,21 +220,26 @@ const getOptionsCallback = (err, opts) => {
188
220
  const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
189
221
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
190
222
  const finsembleConfig = values.finsemble;
223
+ // Check FEA config for DOM based movement configuration
191
224
  const { useDOMBasedMovement } = values["finsemble-electron-adapter"];
192
225
  windowTitleBarStore.setValue({
193
226
  field: "Main.useDOMBasedMovement",
194
227
  value: typeof useDOMBasedMovement === "undefined" ? true : useDOMBasedMovement,
195
228
  });
229
+ // Override defaults if finsemble.Window Manager exists.
196
230
  const globalWindowManagerConfig = finsembleConfig["Window Manager"] || {
197
231
  alwaysOnTopIcon: false,
198
232
  showTabs: false,
199
233
  };
234
+ // 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.
200
235
  finsembleConfig.servicesConfig = (_a = finsembleConfig.servicesConfig) !== null && _a !== void 0 ? _a : {};
201
236
  const defaultDockingConfig = {
202
237
  enabled: true,
203
238
  };
204
239
  let dockingConfig = (_e = (_c = (_b = finsembleConfig.servicesConfig.docking) !== null && _b !== void 0 ? _b : finsembleConfig.docking) !== null && _c !== void 0 ? _c : (_d = finsembleConfig.betaFeatures) === null || _d === void 0 ? void 0 : _d.docking) !== null && _e !== void 0 ? _e : defaultDockingConfig;
205
240
  dockingConfig.tabbing = (_f = dockingConfig.tabbing) !== null && _f !== void 0 ? _f : {};
241
+ // Whether the alwaysOnTop pin is displayed depends this component's config (foreign.components["Widow Manager"].alwaysOnTop)
242
+ // and then on the global setting (finsemble["Window Manager"].alwaysOnTop)
206
243
  const alwaysOnTopIcon = (_h = (_g = windowTitleBarConfig.alwaysOnTopIcon) !== null && _g !== void 0 ? _g : globalWindowManagerConfig.alwaysOnTopIcon) !== null && _h !== void 0 ? _h : false;
207
244
  const servicesConfigWindow = finsembleConfig.servicesConfig.window;
208
245
  windowTitleBarStore.setValues([
@@ -213,6 +250,7 @@ const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
213
250
  },
214
251
  { field: "AlwaysOnTop.show", value: alwaysOnTopIcon },
215
252
  ]);
253
+ // If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.
216
254
  if (dockingConfig.tabbing.enabled === false) {
217
255
  windowTitleBarStore.setValue({
218
256
  field: "showTabs",
@@ -220,12 +258,15 @@ const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
220
258
  });
221
259
  }
222
260
  else {
261
+ // If tabbing is enabled system-wide, look to the global config for its value. Then look to the local component's config.
262
+ // This is the global window manager config.
223
263
  if (typeof windowTitleBarConfig.showTabs !== "boolean") {
224
264
  windowTitleBarStore.setValue({
225
265
  field: "showTabs",
226
266
  value: globalWindowManagerConfig.showTabs,
227
267
  });
228
268
  }
269
+ // This is the component's config.
229
270
  if (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {
230
271
  windowTitleBarStore.setValue({
231
272
  field: "showTabs",
@@ -235,10 +276,12 @@ const processFEAAndFinsembleConfig = (values, windowTitleBarConfig) => {
235
276
  finsembleWindow.getOptions(getOptionsCallback);
236
277
  }
237
278
  };
279
+ // these are constants that are set inside of setupStore. so they're declared as vars and not constants.
238
280
  let constants;
239
281
  const Actions = {
240
282
  parentWrapperStore: null,
241
283
  initialize: () => {
284
+ // This ensures that our config is correct, even if the developer missed some entries
242
285
  const { options } = FSBL.Clients.WindowClient;
243
286
  const windowTitleBarConfig = options.customData.foreign.components["Window Manager"];
244
287
  const { FSBLHeader } = windowTitleBarConfig;
@@ -248,6 +291,7 @@ const Actions = {
248
291
  showLinkerButton();
249
292
  listenForDNDUpdates();
250
293
  FSBL.Clients.RouterClient.subscribe("Finsemble.WorkspaceService.groupUpdate", onDockingGroupUpdate);
294
+ // default title.
251
295
  windowTitleBarStore.setValue({
252
296
  field: "Main.windowTitle",
253
297
  value: FSBL.Clients.WindowClient.getWindowTitle(),
@@ -257,10 +301,18 @@ const Actions = {
257
301
  processFEAAndFinsembleConfig(config, windowTitleBarConfig);
258
302
  });
259
303
  Actions.getInitialTabList(processInitialTabList);
304
+ /**
305
+ * This store does not listen on window events (such as "maximized" or "minimized") - that is the
306
+ * WindowClient's job. The headerCommandChannel allows the WindowClient to affect the display state
307
+ * of the windowTitleBar - such as changing the maximize icon when a "maximized" event is received.
308
+ */
260
309
  FSBL.Clients.WindowClient.headerCommandChannel((command, state) => {
261
310
  Actions.remoteStateUpdate(command, state);
262
311
  });
263
312
  },
313
+ /**
314
+ * Helper function to sift through all of the data coming from the windowService. Outputs an array of groups that the window belongs to.
315
+ */
264
316
  getMyDockingGroups: function (groupData) {
265
317
  let myGroups = [];
266
318
  let windowName = getWindowNameForDocking(finsembleWindow);
@@ -289,14 +341,23 @@ const Actions = {
289
341
  translateX,
290
342
  });
291
343
  },
344
+ /**
345
+ * Handles messages coming from the windowClient.
346
+ */
292
347
  remoteStateUpdate: function (command, state) {
293
348
  const key = Object.keys(state)[0];
294
349
  const field = `${command}.${key}`;
295
350
  windowTitleBarStore.setValue({ field: field, value: state[key] });
296
351
  },
352
+ /**
353
+ * Minimizes the window.
354
+ */
297
355
  clickMinimize: function () {
298
356
  finsembleWindow.minimize(() => { });
299
357
  },
358
+ /**
359
+ * Closes the window, allows for cleanup. Removes the window from workspace; this function is only invoked when the user clicks the close button.
360
+ */
300
361
  clickClose: function () {
301
362
  FSBL.Clients.WindowClient.close({
302
363
  closeWindow: true,
@@ -304,6 +365,9 @@ const Actions = {
304
365
  userInitiated: true,
305
366
  });
306
367
  },
368
+ /**
369
+ * 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.
370
+ */
307
371
  toggleGroup: function () {
308
372
  const groups = windowTitleBarStore.getValue({ field: "Main.dockingGroups" });
309
373
  const isInMovableGroup = groups.some((group) => group.isMovable);
@@ -314,6 +378,9 @@ const Actions = {
314
378
  finsembleWindow.formGroup();
315
379
  }
316
380
  },
381
+ /**
382
+ * Maximizes the window.
383
+ */
317
384
  clickMaximize: function () {
318
385
  if (finsembleWindow.windowOptions.windowState !== finsembleWindow.WINDOWSTATE.MAXIMIZED)
319
386
  return finsembleWindow.maximize(() => {
@@ -373,6 +440,7 @@ const Actions = {
373
440
  addTab: function (windowIdentifier, i) {
374
441
  let tabs = Actions.getTabs();
375
442
  tabs.push(windowIdentifier);
443
+ // quick UI update
376
444
  Actions._setTabs(tabs);
377
445
  let callback = () => {
378
446
  var _a;
@@ -410,6 +478,7 @@ const Actions = {
410
478
  }
411
479
  tabs.splice(currentIndex, 1);
412
480
  tabs.splice(newIndex, 0, tab);
481
+ // Local change, quickly updates the dom.
413
482
  Actions._setTabs(tabs);
414
483
  Actions.parentWrapper.reorder({ windowIdentifiers: tabs });
415
484
  },
@@ -434,7 +503,8 @@ const Actions = {
434
503
  Actions.parentSubscriptions.forEach((sub) => {
435
504
  FSBL.Clients.RouterClient.unsubscribe(sub);
436
505
  });
437
- Actions.parentSubscriptions = [];
506
+ Actions.parentSubscriptions = []; // remove the subscribeId
507
+ // Syncs scroll state across all tabs in a stack.
438
508
  FSBL.Clients.RouterClient.removeListener(constants.TAB_SCROLL_POSITION_CHANGED, Actions.onTabListScrollPositionChanged);
439
509
  cb();
440
510
  },
@@ -489,6 +559,11 @@ const Actions = {
489
559
  }
490
560
  },
491
561
  };
562
+ /**
563
+ * Initializes the store for the windowTitleBar.
564
+ *
565
+ * @param {any} cb
566
+ */
492
567
  function initialize(cb) {
493
568
  FSBL.Clients.DistributedStoreClient.createStore({ store: "windowTitleBarStore", values: windowTitleBarStoreDefaults }, (err, store) => {
494
569
  if (!err && store) {
@@ -1 +1 @@
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-api/types/types\";\nimport { FinsembleWindow, WindowIdentifier } from \"@finsemble/finsemble-api\";\nimport StoreModel from \"@finsemble/finsemble-api/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/**\n * 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 * @param {*} err\n * @param {*} response\n */\nconst onDockingGroupUpdate: StandardCallback = (err, response) => {\n\tif (err || !response.data || !response.data.groupData) {\n\t\treturn;\n\t}\n\tFSBL.Clients.Logger.system.debug(\"On docking group update\", response.data.groupData);\n\tlet groupNames = Object.keys(response.data.groupData);\n\tlet movableGroups = groupNames\n\t\t.filter((groupName) => response.data.groupData[groupName].isMovable)\n\t\t.map((groupName) => response.data.groupData[groupName]);\n\t// This is all movable and snapped groups. It's used later to figure out the icon to display.\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allDockingGroups\",\n\t\tvalue: response.data.groupData,\n\t});\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allMovableDockingGroups\",\n\t\tvalue: movableGroups,\n\t});\n\tlet myGroups = Actions.getMyDockingGroups(response.data.groupData);\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.dockingGroups\",\n\t\tvalue: myGroups,\n\t});\n\t/**\n\t * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.\n\t */\n\tlet isSnapped = false;\n\tlet isInMovableGroup = false;\n\tlet isTopRight = false;\n\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\tfor (let i = 0; i < myGroups.length; i++) {\n\t\tlet myGroup = myGroups[i];\n\t\tif (myGroup.isMovable) {\n\t\t\tisInMovableGroup = true;\n\t\t\tif (windowName == myGroup.topRightWindow) {\n\t\t\t\tisTopRight = true;\n\t\t\t}\n\t\t} else {\n\t\t\tisSnapped = true;\n\t\t}\n\t}\n\tlet icon: string | false = false;\n\n\tif (isSnapped) {\n\t\ticon = \"joiner\";\n\t}\n\tif (isInMovableGroup) {\n\t\ticon = \"ejector\";\n\t}\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"isSnapped\", value: isSnapped },\n\t\t{ field: \"isGrouped\", value: isInMovableGroup },\n\t\t{ field: \"isTopRight\", value: isTopRight },\n\t\t{ field: \"Main.dockingIcon\", value: icon },\n\t]);\n};\n\n/**\n * Listen for updates from the dragAndDropClient.\n */\nconst listenForDNDUpdates = () => {\n\tFSBL.Clients.RouterClient.subscribe(`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`, (err, response) => {\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\twindowTitleBarStore.setValues([\n\t\t\t{\n\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\tvalue: response.data.emitterEnabled,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfield: \"Sharer.receiverEnabled\",\n\t\t\t\tvalue: response.data.receiverEnabled,\n\t\t\t},\n\t\t]);\n\t});\n};\n\n/**\n * Handles whether to show the linker button.\n */\nconst showLinkerButton = () => {\n\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\tconst cb: StandardCallback = (err, response) => {\n\t\tif (response.channels) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Linker.channels\",\n\t\t\t\tvalue: response.channels,\n\t\t\t});\n\t\t}\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\tvalue: true,\n\t\t});\n\t};\n\tcb(null, FSBL.Clients.LinkerClient.getState());\n\tFSBL.Clients.LinkerClient.onStateChange(cb);\n};\n\nconst processInitialTabList = (err: any, values: any) => {\n\tconst onParentSet = () => {\n\t\tActions.parentWrapper = null;\n\t\tActions.getInitialTabList(() => {\n\t\t\tFSBL.Clients.Logger.system.debug(\"docking group update after initial tab list\");\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\tconst onParentCleared = () => {\n\t\tActions.parentWrapper = null;\n\t\tFSBL.Clients.Logger.system.debug(\"ClearParent, setting tabs to null\");\n\t\tActions.stopListeningOnParentWrapper(() => {\n\t\t\tActions.parentWrapperStore = null;\n\t\t\tActions._setTabs(null);\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\n\tfinsembleWindow?.addListener(\"setParent\", onParentSet);\n\tfinsembleWindow?.addListener(\"clearParent\", onParentCleared);\n\tif (err) {\n\t\treturn FSBL.Clients.Logger.system.error(\"Error in getInitialTabList.\", err);\n\t}\n\n\tif (values) Actions._setTabs(values);\n};\n\n/**\n * \"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 */\nconst processFSBLHeader = (FSBLHeader: any, windowTitleBarConfig: any, options: any) => {\n\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\tconst displayName = options.customData?.component?.displayName;\n\n\tconst max = !!FSBLHeader.hideMaximize;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Maximize.hide\", value: max },\n\t\t{ field: \"Minimize.hide\", value: !!FSBLHeader.hideMinimize },\n\t\t{ field: \"Close.hide\", value: !!FSBLHeader.hideClose },\n\t\t{ field: \"AlwaysOnTop.show\", value: !!FSBLHeader.alwaysOnTop },\n\t]);\n\n\t// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\twindowTitleBarStore.setValue({\n\t\tfield: \"hackScrollbar\",\n\t\tvalue: windowTitleBarConfig.hackScrollbar !== false,\n\t});\n\n\tconst title = FSBL.Clients.WindowClient.title || windowTitleBarConfig.title || displayName;\n\n\tif (title) {\n\t\tdocument.title = title;\n\t}\n};\n\n// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]\nconst getOptionsCallback: StandardCallback = (err, opts: Record<string, any>) => {\n\tconst windowAllowTabbing = opts.customData?.foreign?.services?.windowService?.allowTabbing;\n\tconst windowIgnoreTabbing = opts.customData?.foreign?.services?.windowService?.ignoreTilingAndTabbingRequests;\n\tconst dockingAllowTabbing = opts.customData?.foreign?.services?.dockingService?.allowTabbing;\n\tconst dockingIgnoreTabbing = opts.customData?.foreign.services?.dockingService?.ignoreTilingAndTabbingRequests;\n\tconst dontShowTabs =\n\t\twindowAllowTabbing === false ||\n\t\twindowIgnoreTabbing === true ||\n\t\tdockingAllowTabbing === false ||\n\t\tdockingIgnoreTabbing === true;\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"showTabs\",\n\t\tvalue: !dontShowTabs,\n\t});\n};\n\nconst processFEAAndFinsembleConfig = (values: Record<string, any>, windowTitleBarConfig: Record<string, any>) => {\n\tconst finsembleConfig = values.finsemble;\n\n\t// Check FEA config for DOM based movement configuration\n\tconst { useDOMBasedMovement } = values[\"finsemble-electron-adapter\"];\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.useDOMBasedMovement\",\n\t\tvalue: typeof useDOMBasedMovement === \"undefined\" ? true : useDOMBasedMovement,\n\t});\n\n\t// Override defaults if finsemble.Window Manager exists.\n\tconst globalWindowManagerConfig = finsembleConfig[\"Window Manager\"] || {\n\t\talwaysOnTopIcon: false,\n\t\tshowTabs: false,\n\t};\n\n\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\tfinsembleConfig.servicesConfig = finsembleConfig.servicesConfig ?? {};\n\n\tconst defaultDockingConfig = {\n\t\tenabled: true,\n\t};\n\tlet dockingConfig =\n\t\tfinsembleConfig.servicesConfig.docking ??\n\t\tfinsembleConfig.docking ??\n\t\tfinsembleConfig.betaFeatures?.docking ??\n\t\tdefaultDockingConfig;\n\tdockingConfig.tabbing = dockingConfig.tabbing ?? {};\n\n\t// Whether the alwaysOnTop pin is displayed depends this component's config (foreign.components[\"Widow Manager\"].alwaysOnTop)\n\t// and then on the global setting (finsemble[\"Window Manager\"].alwaysOnTop)\n\tconst alwaysOnTopIcon = windowTitleBarConfig.alwaysOnTopIcon ?? globalWindowManagerConfig.alwaysOnTopIcon ?? false;\n\n\tconst servicesConfigWindow = finsembleConfig.servicesConfig.window;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Main.dockingEnabled\", value: dockingConfig.enabled },\n\t\t{\n\t\t\tfield: \"allowWindowTitleRenaming\",\n\t\t\tvalue: servicesConfigWindow.allowWindowTitleRenaming ?? dockingConfig.tabbing.allowEditing ?? false,\n\t\t},\n\t\t{ field: \"AlwaysOnTop.show\", value: alwaysOnTopIcon },\n\t]);\n\n\t// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.\n\tif (dockingConfig.tabbing.enabled === false) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"showTabs\",\n\t\t\tvalue: dockingConfig.tabbing.enabled,\n\t\t});\n\t} else {\n\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// This is the global window manager config.\n\t\tif (typeof windowTitleBarConfig.showTabs !== \"boolean\") {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: globalWindowManagerConfig.showTabs,\n\t\t\t});\n\t\t}\n\t\t// This is the component's config.\n\t\tif (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: windowTitleBarConfig.showTabs,\n\t\t\t});\n\t\t}\n\n\t\tfinsembleWindow.getOptions(getOptionsCallback);\n\t}\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: () => {\n\t\t// This ensures that our config is correct, even if the developer missed some entries\n\t\tconst { options } = FSBL.Clients.WindowClient;\n\t\tconst windowTitleBarConfig = options.customData.foreign.components[\"Window Manager\"];\n\t\tconst { FSBLHeader } = windowTitleBarConfig;\n\n\t\tif (FSBLHeader) processFSBLHeader(FSBLHeader, windowTitleBarConfig, options);\n\n\t\tif (windowTitleBarConfig.showLinker) showLinkerButton();\n\n\t\tlistenForDNDUpdates();\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\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[{ field: \"finsemble\" }, { field: \"finsemble-electron-adapter\" }],\n\t\t\t(err, config) => {\n\t\t\t\tif (config) processFEAAndFinsembleConfig(config, windowTitleBarConfig);\n\t\t\t}\n\t\t);\n\n\t\tActions.getInitialTabList(processInitialTabList);\n\n\t\t/**\n\t\t * This store does not listen on window events (such as \"maximized\" or \"minimized\") - that is the\n\t\t * WindowClient's job. The headerCommandChannel allows the WindowClient to affect the display state\n\t\t * of the windowTitleBar - such as changing the maximize icon when a \"maximized\" event is received.\n\t\t */\n\t\tFSBL.Clients.WindowClient.headerCommandChannel((command, state) => {\n\t\t\tActions.remoteStateUpdate(command, state);\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);\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 = Actions.getTabs();\n\t\tlet currentIndex = tabs.findIndex((el) => tab.windowName === el.windowName);\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
+ {"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-api/types/types\";\nimport { FinsembleWindow, WindowIdentifier } from \"@finsemble/finsemble-api\";\nimport StoreModel from \"@finsemble/finsemble-api/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/**\n * 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 * @param {*} err\n * @param {*} response\n */\nconst onDockingGroupUpdate: StandardCallback = (err, response) => {\n\tif (err || !response.data || !response.data.groupData) {\n\t\treturn;\n\t}\n\tFSBL.Clients.Logger.system.debug(\"On docking group update\", response.data.groupData);\n\tlet groupNames = Object.keys(response.data.groupData);\n\tlet movableGroups = groupNames\n\t\t.filter((groupName) => response.data.groupData[groupName].isMovable)\n\t\t.map((groupName) => response.data.groupData[groupName]);\n\t// This is all movable and snapped groups. It's used later to figure out the icon to display.\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allDockingGroups\",\n\t\tvalue: response.data.groupData,\n\t});\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.allMovableDockingGroups\",\n\t\tvalue: movableGroups,\n\t});\n\tlet myGroups = Actions.getMyDockingGroups(response.data.groupData);\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.dockingGroups\",\n\t\tvalue: myGroups,\n\t});\n\t/**\n\t * Goes through groups and sees if this window is grouped, snapped, or freely hanging out there.\n\t */\n\tlet isSnapped = false;\n\tlet isInMovableGroup = false;\n\tlet isTopRight = false;\n\tlet windowName = getWindowNameForDocking(finsembleWindow);\n\tfor (let i = 0; i < myGroups.length; i++) {\n\t\tlet myGroup = myGroups[i];\n\t\tif (myGroup.isMovable) {\n\t\t\tisInMovableGroup = true;\n\t\t\tif (windowName == myGroup.topRightWindow) {\n\t\t\t\tisTopRight = true;\n\t\t\t}\n\t\t} else {\n\t\t\tisSnapped = true;\n\t\t}\n\t}\n\tlet icon: string | false = false;\n\n\tif (isSnapped) {\n\t\ticon = \"joiner\";\n\t}\n\tif (isInMovableGroup) {\n\t\ticon = \"ejector\";\n\t}\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"isSnapped\", value: isSnapped },\n\t\t{ field: \"isGrouped\", value: isInMovableGroup },\n\t\t{ field: \"isTopRight\", value: isTopRight },\n\t\t{ field: \"Main.dockingIcon\", value: icon },\n\t]);\n};\n\n/**\n * Listen for updates from the dragAndDropClient.\n */\nconst listenForDNDUpdates = () => {\n\tFSBL.Clients.RouterClient.subscribe(`${FSBL.Clients.WindowClient.options.name}Finsemble.Sharer`, (err, response) => {\n\t\tif (err) {\n\t\t\treturn console.error(err);\n\t\t}\n\t\twindowTitleBarStore.setValues([\n\t\t\t{\n\t\t\t\tfield: \"Sharer.emitterEnabled\",\n\t\t\t\tvalue: response.data.emitterEnabled,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfield: \"Sharer.receiverEnabled\",\n\t\t\t\tvalue: response.data.receiverEnabled,\n\t\t\t},\n\t\t]);\n\t});\n};\n\n/**\n * Handles whether to show the linker button.\n */\nconst showLinkerButton = () => {\n\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\tconst cb: StandardCallback = (err, response) => {\n\t\tif (response.channels) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"Linker.channels\",\n\t\t\t\tvalue: response.channels,\n\t\t\t});\n\t\t}\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"Linker.showLinkerButton\",\n\t\t\tvalue: true,\n\t\t});\n\t};\n\tcb(null, FSBL.Clients.LinkerClient.getState());\n\tFSBL.Clients.LinkerClient.onStateChange(cb);\n};\n\nconst processInitialTabList = (err: any, values: any) => {\n\tconst onParentSet = () => {\n\t\tActions.parentWrapper = null;\n\t\tActions.getInitialTabList(() => {\n\t\t\tFSBL.Clients.Logger.system.debug(\"docking group update after initial tab list\");\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\tconst onParentCleared = () => {\n\t\tActions.parentWrapper = null;\n\t\tFSBL.Clients.Logger.system.debug(\"ClearParent, setting tabs to null\");\n\t\tActions.stopListeningOnParentWrapper(() => {\n\t\t\tActions.parentWrapperStore = null;\n\t\t\tActions._setTabs(null);\n\t\t\tonDockingGroupUpdate(null, {\n\t\t\t\tdata: {\n\t\t\t\t\tgroupData: windowTitleBarStore.getValue({\n\t\t\t\t\t\tfield: \"Main.allDockingGroups\",\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t};\n\n\tfinsembleWindow?.addListener(\"setParent\", onParentSet);\n\tfinsembleWindow?.addListener(\"clearParent\", onParentCleared);\n\tif (err) {\n\t\treturn FSBL.Clients.Logger.system.error(\"Error in getInitialTabList.\", err);\n\t}\n\n\tif (values) Actions._setTabs(values);\n};\n\n/**\n * \"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 */\nconst processFSBLHeader = (FSBLHeader: any, windowTitleBarConfig: any, options: any) => {\n\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\tconst displayName = options.customData?.component?.displayName;\n\n\tconst max = !!FSBLHeader.hideMaximize;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Maximize.hide\", value: max },\n\t\t{ field: \"Minimize.hide\", value: !!FSBLHeader.hideMinimize },\n\t\t{ field: \"Close.hide\", value: !!FSBLHeader.hideClose },\n\t\t{ field: \"AlwaysOnTop.show\", value: !!FSBLHeader.alwaysOnTop },\n\t]);\n\n\t// By default, we hack the window's scroll bar so that it displays underneath the header. html.overflow: hidden body.overflow:auto\n\twindowTitleBarStore.setValue({\n\t\tfield: \"hackScrollbar\",\n\t\tvalue: windowTitleBarConfig.FSBLHeader.hackScrollbar !== false,\n\t});\n\twindowTitleBarStore.setValue({\n\t\tfield: \"adjustContentHeights\",\n\t\tvalue: windowTitleBarConfig.FSBLHeader.adjustContentHeights !== false,\n\t});\n\t// By default, fixed positioned elements with a top style set to '0px' will be bumped by the header height and the\n\t// DOM will be monitored for nodes that are added dynamically and bump them if they are fixed with a top style of 0px.\n\twindowTitleBarStore.setValue({\n\t\tfield: \"bumpElements\",\n\t\tvalue: {\n\t\t\tfixed: \"0Positioned\",\n\t\t\tbumpBy: \"25px\",\n\t\t\tmonitorFixedAdditions: true,\n\t\t\t...windowTitleBarConfig.FSBLHeader.bumpElements,\n\t\t},\n\t});\n};\n\n// Once the above has been checked the individual component config is checked for customData.foreign.services[windowService || dockingService][!ignoreTilingAndTabbingRequests || allowTabbing]\nconst getOptionsCallback: StandardCallback = (err, opts: Record<string, any>) => {\n\tconst windowAllowTabbing = opts.customData?.foreign?.services?.windowService?.allowTabbing;\n\tconst windowIgnoreTabbing = opts.customData?.foreign?.services?.windowService?.ignoreTilingAndTabbingRequests;\n\tconst dockingAllowTabbing = opts.customData?.foreign?.services?.dockingService?.allowTabbing;\n\tconst dockingIgnoreTabbing = opts.customData?.foreign.services?.dockingService?.ignoreTilingAndTabbingRequests;\n\tconst dontShowTabs =\n\t\twindowAllowTabbing === false ||\n\t\twindowIgnoreTabbing === true ||\n\t\tdockingAllowTabbing === false ||\n\t\tdockingIgnoreTabbing === true;\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"showTabs\",\n\t\tvalue: !dontShowTabs,\n\t});\n};\n\nconst processFEAAndFinsembleConfig = (values: Record<string, any>, windowTitleBarConfig: Record<string, any>) => {\n\tconst finsembleConfig = values.finsemble;\n\n\t// Check FEA config for DOM based movement configuration\n\tconst { useDOMBasedMovement } = values[\"finsemble-electron-adapter\"];\n\n\twindowTitleBarStore.setValue({\n\t\tfield: \"Main.useDOMBasedMovement\",\n\t\tvalue: typeof useDOMBasedMovement === \"undefined\" ? true : useDOMBasedMovement,\n\t});\n\n\t// Override defaults if finsemble.Window Manager exists.\n\tconst globalWindowManagerConfig = finsembleConfig[\"Window Manager\"] || {\n\t\talwaysOnTopIcon: false,\n\t\tshowTabs: false,\n\t};\n\n\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\tfinsembleConfig.servicesConfig = finsembleConfig.servicesConfig ?? {};\n\n\tconst defaultDockingConfig = {\n\t\tenabled: true,\n\t};\n\tlet dockingConfig =\n\t\tfinsembleConfig.servicesConfig.docking ??\n\t\tfinsembleConfig.docking ??\n\t\tfinsembleConfig.betaFeatures?.docking ??\n\t\tdefaultDockingConfig;\n\tdockingConfig.tabbing = dockingConfig.tabbing ?? {};\n\n\t// Whether the alwaysOnTop pin is displayed depends this component's config (foreign.components[\"Widow Manager\"].alwaysOnTop)\n\t// and then on the global setting (finsemble[\"Window Manager\"].alwaysOnTop)\n\tconst alwaysOnTopIcon = windowTitleBarConfig.alwaysOnTopIcon ?? globalWindowManagerConfig.alwaysOnTopIcon ?? false;\n\n\tconst servicesConfigWindow = finsembleConfig.servicesConfig.window;\n\n\twindowTitleBarStore.setValues([\n\t\t{ field: \"Main.dockingEnabled\", value: dockingConfig.enabled },\n\t\t{\n\t\t\tfield: \"allowWindowTitleRenaming\",\n\t\t\tvalue: servicesConfigWindow.allowWindowTitleRenaming ?? dockingConfig.tabbing.allowEditing ?? false,\n\t\t},\n\t\t{ field: \"AlwaysOnTop.show\", value: alwaysOnTopIcon },\n\t]);\n\n\t// If tabbing is turned off, ignore global/local 'windowManager' config about whether to allow tabbing.\n\tif (dockingConfig.tabbing.enabled === false) {\n\t\twindowTitleBarStore.setValue({\n\t\t\tfield: \"showTabs\",\n\t\t\tvalue: dockingConfig.tabbing.enabled,\n\t\t});\n\t} else {\n\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// This is the global window manager config.\n\t\tif (typeof windowTitleBarConfig.showTabs !== \"boolean\") {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: globalWindowManagerConfig.showTabs,\n\t\t\t});\n\t\t}\n\t\t// This is the component's config.\n\t\tif (windowTitleBarConfig.showTabs || windowTitleBarConfig.showTabs === false) {\n\t\t\twindowTitleBarStore.setValue({\n\t\t\t\tfield: \"showTabs\",\n\t\t\t\tvalue: windowTitleBarConfig.showTabs,\n\t\t\t});\n\t\t}\n\n\t\tfinsembleWindow.getOptions(getOptionsCallback);\n\t}\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: () => {\n\t\t// This ensures that our config is correct, even if the developer missed some entries\n\t\tconst { options } = FSBL.Clients.WindowClient;\n\t\tconst windowTitleBarConfig = options.customData.foreign.components[\"Window Manager\"];\n\t\tconst { FSBLHeader } = windowTitleBarConfig;\n\n\t\tif (FSBLHeader) processFSBLHeader(FSBLHeader, windowTitleBarConfig, options);\n\n\t\tif (windowTitleBarConfig.showLinker) showLinkerButton();\n\n\t\tlistenForDNDUpdates();\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\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[{ field: \"finsemble\" }, { field: \"finsemble-electron-adapter\" }],\n\t\t\t(err, config) => {\n\t\t\t\tif (config) processFEAAndFinsembleConfig(config, windowTitleBarConfig);\n\t\t\t}\n\t\t);\n\n\t\tActions.getInitialTabList(processInitialTabList);\n\n\t\t/**\n\t\t * This store does not listen on window events (such as \"maximized\" or \"minimized\") - that is the\n\t\t * WindowClient's job. The headerCommandChannel allows the WindowClient to affect the display state\n\t\t * of the windowTitleBar - such as changing the maximize icon when a \"maximized\" event is received.\n\t\t */\n\t\tFSBL.Clients.WindowClient.headerCommandChannel((command, state) => {\n\t\t\tActions.remoteStateUpdate(command, state);\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);\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 = Actions.getTabs();\n\t\tlet currentIndex = tabs.findIndex((el) => tab.windowName === el.windowName);\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,3 +1,3 @@
1
1
  body {
2
- margin: 0px;
2
+ margin: 0;
3
3
  }
@@ -1,4 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import "./YesNoDialog.css";
3
3
  import "../../assets/css/dialogs.css";
4
+ /**
5
+ * This dialog window provides a binary choice to the user, and reports back the response to the opener.
6
+ */
4
7
  export declare const YesNoDialog: () => JSX.Element;
@@ -1,3 +1,7 @@
1
+ /*!
2
+ * Copyright 2017 by ChartIQ, Inc.
3
+ * All rights reserved.
4
+ */
1
5
  import React from "react";
2
6
  import "./YesNoDialog.css";
3
7
  import "../../assets/css/dialogs.css";
@@ -16,6 +20,12 @@ const DEFAULT_COMPONENT_STATE = {
16
20
  showAffirmativeButton: true,
17
21
  showCancelButton: true,
18
22
  };
23
+ /**
24
+ * This is our standard dialog that presents the user with 1 - 3 choices. It can be used to allow the user to confirm, reject, or cancel an action. All of these options can be included, and all can be excluded.
25
+ *
26
+ * @class YesNoDialog
27
+ * @extends {React.Component}
28
+ */
19
29
  class YesNoDialogBase extends React.Component {
20
30
  constructor(props = {}) {
21
31
  super(props);
@@ -23,6 +33,12 @@ class YesNoDialogBase extends React.Component {
23
33
  this.state = DEFAULT_COMPONENT_STATE;
24
34
  document.body.addEventListener("keydown", this.handleKeydownOnBody);
25
35
  }
36
+ /**
37
+ * Handles escape and enter.
38
+ *
39
+ * @param {any} e
40
+ * @memberof YesNoDialog
41
+ */
26
42
  handleKeydownOnBody(e) {
27
43
  if (e.code === "Enter" && e.shiftKey === false) {
28
44
  this.sendResponse("affirmative");
@@ -31,6 +47,11 @@ class YesNoDialogBase extends React.Component {
31
47
  this.sendResponse("cancel");
32
48
  }
33
49
  }
50
+ /**
51
+ * Necessary to ensure that `this` is correct when our methods are invoked.
52
+ *
53
+ * @memberof YesNoDialog
54
+ */
34
55
  bindCorrectContext() {
35
56
  this.handleKeydownOnBody = this.handleKeydownOnBody.bind(this);
36
57
  this.onShowRequested = this.onShowRequested.bind(this);
@@ -40,6 +61,13 @@ class YesNoDialogBase extends React.Component {
40
61
  this.sendExpiredResponse = this.sendExpiredResponse.bind(this);
41
62
  this.sendResponse = this.sendResponse.bind(this);
42
63
  }
64
+ /**
65
+ * When the opener requests that the dialog show itself, it also passes in initialization data. This function grabs that data, calls setState, and then fits the window to the contents of the DOM. Then we call `showDialog`, which will display the dialog on the proper monitor.
66
+ *
67
+ * @param {any} err
68
+ * @param {any} response
69
+ * @memberof YesNoDialog
70
+ */
43
71
  onShowRequested(err, response) {
44
72
  let { data } = response;
45
73
  this.setState({
@@ -56,34 +84,66 @@ class YesNoDialogBase extends React.Component {
56
84
  timerDuration: typeof data.timerDuration === "undefined" ? null : data.timerDuration,
57
85
  }, this.fitAndShow);
58
86
  }
87
+ /**
88
+ * Fits the contents of the DOM to the window, then calls `showDialog`, which positions the dialog on the proper monitor and toggles the visibility of the window.
89
+ *
90
+ * @memberof YesNoDialog
91
+ */
59
92
  fitAndShow() {
60
93
  FSBL.Clients.WindowClient.fitToDOM(null, () => {
61
94
  FSBL.Clients.DialogManager.showDialog();
62
95
  });
63
96
  }
97
+ /**
98
+ * Sends user input to the opener.
99
+ *
100
+ * @param {any} response
101
+ * @memberof YesNoDialog
102
+ */
64
103
  sendResponse(response) {
65
- console.log("Response: ", response);
66
104
  FSBL.Clients.DialogManager.respondToOpener({
67
105
  choice: response,
68
106
  hideModalOnClose: this.state.hideModalOnClose,
69
107
  });
108
+ // This will detach the timer component from the dom. Next time the component comes up, it'll have a fresh timer.
70
109
  this.setState({
71
110
  showTimer: false,
72
111
  });
73
112
  }
113
+ /**
114
+ * Sends an affirmative response to the opener.
115
+ *
116
+ * @memberof YesNoDialog
117
+ */
74
118
  sendAffirmativeResponse() {
75
119
  this.sendResponse("affirmative");
76
120
  }
121
+ /**
122
+ * Sends a negative response to the opener.
123
+ *
124
+ * @memberof YesNoDialog
125
+ */
77
126
  sendNegativeResponse() {
78
127
  this.sendResponse("negative");
79
128
  }
129
+ /**
130
+ * Sends a cancel response to the opener.
131
+ *
132
+ * @memberof YesNoDialog
133
+ */
80
134
  sendCancelResponse() {
81
135
  this.sendResponse("cancel");
82
136
  }
137
+ /**
138
+ * Sends an expired response to the opener.
139
+ *
140
+ * @memberof YesNoDialog
141
+ */
83
142
  sendExpiredResponse() {
84
143
  this.sendResponse("expired");
85
144
  }
86
145
  render() {
146
+ document.title = this.state.title;
87
147
  return (React.createElement(FinsembleDialog, { userInputTimeout: 10000, behaviorOnResponse: "hide", onShowRequested: this.onShowRequested, isModal: true },
88
148
  React.createElement("div", { className: "dialog-title" }, this.state.title),
89
149
  React.createElement(FinsembleDialogQuestion, null,
@@ -95,5 +155,8 @@ class YesNoDialogBase extends React.Component {
95
155
  React.createElement(FinsembleDialogButton, { show: this.state.showAffirmativeButton, className: "fsbl-button-affirmative", onClick: this.sendAffirmativeResponse }, this.state.affirmativeResponseLabel))));
96
156
  }
97
157
  }
158
+ /**
159
+ * This dialog window provides a binary choice to the user, and reports back the response to the opener.
160
+ */
98
161
  export const YesNoDialog = () => React.createElement(YesNoDialogBase, null);
99
162
  //# sourceMappingURL=YesNoDialog.js.map