@finsemble/finsemble-ui 7.1.0 → 7.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/package.json +11 -10
  2. package/react/assets/css/core/icons.css +1 -0
  3. package/react/assets/css/linkerWindow.css +1 -1
  4. package/react/assets/css/windowTitleBar.css +8 -1
  5. package/react/components/common/FinsembleToggleButtonBar.js +2 -2
  6. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
  7. package/react/components/common/TimeSelect.js +10 -3
  8. package/react/components/common/TimeSelect.js.map +1 -1
  9. package/react/components/common/css/FinsembleToggle.css +6 -6
  10. package/react/components/common/helpers.js +1 -0
  11. package/react/components/common/helpers.js.map +1 -1
  12. package/react/components/legacyControls/FinsembleDialogButton.js +5 -1
  13. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  14. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +1 -0
  15. package/react/components/legacyControls/FinsembleDialogTextInput.js +1 -1
  16. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  17. package/react/components/linker/LinkerMenu.js +22 -6
  18. package/react/components/linker/LinkerMenu.js.map +1 -1
  19. package/react/components/menu/MenuPortal.js +1 -1
  20. package/react/components/menu/MenuPortal.js.map +1 -1
  21. package/react/components/menu/MenuToggle.js +1 -1
  22. package/react/components/menu/MenuToggle.js.map +1 -1
  23. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +2 -1
  24. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  25. package/react/components/notifications/utils.js +5 -5
  26. package/react/components/notifications/utils.js.map +1 -1
  27. package/react/components/sdd/Application.js +0 -1
  28. package/react/components/sdd/Application.js.map +1 -1
  29. package/react/components/sdd/Export.js +1 -1
  30. package/react/components/sdd/Export.js.map +1 -1
  31. package/react/components/sdd/css/addApp.css +1 -1
  32. package/react/components/sdd/css/nav.css +0 -1
  33. package/react/components/sdd/tests/AddApp.spec.js +1 -1
  34. package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
  35. package/react/components/sdd/tests/EditPreload.spec.js +35 -24
  36. package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
  37. package/react/components/sdd/tests/Export.spec.js +6 -0
  38. package/react/components/sdd/tests/Export.spec.js.map +1 -1
  39. package/react/components/sdd/tests/OptionalSettingsView.spec.js +55 -42
  40. package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
  41. package/react/components/shared/DefaultDropdownButton.js +5 -5
  42. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  43. package/react/components/singleInputDialog/SingleInputDialog.js +3 -1
  44. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  45. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +1 -1
  46. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +52 -40
  47. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  48. package/react/components/userPreferences/components/content/Workspaces.d.ts +2 -2
  49. package/react/components/userPreferences/components/content/Workspaces.js +69 -54
  50. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  51. package/react/components/userPreferences/components/general/ScheduledClose.js +3 -2
  52. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  53. package/react/components/windowTitleBar/WindowTitleBarShell.js +13 -13
  54. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  55. package/react/components/windowTitleBar/components/left/LinkerButton.js +1 -1
  56. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  57. package/react/components/yesNoDialog/YesNoDialog.js +1 -1
  58. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  59. package/react/hooks/useNotifications.js +9 -2
  60. package/react/hooks/useNotifications.js.map +1 -1
  61. package/react/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/content/Workspaces.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport async from \"async\";\nimport { Util } from \"@finsemble/finsemble-api\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport { Actions as WorkspaceManagementMenuActions } from \"../../../toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore\";\nimport { WorkspaceManagementMenuStore } from \"../../stores/UserPreferencesStore\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { WorkspaceButton } from \"../workspaces/WorkspaceButton\";\nimport WorkspaceComponents from \"../workspaces/WorkspaceComponents\";\nimport WorkspaceItemList from \"../workspaces/WorkspaceItemList\";\nimport { Workspace, ImportWorkspace, WorkspaceTemplate } from \"../../../../types/workspaceTypes\";\n\ninterface IProps {\n\taddListener: (fieldListener: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n\tgetValue: (fieldName: { field: string }, cb: (err: StandardError, data: Workspace[]) => void) => void;\n\tremoveListener: (fieldName: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n}\n\ninterface IState {\n\tinitialAlwaysOnTop: boolean;\n\talwaysOnTop: boolean;\n\tworkspaceList: Workspace[];\n\tfocusedWorkspace: string;\n\tediting: boolean;\n\tworkspaceBeingEdited: string;\n\ttemplateName: string;\n\tadding: boolean;\n\tworkspaceToLoadOnStart: string | null;\n\tfocusedWorkspaceComponentList: string[];\n\n\tpromptUserOnDirtyWorkspace: boolean;\n\tdiscardUnsavedChanges: boolean;\n}\n\nconst WORKSPACE_PREFERENCES = {\n\tPROMPT_USER_ON_DIRTY_WORKSPACE: \"finsemble.servicesConfig.workspace.promptUserOnDirtyWorkspace\",\n\tDISCARD_UNSAVED_CHANGES: \"finsemble.servicesConfig.workspace.discardUnsavedChanges\",\n};\n\nexport default class Workspaces extends React.Component<IProps, IState> {\n\taddWorkspace?: () => void;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tworkspaceList: [],\n\t\t\tfocusedWorkspace: \"\",\n\t\t\tworkspaceToLoadOnStart: null,\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t\tfocusedWorkspaceComponentList: [],\n\t\t\tinitialAlwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\talwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\tpromptUserOnDirtyWorkspace: true,\n\t\t\tdiscardUnsavedChanges: false,\n\t\t};\n\t\tthis.bindCorrectContext();\n\t\tthis.addListeners();\n\t}\n\n\tresetState() {\n\t\tthis.setState({\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tfocusedWorkspace: \"\",\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.deleteWorkspace = this.deleteWorkspace.bind(this);\n\t\tthis.addListeners = this.addListeners.bind(this);\n\t\tthis.setWorkspaceList = this.setWorkspaceList.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.startEditingWorkspace = this.startEditingWorkspace.bind(this);\n\t\tthis.renameWorkspace = this.renameWorkspace.bind(this);\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\n\t\tthis.setWorkspaceToLoadOnStart = this.setWorkspaceToLoadOnStart.bind(this);\n\t\tthis.setPreferences = this.setPreferences.bind(this);\n\t\tthis.exportWorkspace = this.exportWorkspace.bind(this);\n\t\tthis.handleButtonClicks = this.handleButtonClicks.bind(this);\n\t\tthis.getFocusedWorkspaceComponentList = this.getFocusedWorkspaceComponentList.bind(this);\n\t\tthis.changePreferencesAlwaysOnTop = this.changePreferencesAlwaysOnTop.bind(this);\n\t\tthis.openFileDialog = this.openFileDialog.bind(this);\n\t\tthis.preferencesFocused = this.preferencesFocused.bind(this);\n\t\tthis.setFocusedWorkspace = this.setFocusedWorkspace.bind(this);\n\n\t\tthis.toggleDiscardUnsavedChanges = this.toggleDiscardUnsavedChanges.bind(this);\n\t\tthis.togglePromptUserOnDirtyWorkspace = this.togglePromptUserOnDirtyWorkspace.bind(this);\n\t}\n\n\tsetWorkspaceList(err: StandardError, data: { value: Workspace[] }) {\n\t\tif (!data) return;\n\t\tthis.setState({\n\t\t\tworkspaceList: data.value,\n\t\t});\n\t}\n\n\taddListeners() {\n\t\tthis.props.addListener({ field: \"WorkspaceList\" }, this.setWorkspaceList);\n\t}\n\n\t/**\n\t * Sets the windowOptions.alwaysOnTop to the value supplied. The preferences component should\n\t * not be always on top when a file dialog is open.\n\t * @param {boolean} alwaysOnTop The value to set finsembleWindow.options.alwaysOnTop\n\t */\n\tchangePreferencesAlwaysOnTop(alwaysOnTop: boolean) {\n\t\t// The initialAlwaysOnTop check is to prevent making a component be alwaysOnTop when the\n\t\t// client may have set it to alwaysOnTop:false in the config. If that's the case, it should\n\t\t// never set its alwaysOnTop to true and should always remain unchanged\n\t\tif (this.state.initialAlwaysOnTop) {\n\t\t\tFSBL.Clients.WindowClient.setAlwaysOnTop(alwaysOnTop, () => {\n\t\t\t\tthis.setState({\n\t\t\t\t\talwaysOnTop,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) {\n\t\tlet workspaces = JSON.parse(JSON.stringify(this.state.workspaceList));\n\t\tlet workspaceToMove = JSON.parse(JSON.stringify(workspaces[oldIndex]));\n\t\tworkspaces.splice(oldIndex, 1);\n\t\tworkspaces.splice(newIndex, 0, workspaceToMove);\n\t\tthis.setState({\n\t\t\tworkspaceList: workspaces,\n\t\t});\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"reorderWorkspace\",\n\t\t\tdata: { oldIndex, newIndex },\n\t\t});\n\t}\n\n\t// returns all the component types of a template definition to display to user for additional info. If multiple components with same type, then instead of listing each\n\t// individually, only one entry will be returned with the count in parentheses.\n\tgetComponentTypes(templateObject: WorkspaceTemplate) {\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes templateObject\", templateObject);\n\t\tlet componentType: string;\n\t\tlet componentMap: { [key: string]: number } = {};\n\t\tlet annotatedComponentList = [];\n\t\tfor (let i = 0; i < templateObject.windows.length; i++) {\n\t\t\tlet windowData = templateObject.windowData[i];\n\t\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes loop\", windowData);\n\t\t\tcomponentType = \"Unknown Component\";\n\t\t\tif (windowData) {\n\t\t\t\t// current assimilation doesn't fill in windowData, so in this case use \"Unknown Component\" for component type\n\t\t\t\tcomponentType = windowData.componentType || windowData.customData.component.type;\n\t\t\t} else {\n\t\t\t\tcomponentType = \"Unknown Component\";\n\t\t\t}\n\t\t\tif (!componentMap[componentType]) {\n\t\t\t\tcomponentMap[componentType] = 1;\n\t\t\t} else {\n\t\t\t\tcomponentMap[componentType]++;\n\t\t\t}\n\t\t}\n\n\t\tconst componentTypes = Object.keys(componentMap);\n\t\tfor (let i = 0; i < componentTypes.length; i++) {\n\t\t\tlet annotatedName = componentTypes[i];\n\t\t\tlet identicalCount = componentMap[componentTypes[i]];\n\t\t\tif (identicalCount > 1) {\n\t\t\t\tannotatedName = `${annotatedName} (${identicalCount})`;\n\t\t\t}\n\t\t\tannotatedComponentList.push(annotatedName);\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes\", annotatedComponentList);\n\t\treturn annotatedComponentList;\n\t}\n\n\tsetFocusedWorkspace(workspace: string) {\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tfocusedWorkspace: workspace,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.getFocusedWorkspaceComponentList();\n\t\t\t}\n\t\t);\n\t}\n\n\tcancelEdit() {\n\t\tif (this.state.adding) {\n\t\t\tlet { workspaceList } = this.state;\n\t\t\tworkspaceList.pop();\n\t\t\tthis.setFocusedWorkspace(\"\");\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: workspaceList,\n\t\t\t});\n\t\t}\n\t\tthis.setState({\n\t\t\tediting: false,\n\t\t\tadding: false,\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\trenameWorkspace(newName: string) {\n\t\tlet oldName = this.state.workspaceBeingEdited;\n\t\tif (oldName === \"\") {\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tif (newName === oldName || newName.trim() === \"\") return this.cancelEdit();\n\n\t\tlet newNameCamelCase = Util.camelCase(newName);\n\t\tif (this.state.workspaceList.some((workspace) => Util.camelCase(workspace.name) === newNameCamelCase)) {\n\t\t\tlet notification = new FSBL.Clients.NotificationClient.Notification();\n\t\t\tnotification.source = \"Finsemble\";\n\t\t\tnotification.title = \"Workspace renaming\";\n\t\t\tnotification.details = `Sorry, unable to rename workspace to \"${newName}\". Please use another name.`;\n\t\t\tFSBL.Clients.NotificationClient.notify(notification);\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tlet updatedWorkspaceList = this.state.workspaceList;\n\t\tlet index = updatedWorkspaceList.findIndex((el) => el.name === oldName);\n\t\t// Set state locally so that the text doesn't change when the input field unmounts.\n\t\tif (index !== -1) {\n\t\t\tupdatedWorkspaceList[index].name = newName;\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: updatedWorkspaceList,\n\t\t\t});\n\t\t}\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"renameWorkspace\",\n\t\t\tdata: {\n\t\t\t\toldName: oldName,\n\t\t\t\tnewName: newName,\n\t\t\t},\n\t\t});\n\t\tif (this.state.workspaceToLoadOnStart === oldName) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tfocusedWorkspace: newName,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.setWorkspaceToLoadOnStart(() => {\n\t\t\t\t\t\tthis.cancelEdit();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\tstartEditingWorkspace(e: React.SyntheticEvent, workspaceName = this.state.focusedWorkspace) {\n\t\t// without preventing this event from reaching the finsemble draggable,\n\t\t// the editor will lose focus and you won't be able to rename your workspaces\n\t\te.stopPropagation();\n\t\tthis.setState({\n\t\t\tediting: true,\n\t\t\tfocusedWorkspace: workspaceName,\n\t\t\tworkspaceBeingEdited: workspaceName,\n\t\t});\n\t}\n\n\tstartExportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"exportWorkspace\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.focusedWorkspace,\n\t\t\t},\n\t\t});\n\t}\n\n\tstartImportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"importTemplate\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.templateName,\n\t\t\t},\n\t\t});\n\t}\n\n\tdeleteWorkspace(workspaceName = this.state.focusedWorkspace) {\n\t\tthis.resetState();\n\n\t\tconst removeWorkspaceFromList = (wasDeleted: boolean) => {\n\t\t\tif (wasDeleted) {\n\t\t\t\tlet workspaceListCopy = [...this.state.workspaceList];\n\t\t\t\tworkspaceListCopy = workspaceListCopy.filter((workspace) => workspace.name !== workspaceName);\n\t\t\t\tthis.setState({ workspaceList: workspaceListCopy });\n\t\t\t}\n\t\t};\n\t\tconst data = {\n\t\t\tname: workspaceName,\n\t\t\thideModalOnClose: false,\n\t\t};\n\n\t\tWorkspaceManagementMenuActions.removeWorkspace(data, removeWorkspaceFromList);\n\t}\n\n\tsetPreferences(err: StandardError, data: any) {\n\t\tconst { value } = data || {};\n\t\tif (!value) return;\n\t\tthis.setState({\n\t\t\tworkspaceToLoadOnStart: data.value[\"finsemble.initialWorkspace\"],\n\t\t\tfocusedWorkspace: data.value[\"finsemble.initialWorkspace\"],\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.addListener({ field: \"preferences\" }, this.setPreferences);\n\t\tFSBL.Clients.ConfigClient.getPreferences((err, data) => {\n\t\t\tthis.setPreferences(err, { value: data });\n\t\t});\n\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t(err, values) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tFSBL.Clients.Logger.system.info(\"componentDidMount.getValues error\", err);\n\t\t\t\t}\n\n\t\t\t\tif (values) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tpromptUserOnDirtyWorkspace: values[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE],\n\t\t\t\t\t\tdiscardUnsavedChanges: values[WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.props.getValue({ field: \"WorkspaceList\" }, (err: StandardError, data: Workspace[]) => {\n\t\t\tif (data && data.length) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tworkspaceList: data,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.props.removeListener({ field: \"preferences\" }, this.setPreferences);\n\t}\n\n\tsetPreference(field: string, value: any, cb?: Function) {\n\t\tFSBL.Clients.ConfigClient.setPreference(\n\t\t\t{\n\t\t\t\tfield,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t}\n\t\t\t\tif (cb) {\n\t\t\t\t\tcb();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tsetWorkspaceToLoadOnStart(\n\t\teventOrCb: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement> | (() => void)\n\t) {\n\t\tif (!this.state.focusedWorkspace) return;\n\t\tif (this.state.focusedWorkspace === this.state.workspaceToLoadOnStart) {\n\t\t\tthis.setState({ workspaceToLoadOnStart: null }, () => this.setPreference(\"finsemble.initialWorkspace\", null));\n\t\t} else {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tworkspaceToLoadOnStart: this.state.focusedWorkspace,\n\t\t\t\t},\n\t\t\t\t() => this.setPreference(\"finsemble.initialWorkspace\", this.state.focusedWorkspace)\n\t\t\t);\n\t\t}\n\n\t\tif (typeof eventOrCb === \"function\") {\n\t\t\teventOrCb();\n\t\t}\n\t}\n\n\topenFileDialog() {\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\tlet inputElement = document.getElementById(\"file-input\");\n\t\tinputElement?.addEventListener(\"change\", this.importWorkspace as ImportWorkspace, false);\n\t\tinputElement?.click();\n\t}\n\n\t/**\n\t * If the event is being listened to, when the preferences component is focused\n\t * it will set always on top to true, and remove the event listener\n\t *\n\t * This is to handle bringing alwaysOnTop back to true when file dialogs are closed\n\t * without changes (also handles bringing back to front after exporting)\n\t */\n\tpreferencesFocused() {\n\t\tfinsembleWindow.removeEventListener(\"focused\", this.preferencesFocused);\n\t\tthis.changePreferencesAlwaysOnTop(true);\n\t}\n\n\timportWorkspace(\n\t\tevt: Event & {\n\t\t\ttarget: {\n\t\t\t\tfiles: File[];\n\t\t\t\tvalue?: string | string[];\n\t\t\t};\n\t\t}\n\t): void {\n\t\tlet inputElement = document.getElementById(\"file-input\") as HTMLInputElement;\n\t\tinputElement?.removeEventListener(\"change\", this.importWorkspace as ImportWorkspace);\n\t\tconst { files } = evt.target; // FileList object\n\n\t\tfunction loadFile(file: File, done: () => void) {\n\t\t\tconst reader = new FileReader();\n\t\t\tlet fileName = evt.target.value;\n\t\t\t// When the file info is loaded, we get into here..\n\t\t\treader.onload = function (e) {\n\t\t\t\tfileName = (fileName as string).split(\"\\\\\");\n\t\t\t\tfileName = fileName[fileName.length - 1].replace(\".json\", \"\");\n\t\t\t\tlet workspaceTemplateDefinition = JSON.parse(e?.target?.result as string);\n\t\t\t\tlet templateName = Object.keys(workspaceTemplateDefinition.workspaceTemplates)[0];\n\t\t\t\tif (fileName !== templateName) {\n\t\t\t\t\t// We want the file name to overwrite the name of the workspace that was saved as the template..\n\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName] =\n\t\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t\tdelete workspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t}\n\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName].name = fileName;\n\t\t\t\tFSBL.Clients.WorkspaceClient.import(\n\t\t\t\t\t{\n\t\t\t\t\t\tworkspaceJSONDefinition: workspaceTemplateDefinition.workspaceTemplates,\n\t\t\t\t\t\tforce: false,\n\t\t\t\t\t},\n\t\t\t\t\t(err: StandardError) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tFSBL.Clients.Logger.system.info(\"addWorkspaceTemplateDefinition error\", err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t};\n\n\t\t\t// Read in the image file as a data URL.\n\t\t\treader.readAsText(file);\n\t\t}\n\n\t\tasync.each(files, loadFile, () => {\n\t\t\t// Clear out files. so if the user imports the same file back-to-back, the event will fire.\n\t\t\tif (inputElement?.value) {\n\t\t\t\tinputElement.value = \"\";\n\t\t\t}\n\t\t\tFSBL.Clients.Logger.system.info(\"Workspaces imported\");\n\t\t});\n\t}\n\n\texportWorkspace() {\n\t\tif (this.state.focusedWorkspace === \"\") return;\n\t\tconst doExport = () => {\n\t\t\tFSBL.Clients.WorkspaceClient.getWorkspaceDefinition(\n\t\t\t\t{ workspaceName: this.state.focusedWorkspace },\n\t\t\t\t(err: StandardError, workspaceDefinition: string) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tFSBL.Clients.Logger.system.error(\"getWorkspaceDefinition error\", err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We're saving using a routine initially created for templates. The outcome is the same and it probably should have just been \"Save to file\". This bool is to allow it to save.\n\t\t\t\t\t\tFSBL.ConfigUtils.promptAndSaveJSONToLocalFile(this.state.focusedWorkspace, {\n\t\t\t\t\t\t\tworkspaceTemplates: workspaceDefinition,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\t// If we're autosaving, autosave, then export.\n\t\tFSBL.Clients.ConfigClient.getValue(\n\t\t\t{\n\t\t\t\tfield: \"finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace\",\n\t\t\t},\n\t\t\t(err, data) => {\n\t\t\t\t// default to false.\n\t\t\t\tlet PROMPT_ON_SAVE = data === null ? false : data;\n\t\t\t\tif (!PROMPT_ON_SAVE) {\n\t\t\t\t\tlet activeName = FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name;\n\t\t\t\t\treturn FSBL.Clients.WorkspaceClient.saveAs(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: activeName,\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tdoExport();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdoExport();\n\t\t\t}\n\t\t);\n\t}\n\n\thandleButtonClicks(e: React.MouseEvent<HTMLDivElement>) {\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tgetFocusedWorkspaceComponentList() {\n\t\tlet { workspaceList, focusedWorkspace } = this.state;\n\t\tif (focusedWorkspace === \"\") return [];\n\t\tlet workspace = workspaceList.filter((wSpace) => wSpace.name === focusedWorkspace)[0];\n\n\t\tFSBL.Clients.WorkspaceClient.getWorkspaceDefinition(\n\t\t\t{ workspaceName: focusedWorkspace },\n\t\t\t(\n\t\t\t\t_: StandardError,\n\t\t\t\tworkspaceDefinition: {\n\t\t\t\t\t[key: string]: WorkspaceTemplate;\n\t\t\t\t}\n\t\t\t) => {\n\t\t\t\tlet componentTypes = workspace?.components;\n\t\t\t\ttry {\n\t\t\t\t\tcomponentTypes = this.getComponentTypes(workspaceDefinition[focusedWorkspace]);\n\t\t\t\t} catch (err) {\n\t\t\t\t} finally {\n\t\t\t\t\tif (componentTypes) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tfocusedWorkspaceComponentList: componentTypes,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\ttoggleDiscardUnsavedChanges() {\n\t\tconst newValue = !this.state.discardUnsavedChanges;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tdiscardUnsavedChanges: newValue,\n\t\t\t},\n\t\t\t() => this.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, newValue)\n\t\t);\n\t}\n\n\ttogglePromptUserOnDirtyWorkspace() {\n\t\tconst newValue = !this.state.promptUserOnDirtyWorkspace;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tpromptUserOnDirtyWorkspace: newValue,\n\t\t\t\tdiscardUnsavedChanges: newValue ? false : this.state.discardUnsavedChanges,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, newValue);\n\t\t\t\tif (newValue) {\n\t\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, false);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\trender() {\n\t\tlet deleteButtonClasses = \"individual-workspace-action delete-workspace\",\n\t\t\trenameButtonClasses = \"individual-workspace-action\",\n\t\t\tallowDelete = true,\n\t\t\tallowExport = true,\n\t\t\tallowRename = true,\n\t\t\tallowImport = true,\n\t\t\tdeleteTooltip = \"Delete\";\n\n\t\tif (this.state.focusedWorkspace === FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name) {\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t}\n\n\t\tif (this.state.focusedWorkspace === \"\") {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteTooltip = \"No workspace selected\";\n\t\t\tallowRename = false;\n\t\t\tallowExport = false;\n\t\t\tallowDelete = false;\n\t\t}\n\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-button`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-button`;\n\t\t\tallowDelete = false;\n\t\t\tallowExport = false;\n\t\t\tallowRename = false;\n\t\t\tallowImport = false;\n\t\t}\n\n\t\tlet importTooltip = \"Import workspace from file\",\n\t\t\texportTooltip = allowExport ? \"Export selected workspace\" : \"No workspace selected\",\n\t\t\trenameTooltip = allowRename ? \"Rename\" : \"Cannot Edit\";\n\n\t\treturn (\n\t\t\t<div style={{ paddingLeft: 10 }}>\n\t\t\t\t<input style={{ display: \"none\" }} type=\"file\" id=\"file-input\" />\n\t\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t\t<div className=\"workspace-list-header-row\">\n\t\t\t\t\t\t<div className=\"content-section-header workspace-list-header\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"content-section-wrapper\">\n\t\t\t\t\t\t<WorkspaceItemList\n\t\t\t\t\t\t\tonDragEnd={this.onDragEnd}\n\t\t\t\t\t\t\tworkspaceList={this.state.workspaceList}\n\t\t\t\t\t\t\tallowDelete={allowDelete}\n\t\t\t\t\t\t\tdeleteButtonClasses={deleteButtonClasses}\n\t\t\t\t\t\t\tdeleteTooltip={deleteTooltip}\n\t\t\t\t\t\t\tworkspaceToLoadOnStart={this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\t\tfocusedWorkspace={this.state.focusedWorkspace}\n\t\t\t\t\t\t\tediting={this.state.editing}\n\t\t\t\t\t\t\tadding={this.state.adding}\n\t\t\t\t\t\t\trenameWorkspace={this.renameWorkspace}\n\t\t\t\t\t\t\taddWorkspace={this.addWorkspace}\n\t\t\t\t\t\t\tcancelEdit={this.cancelEdit}\n\t\t\t\t\t\t\tsetFocusedWorkspace={this.setFocusedWorkspace}\n\t\t\t\t\t\t\trenameTooltip={renameTooltip}\n\t\t\t\t\t\t\trenameButtonClasses={renameButtonClasses}\n\t\t\t\t\t\t\tallowRename={allowRename}\n\t\t\t\t\t\t\thandleButtonClicks={this.handleButtonClicks}\n\t\t\t\t\t\t\tstartEditingWorkspace={this.startEditingWorkspace}\n\t\t\t\t\t\t\tdeleteWorkspace={this.deleteWorkspace}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"workspace-extras\">\n\t\t\t\t\t\t\t<WorkspaceComponents focusedWorkspaceComponentList={this.state.focusedWorkspaceComponentList} />\n\t\t\t\t\t\t\t<div className=\"workspace-action-buttons\">\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={importTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowImport ? this.openFileDialog : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"import\"\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={exportTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowExport ? this.exportWorkspace : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"export\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tdisabled={!this.state.focusedWorkspace}\n\t\t\t\t\t\tonClick={this.setWorkspaceToLoadOnStart}\n\t\t\t\t\t\tchecked={this.state.focusedWorkspace === this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\tlabel=\"Load this workspace on startup\"\n\t\t\t\t\t/>\n\t\t\t\t\t<>&nbsp;</>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tonClick={this.togglePromptUserOnDirtyWorkspace}\n\t\t\t\t\t\tchecked={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\tlabel=\"Prompt user on dirty workspace\"\n\t\t\t\t\t/>\n\t\t\t\t\t<span className=\"indent-15px\">\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tdisabled={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\t\tonClick={this.toggleDiscardUnsavedChanges}\n\t\t\t\t\t\t\tchecked={this.state.discardUnsavedChanges}\n\t\t\t\t\t\t\tlabel=\"Discard unsaved changes\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/content/Workspaces.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport async from \"async\";\nimport { Util } from \"@finsemble/finsemble-api\";\nimport { StandardError } from \"@finsemble/finsemble-api/types/types\";\nimport { Actions as WorkspaceManagementMenuActions } from \"../../../toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore\";\nimport { WorkspaceManagementMenuStore } from \"../../stores/UserPreferencesStore\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { WorkspaceButton } from \"../workspaces/WorkspaceButton\";\nimport WorkspaceComponents from \"../workspaces/WorkspaceComponents\";\nimport WorkspaceItemList from \"../workspaces/WorkspaceItemList\";\nimport { Workspace, ImportWorkspace, WorkspaceTemplate } from \"../../../../types/workspaceTypes\";\n\ninterface IProps {\n\taddListener: (fieldListener: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n\tgetValue: (fieldName: { field: string }, cb: (err: StandardError, data: Workspace[]) => void) => void;\n\tremoveListener: (fieldName: { field: string }, cb: (err: StandardError, data: any) => void) => void;\n}\n\ninterface IState {\n\tinitialAlwaysOnTop: boolean;\n\talwaysOnTop: boolean;\n\tworkspaceList: Workspace[];\n\tfocusedWorkspace: string;\n\tediting: boolean;\n\tworkspaceBeingEdited: string;\n\ttemplateName: string;\n\tadding: boolean;\n\tworkspaceToLoadOnStart: string | null;\n\tfocusedWorkspaceComponentList: string[];\n\n\tpromptUserOnDirtyWorkspace: boolean;\n\tdiscardUnsavedChanges: boolean;\n}\n\nconst WORKSPACE_PREFERENCES = {\n\tPROMPT_USER_ON_DIRTY_WORKSPACE: \"finsemble.servicesConfig.workspace.promptUserOnDirtyWorkspace\",\n\tDISCARD_UNSAVED_CHANGES: \"finsemble.servicesConfig.workspace.discardUnsavedChanges\",\n\tINITIAL_WORKSPACE_PREFERENCE: \"finsemble.initialWorkspace\",\n};\n\nexport default class Workspaces extends React.Component<IProps, IState> {\n\taddWorkspace?: () => void;\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tworkspaceList: [],\n\t\t\tfocusedWorkspace: \"\",\n\t\t\tworkspaceToLoadOnStart: null,\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t\tfocusedWorkspaceComponentList: [],\n\t\t\tinitialAlwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\talwaysOnTop: finsembleWindow.windowOptions?.alwaysOnTop,\n\t\t\tpromptUserOnDirtyWorkspace: true,\n\t\t\tdiscardUnsavedChanges: false,\n\t\t};\n\t\tthis.bindCorrectContext();\n\t\tthis.addListeners();\n\t}\n\n\tresetState() {\n\t\tthis.setState({\n\t\t\tadding: false,\n\t\t\tediting: false,\n\t\t\tfocusedWorkspace: \"\",\n\t\t\ttemplateName: \"\",\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.deleteWorkspace = this.deleteWorkspace.bind(this);\n\t\tthis.addListeners = this.addListeners.bind(this);\n\t\tthis.setWorkspaceList = this.setWorkspaceList.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.startEditingWorkspace = this.startEditingWorkspace.bind(this);\n\t\tthis.renameWorkspace = this.renameWorkspace.bind(this);\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\n\t\tthis.setWorkspaceToLoadOnStart = this.setWorkspaceToLoadOnStart.bind(this);\n\t\tthis.setUIPreferencesState = this.setUIPreferencesState.bind(this);\n\t\tthis.exportWorkspace = this.exportWorkspace.bind(this);\n\t\tthis.handleButtonClicks = this.handleButtonClicks.bind(this);\n\t\tthis.getFocusedWorkspaceComponentList = this.getFocusedWorkspaceComponentList.bind(this);\n\t\tthis.changePreferencesAlwaysOnTop = this.changePreferencesAlwaysOnTop.bind(this);\n\t\tthis.openFileDialog = this.openFileDialog.bind(this);\n\t\tthis.preferencesFocused = this.preferencesFocused.bind(this);\n\t\tthis.setFocusedWorkspace = this.setFocusedWorkspace.bind(this);\n\n\t\tthis.toggleDiscardUnsavedChanges = this.toggleDiscardUnsavedChanges.bind(this);\n\t\tthis.togglePromptUserOnDirtyWorkspace = this.togglePromptUserOnDirtyWorkspace.bind(this);\n\t}\n\n\tsetWorkspaceList(err: StandardError, data: { value: Workspace[] }) {\n\t\tif (!data) return;\n\t\tthis.setState({\n\t\t\tworkspaceList: data.value,\n\t\t});\n\t}\n\n\taddListeners() {\n\t\tthis.props.addListener({ field: \"WorkspaceList\" }, this.setWorkspaceList);\n\t\tthis.props.addListener({ field: \"preferences\" }, this.setUIPreferencesState);\n\t\tFSBL.Clients.WorkspaceClient.addEventListener(\"save-complete\", this.getFocusedWorkspaceComponentList);\n\t}\n\n\t/**\n\t * Sets the windowOptions.alwaysOnTop to the value supplied. The preferences component should\n\t * not be always on top when a file dialog is open.\n\t * @param {boolean} alwaysOnTop The value to set finsembleWindow.options.alwaysOnTop\n\t */\n\tchangePreferencesAlwaysOnTop(alwaysOnTop: boolean) {\n\t\t// The initialAlwaysOnTop check is to prevent making a component be alwaysOnTop when the\n\t\t// client may have set it to alwaysOnTop:false in the config. If that's the case, it should\n\t\t// never set its alwaysOnTop to true and should always remain unchanged\n\t\tif (this.state.initialAlwaysOnTop) {\n\t\t\tFSBL.Clients.WindowClient.setAlwaysOnTop(alwaysOnTop, () => {\n\t\t\t\tthis.setState({\n\t\t\t\t\talwaysOnTop,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tonDragEnd({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) {\n\t\tlet workspaces = JSON.parse(JSON.stringify(this.state.workspaceList));\n\t\tlet workspaceToMove = JSON.parse(JSON.stringify(workspaces[oldIndex]));\n\t\tworkspaces.splice(oldIndex, 1);\n\t\tworkspaces.splice(newIndex, 0, workspaceToMove);\n\t\tthis.setState({\n\t\t\tworkspaceList: workspaces,\n\t\t});\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"reorderWorkspace\",\n\t\t\tdata: { oldIndex, newIndex },\n\t\t});\n\t}\n\n\t// returns all the component types of a template definition to display to user for additional info. If multiple components with same type, then instead of listing each\n\t// individually, only one entry will be returned with the count in parentheses.\n\tgetComponentTypes(templateObject: WorkspaceTemplate) {\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes templateObject\", templateObject);\n\t\tlet componentType: string;\n\t\tlet componentMap: { [key: string]: number } = {};\n\t\tlet annotatedComponentList = [];\n\t\tfor (let i = 0; i < templateObject.windows.length; i++) {\n\t\t\tconst windowData = templateObject.windowData[i];\n\t\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes loop\", windowData);\n\t\t\tcomponentType = \"Unknown Component\";\n\t\t\tif (windowData) {\n\t\t\t\t// current assimilation doesn't fill in windowData, so in this case use \"Unknown Component\" for component type\n\t\t\t\tcomponentType = windowData.componentType || windowData.customData.component.type;\n\t\t\t} else {\n\t\t\t\tcomponentType = \"Unknown Component\";\n\t\t\t}\n\t\t\tif (!componentMap[componentType]) {\n\t\t\t\tcomponentMap[componentType] = 1;\n\t\t\t} else {\n\t\t\t\tcomponentMap[componentType]++;\n\t\t\t}\n\t\t}\n\n\t\tconst componentTypes = Object.keys(componentMap);\n\t\tfor (let i = 0; i < componentTypes.length; i++) {\n\t\t\tlet annotatedName = componentTypes[i];\n\t\t\tlet identicalCount = componentMap[componentTypes[i]];\n\t\t\tif (identicalCount > 1) {\n\t\t\t\tannotatedName = `${annotatedName} (${identicalCount})`;\n\t\t\t}\n\t\t\tannotatedComponentList.push(annotatedName);\n\t\t}\n\t\tFSBL.Clients.Logger.system.debug(\"getComponentTypes\", annotatedComponentList);\n\t\treturn annotatedComponentList;\n\t}\n\n\tsetFocusedWorkspace(workspace: string) {\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tfocusedWorkspace: workspace,\n\t\t\t},\n\t\t\t() => this.getFocusedWorkspaceComponentList()\n\t\t);\n\t}\n\n\tcancelEdit() {\n\t\tif (this.state.adding) {\n\t\t\tlet { workspaceList } = this.state;\n\t\t\tworkspaceList.pop();\n\t\t\tthis.setFocusedWorkspace(\"\");\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: workspaceList,\n\t\t\t});\n\t\t}\n\t\tthis.setState({\n\t\t\tediting: false,\n\t\t\tadding: false,\n\t\t\tworkspaceBeingEdited: \"\",\n\t\t});\n\t}\n\n\trenameWorkspace(newName: string) {\n\t\tlet oldName = this.state.workspaceBeingEdited;\n\t\tif (oldName === \"\") {\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tif (newName === oldName || newName.trim() === \"\") return this.cancelEdit();\n\n\t\tlet newNameCamelCase = Util.camelCase(newName);\n\t\tif (this.state.workspaceList.some((workspace) => Util.camelCase(workspace.name) === newNameCamelCase)) {\n\t\t\tlet notification = new FSBL.Clients.NotificationClient.Notification();\n\t\t\tnotification.source = \"Finsemble\";\n\t\t\tnotification.title = \"Workspace renaming\";\n\t\t\tnotification.details = `Sorry, unable to rename workspace to \"${newName}\". Please use another name.`;\n\t\t\tFSBL.Clients.NotificationClient.notify(notification);\n\t\t\treturn this.cancelEdit();\n\t\t}\n\n\t\tlet updatedWorkspaceList = this.state.workspaceList;\n\t\tlet index = updatedWorkspaceList.findIndex((el) => el.name === oldName);\n\t\t// Set state locally so that the text doesn't change when the input field unmounts.\n\t\tif (index !== -1) {\n\t\t\tupdatedWorkspaceList[index].name = newName;\n\t\t\tthis.setState({\n\t\t\t\tworkspaceList: updatedWorkspaceList,\n\t\t\t});\n\t\t}\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"renameWorkspace\",\n\t\t\tdata: {\n\t\t\t\toldName: oldName,\n\t\t\t\tnewName: newName,\n\t\t\t},\n\t\t});\n\t\tif (this.state.workspaceToLoadOnStart === oldName) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tfocusedWorkspace: newName,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.setWorkspaceToLoadOnStart(() => {\n\t\t\t\t\t\tthis.cancelEdit();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis.cancelEdit();\n\t\t}\n\t}\n\n\tstartEditingWorkspace(e: React.SyntheticEvent, workspaceName = this.state.focusedWorkspace) {\n\t\t// without preventing this event from reaching the finsemble draggable,\n\t\t// the editor will lose focus and you won't be able to rename your workspaces\n\t\te.stopPropagation();\n\t\tthis.setState({\n\t\t\tediting: true,\n\t\t\tfocusedWorkspace: workspaceName,\n\t\t\tworkspaceBeingEdited: workspaceName,\n\t\t});\n\t}\n\n\tstartExportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"exportWorkspace\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.focusedWorkspace,\n\t\t\t},\n\t\t});\n\t}\n\n\tstartImportingTemplate() {\n\t\tWorkspaceManagementMenuStore?.Dispatcher.dispatch({\n\t\t\tactionType: \"importTemplate\",\n\t\t\tdata: {\n\t\t\t\tname: this.state.templateName,\n\t\t\t},\n\t\t});\n\t}\n\n\tdeleteWorkspace(workspaceName = this.state.focusedWorkspace) {\n\t\tthis.resetState();\n\n\t\tconst removeWorkspaceFromList = (wasDeleted: boolean) => {\n\t\t\tif (wasDeleted) {\n\t\t\t\tlet workspaceListCopy = [...this.state.workspaceList];\n\t\t\t\tworkspaceListCopy = workspaceListCopy.filter((workspace) => workspace.name !== workspaceName);\n\t\t\t\t// If we just removed the workspace configured to be loaded at startup\n\t\t\t\t// we need to unset initial workspace preference\n\t\t\t\tif (workspaceName === this.state.workspaceToLoadOnStart) {\n\t\t\t\t\tthis.setState({ workspaceToLoadOnStart: null }, () =>\n\t\t\t\t\t\tFSBL.Clients.ConfigClient.unsetPreference({ field: WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE })\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.setState({ workspaceList: workspaceListCopy });\n\t\t\t}\n\t\t};\n\t\tconst data = {\n\t\t\tname: workspaceName,\n\t\t\thideModalOnClose: false,\n\t\t};\n\n\t\tWorkspaceManagementMenuActions.removeWorkspace(data, removeWorkspaceFromList);\n\t}\n\n\tsetUIPreferencesState(err: StandardError, data: any) {\n\t\tconst { value } = data || {};\n\t\tif (!value) return;\n\t\tthis.setState({\n\t\t\tworkspaceToLoadOnStart: data.value[WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE],\n\t\t\tfocusedWorkspace:\n\t\t\t\tdata.value[WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE] || this.state.workspaceList[0].name,\n\t\t\tpromptUserOnDirtyWorkspace: data.value[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE],\n\t\t\tdiscardUnsavedChanges: data.value[WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\t// load preferences values from config and set component state on mount\n\t\tFSBL.Clients.ConfigClient.getValues(\n\t\t\t[\n\t\t\t\tWORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE,\n\t\t\t\tWORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES,\n\t\t\t\tWORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE,\n\t\t\t],\n\t\t\t(err, values) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tFSBL.Clients.Logger.system.info(\"componentDidMount.getValues error\", err);\n\t\t\t\t}\n\n\t\t\t\tif (values) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tworkspaceToLoadOnStart: values[WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE],\n\t\t\t\t\t\tfocusedWorkspace:\n\t\t\t\t\t\t\tvalues[WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE] ??\n\t\t\t\t\t\t\tFSBL.Clients.WorkspaceClient.activeWorkspace?.name,\n\t\t\t\t\t\tpromptUserOnDirtyWorkspace: values[WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE],\n\t\t\t\t\t\tdiscardUnsavedChanges: values[WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.props.getValue({ field: \"WorkspaceList\" }, (err: StandardError, data: Workspace[]) => {\n\t\t\tif (data && data.length) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tworkspaceList: data,\n\t\t\t\t\t// set the first workspace from list as focused\n\t\t\t\t\tfocusedWorkspace: data[0].name,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.props.removeListener({ field: \"preferences\" }, this.setUIPreferencesState);\n\t}\n\n\tsetPreference(field: string, value: any, cb?: Function) {\n\t\tFSBL.Clients.ConfigClient.setPreference(\n\t\t\t{\n\t\t\t\tfield,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t}\n\t\t\t\tif (cb) {\n\t\t\t\t\tcb();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tsetWorkspaceToLoadOnStart(\n\t\teventOrCb: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement> | (() => void)\n\t) {\n\t\tif (!this.state.focusedWorkspace) return;\n\t\tif (this.state.focusedWorkspace === this.state.workspaceToLoadOnStart) {\n\t\t\tthis.setState({ workspaceToLoadOnStart: null }, () =>\n\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE, null)\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tworkspaceToLoadOnStart: this.state.focusedWorkspace,\n\t\t\t\t},\n\t\t\t\t() => this.setPreference(WORKSPACE_PREFERENCES.INITIAL_WORKSPACE_PREFERENCE, this.state.focusedWorkspace)\n\t\t\t);\n\t\t}\n\n\t\tif (typeof eventOrCb === \"function\") {\n\t\t\teventOrCb();\n\t\t}\n\t}\n\n\topenFileDialog() {\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\tlet inputElement = document.getElementById(\"file-input\");\n\t\tinputElement?.addEventListener(\"change\", this.importWorkspace as ImportWorkspace, false);\n\t\tinputElement?.click();\n\t}\n\n\t/**\n\t * If the event is being listened to, when the preferences component is focused\n\t * it will set always on top to true, and remove the event listener\n\t *\n\t * This is to handle bringing alwaysOnTop back to true when file dialogs are closed\n\t * without changes (also handles bringing back to front after exporting)\n\t */\n\tpreferencesFocused() {\n\t\tfinsembleWindow.removeEventListener(\"focused\", this.preferencesFocused);\n\t\tthis.changePreferencesAlwaysOnTop(true);\n\t}\n\n\timportWorkspace(\n\t\tevt: Event & {\n\t\t\ttarget: {\n\t\t\t\tfiles: File[];\n\t\t\t\tvalue?: string | string[];\n\t\t\t};\n\t\t}\n\t): void {\n\t\tlet inputElement = document.getElementById(\"file-input\") as HTMLInputElement;\n\t\tinputElement?.removeEventListener(\"change\", this.importWorkspace as ImportWorkspace);\n\t\tconst { files } = evt.target; // FileList object\n\n\t\tfunction loadFile(file: File, done: () => void) {\n\t\t\tconst reader = new FileReader();\n\t\t\tlet fileName = evt.target.value;\n\t\t\t// When the file info is loaded, we get into here..\n\t\t\treader.onload = function (e) {\n\t\t\t\ttry {\n\t\t\t\t\tfileName = (fileName as string).split(\"\\\\\");\n\t\t\t\t\tfileName = fileName[fileName.length - 1].replace(\".json\", \"\");\n\t\t\t\t\tlet workspaceTemplateDefinition = JSON.parse(e?.target?.result as string);\n\t\t\t\t\tlet templateName = Object.keys(workspaceTemplateDefinition.workspaceTemplates)[0];\n\t\t\t\t\tif (fileName !== templateName) {\n\t\t\t\t\t\t// We want the file name to overwrite the name of the workspace that was saved as the template..\n\t\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName] =\n\t\t\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t\t\tdelete workspaceTemplateDefinition.workspaceTemplates[templateName];\n\t\t\t\t\t}\n\t\t\t\t\tworkspaceTemplateDefinition.workspaceTemplates[fileName].name = fileName;\n\t\t\t\t\tFSBL.Clients.WorkspaceClient.import(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tworkspaceJSONDefinition: workspaceTemplateDefinition.workspaceTemplates,\n\t\t\t\t\t\t\tforce: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(err: StandardError) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tFSBL.Clients.Logger.system.info(\"addWorkspaceTemplateDefinition error\", err);\n\t\t\t\t\t\t\t\tFSBL.UserNotification.alert(\n\t\t\t\t\t\t\t\t\t\"system\",\n\t\t\t\t\t\t\t\t\t\"ALWAYS\",\n\t\t\t\t\t\t\t\t\t\"FSBL-Workspace-Import-Error\",\n\t\t\t\t\t\t\t\t\t\"The workspace can't be imported and it could be corrupt. Check the Central Logger for any errors.\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} catch (error: any) {\n\t\t\t\t\tFSBL.Clients.Logger.system.error(error);\n\t\t\t\t\tFSBL.UserNotification.alert(\n\t\t\t\t\t\t\"system\",\n\t\t\t\t\t\t\"ALWAYS\",\n\t\t\t\t\t\t\"FSBL-Workspace-Import-Error\",\n\t\t\t\t\t\t\"The workspace can't be imported and it could be corrupt. Check the Central Logger for any errors.\"\n\t\t\t\t\t);\n\t\t\t\t\tdone();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Read in the image file as a data URL.\n\t\t\treader.readAsText(file);\n\t\t}\n\n\t\tasync.each(files, loadFile, () => {\n\t\t\t// Clear out files. so if the user imports the same file back-to-back, the event will fire.\n\t\t\tif (inputElement?.value) {\n\t\t\t\tinputElement.value = \"\";\n\t\t\t}\n\t\t\tFSBL.Clients.Logger.system.info(\"Workspaces imported\");\n\t\t});\n\t}\n\n\texportWorkspace() {\n\t\tif (this.state.focusedWorkspace === \"\") return;\n\t\tconst doExport = () => {\n\t\t\tFSBL.Clients.WorkspaceClient.export(\n\t\t\t\t{ workspaceName: this.state.focusedWorkspace },\n\t\t\t\t(err: StandardError, workspaceDefinition: string) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tFSBL.Clients.Logger.system.error(\"export error\", err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// We're saving using a routine initially created for templates. The outcome is the same and it probably should have just been \"Save to file\". This bool is to allow it to save.\n\t\t\t\t\t\tFSBL.ConfigUtils.promptAndSaveJSONToLocalFile(this.state.focusedWorkspace, {\n\t\t\t\t\t\t\tworkspaceTemplates: workspaceDefinition,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\t// Set alwaysOnTop to false and add an event listener on the window. When focus is regained\n\t\t// then reset always on top\n\t\tthis.changePreferencesAlwaysOnTop(false);\n\t\tfinsembleWindow.addEventListener(\"focused\", this.preferencesFocused);\n\t\t// If we're autosaving, autosave, then export.\n\t\tFSBL.Clients.ConfigClient.getValue(\n\t\t\t{\n\t\t\t\tfield: \"finsemble.preferences.workspaceService.promptUserOnDirtyWorkspace\",\n\t\t\t},\n\t\t\t(err, data) => {\n\t\t\t\t// default to false.\n\t\t\t\tlet PROMPT_ON_SAVE = data === null ? false : data;\n\t\t\t\tif (!PROMPT_ON_SAVE) {\n\t\t\t\t\tlet activeName = FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name;\n\t\t\t\t\treturn FSBL.Clients.WorkspaceClient.saveAs(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: activeName,\n\t\t\t\t\t\t\tforce: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tdoExport();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdoExport();\n\t\t\t}\n\t\t);\n\t}\n\n\thandleButtonClicks(e: React.MouseEvent<HTMLDivElement>) {\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\n\tasync getFocusedWorkspaceComponentList() {\n\t\tlet { focusedWorkspace } = this.state;\n\t\tif (focusedWorkspace === \"\") return [];\n\n\t\tconst workspaceDefinition: {\n\t\t\t[key: string]: WorkspaceTemplate;\n\t\t} = (await FSBL.Clients.WorkspaceClient.export({ workspaceName: focusedWorkspace }, () => {})) as {\n\t\t\t[key: string]: WorkspaceTemplate;\n\t\t};\n\t\tif (workspaceDefinition) {\n\t\t\tconst workspaceComponents = this.getComponentTypes(workspaceDefinition[focusedWorkspace]);\n\t\t\tif (workspaceComponents) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tfocusedWorkspaceComponentList: workspaceComponents,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleDiscardUnsavedChanges() {\n\t\tconst newValue = !this.state.discardUnsavedChanges;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tdiscardUnsavedChanges: newValue,\n\t\t\t},\n\t\t\t() => this.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, newValue)\n\t\t);\n\t}\n\n\ttogglePromptUserOnDirtyWorkspace() {\n\t\tconst newValue = !this.state.promptUserOnDirtyWorkspace;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tpromptUserOnDirtyWorkspace: newValue,\n\t\t\t\tdiscardUnsavedChanges: newValue ? false : this.state.discardUnsavedChanges,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.PROMPT_USER_ON_DIRTY_WORKSPACE, newValue);\n\t\t\t\tif (newValue) {\n\t\t\t\t\tthis.setPreference(WORKSPACE_PREFERENCES.DISCARD_UNSAVED_CHANGES, false);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\trender() {\n\t\tlet deleteButtonClasses = \"individual-workspace-action delete-workspace\",\n\t\t\trenameButtonClasses = \"individual-workspace-action\",\n\t\t\tallowDelete = true,\n\t\t\tallowExport = true,\n\t\t\tallowRename = true,\n\t\t\tallowImport = true,\n\t\t\tdeleteTooltip = \"Delete\";\n\n\t\tif (this.state.focusedWorkspace === FSBL?.Clients?.WorkspaceClient?.activeWorkspace?.name) {\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t}\n\n\t\tif (this.state.focusedWorkspace === \"\") {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-individual-workspace-action`;\n\t\t\tdeleteTooltip = \"No workspace selected\";\n\t\t\tallowRename = false;\n\t\t\tallowExport = false;\n\t\t\tallowDelete = false;\n\t\t}\n\n\t\tif (this.state.adding || this.state.editing) {\n\t\t\trenameButtonClasses = `${renameButtonClasses} disabled-button`;\n\t\t\tdeleteButtonClasses = `${deleteButtonClasses} disabled-button`;\n\t\t\tallowDelete = false;\n\t\t\tallowExport = false;\n\t\t\tallowRename = false;\n\t\t\tallowImport = false;\n\t\t}\n\n\t\tlet importTooltip = \"Import workspace from file\",\n\t\t\texportTooltip = allowExport ? \"Export selected workspace\" : \"No workspace selected\",\n\t\t\trenameTooltip = allowRename ? \"Rename\" : \"Cannot Edit\";\n\n\t\treturn (\n\t\t\t<div style={{ paddingLeft: 10 }}>\n\t\t\t\t<input style={{ display: \"none\" }} type=\"file\" id=\"file-input\" />\n\t\t\t\t<div className=\"complex-menu-content-row\">\n\t\t\t\t\t<div className=\"workspace-list-header-row\">\n\t\t\t\t\t\t<div className=\"content-section-header workspace-list-header\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"content-section-wrapper\">\n\t\t\t\t\t\t<WorkspaceItemList\n\t\t\t\t\t\t\tonDragEnd={this.onDragEnd}\n\t\t\t\t\t\t\tworkspaceList={this.state.workspaceList}\n\t\t\t\t\t\t\tallowDelete={allowDelete}\n\t\t\t\t\t\t\tdeleteButtonClasses={deleteButtonClasses}\n\t\t\t\t\t\t\tdeleteTooltip={deleteTooltip}\n\t\t\t\t\t\t\tworkspaceToLoadOnStart={this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\t\tfocusedWorkspace={this.state.focusedWorkspace}\n\t\t\t\t\t\t\tediting={this.state.editing}\n\t\t\t\t\t\t\tadding={this.state.adding}\n\t\t\t\t\t\t\trenameWorkspace={this.renameWorkspace}\n\t\t\t\t\t\t\taddWorkspace={this.addWorkspace}\n\t\t\t\t\t\t\tcancelEdit={this.cancelEdit}\n\t\t\t\t\t\t\tsetFocusedWorkspace={this.setFocusedWorkspace}\n\t\t\t\t\t\t\trenameTooltip={renameTooltip}\n\t\t\t\t\t\t\trenameButtonClasses={renameButtonClasses}\n\t\t\t\t\t\t\tallowRename={allowRename}\n\t\t\t\t\t\t\thandleButtonClicks={this.handleButtonClicks}\n\t\t\t\t\t\t\tstartEditingWorkspace={this.startEditingWorkspace}\n\t\t\t\t\t\t\tdeleteWorkspace={this.deleteWorkspace}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"workspace-extras\">\n\t\t\t\t\t\t\t<WorkspaceComponents focusedWorkspaceComponentList={this.state.focusedWorkspaceComponentList} />\n\t\t\t\t\t\t\t<div className=\"workspace-action-buttons\">\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={importTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowImport ? this.openFileDialog : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"import\"\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<WorkspaceButton\n\t\t\t\t\t\t\t\t\ttitle={exportTooltip}\n\t\t\t\t\t\t\t\t\tonMouseDown={this.handleButtonClicks}\n\t\t\t\t\t\t\t\t\tonClick={allowExport ? this.exportWorkspace : () => {}}\n\t\t\t\t\t\t\t\t\ttype=\"export\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tdisabled={!this.state.focusedWorkspace}\n\t\t\t\t\t\tonClick={this.setWorkspaceToLoadOnStart}\n\t\t\t\t\t\tchecked={!!this.state.focusedWorkspace && this.state.focusedWorkspace === this.state.workspaceToLoadOnStart}\n\t\t\t\t\t\tlabel=\"Load this workspace on startup\"\n\t\t\t\t\t/>\n\t\t\t\t\t<>&nbsp;</>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tonClick={this.togglePromptUserOnDirtyWorkspace}\n\t\t\t\t\t\tchecked={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\tlabel=\"Prompt user on dirty workspace\"\n\t\t\t\t\t/>\n\t\t\t\t\t<span className=\"indent-15px\">\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tdisabled={this.state.promptUserOnDirtyWorkspace}\n\t\t\t\t\t\t\tonClick={this.toggleDiscardUnsavedChanges}\n\t\t\t\t\t\t\tchecked={this.state.discardUnsavedChanges}\n\t\t\t\t\t\t\tlabel=\"Discard unsaved changes\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -9,6 +9,7 @@ const DEFAULT_TIME = {
9
9
  meridiem: "AM",
10
10
  };
11
11
  export const ScheduledClose = (props) => {
12
+ var _a;
12
13
  const [initialized, setInitialized] = useState(false);
13
14
  const [enabled, setEnabled] = useState(false);
14
15
  const [weekly, setWeekly] = useState(false);
@@ -105,9 +106,9 @@ export const ScheduledClose = (props) => {
105
106
  setWeekly(!value);
106
107
  }, enabled: enabled })),
107
108
  weekly && (React.createElement("div", { className: `time-selectors daily-select ${enabled ? "" : "disabled"}` },
108
- React.createElement("div", { className: "daily-select-label" }, "Day:"),
109
+ React.createElement("div", { className: "daily-select-label", "aria-label": "Day" }, "Day:"),
109
110
  React.createElement("div", { className: "daily-select-dropdown" },
110
- React.createElement(DefaultDropdownButton, { key: `${day}`, buttonOptions: dayOptions, classNames: "push-right", allowEmpty: false, caretLocation: "right", enabled: enabled, defaultSelection: dayOptions[day ? day : 0] })))),
111
+ React.createElement(DefaultDropdownButton, { key: `${day}`, buttonOptions: dayOptions, classNames: "push-right", allowEmpty: false, caretLocation: "right", enabled: enabled, buttonLabel: `${(_a = dayOptions[day ? day : 0]) === null || _a === void 0 ? void 0 : _a.optionLabel}`, defaultSelection: dayOptions[day ? day : 0] })))),
111
112
  React.createElement("div", { className: "time-selectors" },
112
113
  React.createElement(TimeSelect, { key: `${scheduledClose.hour}${scheduledClose.minute}${scheduledClose.meridiem}`, enabled: enabled, initialTime: scheduledClose, onChange: onTimeSelectChange }))));
113
114
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduledClose.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/general/ScheduledClose.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { TimeSelect, TimeSelectTime } from \"../../../common/TimeSelect\";\nimport DefaultDropdownButton, {\n\tIFinsembleDefaultDropdownButtonOptionsProps,\n} from \"../../../shared/DefaultDropdownButton\";\nimport { ScheduledDayTimeObjectType } from \"../../UserPreferenceTypes\";\nimport { StandardCallback } from \"@finsemble/finsemble-api/types/types\";\nimport { FinsembleToggleButtonBar } from \"../../../common/FinsembleToggleButtonBar\";\n\nconst DEFAULT_TIME = {\n\thour: 4,\n\tminute: 0,\n\tmeridiem: \"AM\",\n};\n\nexport type ScheduledCloseProps = {\n\tgetPreferences: (cb: StandardCallback) => void;\n\tsetPreferences: (key: any, value: any) => void;\n\tconfigKey: string;\n\tlabel: string;\n};\n\nexport const ScheduledClose: React.FunctionComponent<ScheduledCloseProps> = (props) => {\n\tconst [initialized, setInitialized] = useState<boolean>(false);\n\tconst [enabled, setEnabled] = useState(false);\n\tconst [weekly, setWeekly] = useState<boolean>(false);\n\tconst [scheduledClose, setScheduledClose] = useState<TimeSelectTime>(DEFAULT_TIME);\n\tconst [day, setDay] = useState<false | number>(false);\n\n\tconst dayChanged = (dayValue: any) => {\n\t\tsetDay(Number.parseInt(dayValue, 10));\n\t};\n\n\tconst dayOptions: IFinsembleDefaultDropdownButtonOptionsProps[] = [];\n\tconst DAYS = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\tfor (let k in DAYS) {\n\t\tdayOptions.push({\n\t\t\toptionLabel: DAYS[k],\n\t\t\toptionValue: k,\n\t\t\tclickHandler: () => {\n\t\t\t\tdayChanged(k);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Toggle the enabled state of the select boxes.\n\t */\n\tconst toggleEnabled = () => {\n\t\tconst toggled = !enabled;\n\t\t// If the select boxes are no longer enabled, reset the scheduled restart time and call a method on the Actions object.\n\t\t// That function will set scheduledRestart to null via the preferences API. But we want our display to look nice, hence the bit where we reset it to the default value.\n\t\tsetEnabled(toggled);\n\t};\n\n\tconst onTimeSelectChange = (time: TimeSelectTime) => {\n\t\tsetScheduledClose(time);\n\t};\n\n\t/**\n\t * Add listener on the store. When the preferences field changes, we change our local state.\n\t * Also, get the initial state from the store.\n\t */\n\tuseEffect(() => {\n\t\tprops.getPreferences((err: any, data: any) => {\n\t\t\tif (data) {\n\t\t\t\tlet configValue = data[props.configKey];\n\t\t\t\tconst isEnabled = typeof configValue === \"object\";\n\t\t\t\tlet preferencesDay: number | false = false;\n\t\t\t\tif (isEnabled) {\n\t\t\t\t\tpreferencesDay = configValue.dayOfWeek ?? false;\n\t\t\t\t\tconfigValue.meridiem = configValue.hour > 11 ? \"PM\" : \"AM\";\n\t\t\t\t} else {\n\t\t\t\t\tconfigValue = DEFAULT_TIME;\n\t\t\t\t}\n\n\t\t\t\tsetDay(preferencesDay);\n\t\t\t\tsetWeekly(preferencesDay !== false);\n\t\t\t\tsetEnabled(isEnabled);\n\t\t\t\tsetScheduledClose(configValue);\n\t\t\t\tsetInitialized(true);\n\t\t\t}\n\t\t});\n\t}, []);\n\n\tconst getSchedule = (): ScheduledDayTimeObjectType | false => {\n\t\tlet returnValue: ScheduledDayTimeObjectType | false = false;\n\n\t\tif (enabled) {\n\t\t\treturnValue = { ...scheduledClose };\n\t\t\tif (weekly) {\n\t\t\t\treturnValue.dayOfWeek = day ? day : 0;\n\t\t\t} else {\n\t\t\t\tdelete returnValue.dayOfWeek;\n\t\t\t}\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tuseEffect(() => {\n\t\tif (initialized) {\n\t\t\tprops.setPreferences(props.configKey, getSchedule());\n\t\t}\n\t}, [scheduledClose, weekly, enabled, day]);\n\n\treturn (\n\t\t<div className=\"complex-menu-content-row\" style={{ overflow: \"visible\" }}>\n\t\t\t<div className=\"close-toggle-container\">\n\t\t\t\t<Checkbox onClick={toggleEnabled} checked={enabled} label={props.label} />\n\t\t\t\t<FinsembleToggleButtonBar\n\t\t\t\t\tselected={!weekly}\n\t\t\t\t\toptions={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"Daily\",\n\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"Weekly\",\n\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t\tonChange={(value) => {\n\t\t\t\t\t\t// Day representes the day of the week, and is false when irrelevant.\n\t\t\t\t\t\t// Here, we only ever set it to false. The day number comes from the dropdown below.\n\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\tsetDay(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetWeekly(!value);\n\t\t\t\t\t}}\n\t\t\t\t\tenabled={enabled}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{weekly && (\n\t\t\t\t<div className={`time-selectors daily-select ${enabled ? \"\" : \"disabled\"}`}>\n\t\t\t\t\t<div className=\"daily-select-label\">Day:</div>\n\t\t\t\t\t<div className=\"daily-select-dropdown\">\n\t\t\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\t\t\tkey={`${day}`}\n\t\t\t\t\t\t\tbuttonOptions={dayOptions}\n\t\t\t\t\t\t\tclassNames={\"push-right\"}\n\t\t\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\t\t\tcaretLocation={\"right\"}\n\t\t\t\t\t\t\tenabled={enabled}\n\t\t\t\t\t\t\tdefaultSelection={dayOptions[day ? day : 0]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"time-selectors\">\n\t\t\t\t<TimeSelect\n\t\t\t\t\tkey={`${scheduledClose.hour}${scheduledClose.minute}${scheduledClose.meridiem}`}\n\t\t\t\t\tenabled={enabled}\n\t\t\t\t\tinitialTime={scheduledClose}\n\t\t\t\t\tonChange={onTimeSelectChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ScheduledClose;\n"]}
1
+ {"version":3,"file":"ScheduledClose.js","sourceRoot":"","sources":["../../../../../src/components/userPreferences/components/general/ScheduledClose.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { Checkbox } from \"../../../common/Checkbox\";\nimport { TimeSelect, TimeSelectTime } from \"../../../common/TimeSelect\";\nimport DefaultDropdownButton, {\n\tIFinsembleDefaultDropdownButtonOptionsProps,\n} from \"../../../shared/DefaultDropdownButton\";\nimport { ScheduledDayTimeObjectType } from \"../../UserPreferenceTypes\";\nimport { StandardCallback } from \"@finsemble/finsemble-api/types/types\";\nimport { FinsembleToggleButtonBar } from \"../../../common/FinsembleToggleButtonBar\";\n\nconst DEFAULT_TIME = {\n\thour: 4,\n\tminute: 0,\n\tmeridiem: \"AM\",\n};\n\nexport type ScheduledCloseProps = {\n\tgetPreferences: (cb: StandardCallback) => void;\n\tsetPreferences: (key: any, value: any) => void;\n\tconfigKey: string;\n\tlabel: string;\n};\n\nexport const ScheduledClose: React.FunctionComponent<ScheduledCloseProps> = (props) => {\n\tconst [initialized, setInitialized] = useState<boolean>(false);\n\tconst [enabled, setEnabled] = useState(false);\n\tconst [weekly, setWeekly] = useState<boolean>(false);\n\tconst [scheduledClose, setScheduledClose] = useState<TimeSelectTime>(DEFAULT_TIME);\n\tconst [day, setDay] = useState<false | number>(false);\n\n\tconst dayChanged = (dayValue: any) => {\n\t\tsetDay(Number.parseInt(dayValue, 10));\n\t};\n\n\tconst dayOptions: IFinsembleDefaultDropdownButtonOptionsProps[] = [];\n\tconst DAYS = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\tfor (let k in DAYS) {\n\t\tdayOptions.push({\n\t\t\toptionLabel: DAYS[k],\n\t\t\toptionValue: k,\n\t\t\tclickHandler: () => {\n\t\t\t\tdayChanged(k);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Toggle the enabled state of the select boxes.\n\t */\n\tconst toggleEnabled = () => {\n\t\tconst toggled = !enabled;\n\t\t// If the select boxes are no longer enabled, reset the scheduled restart time and call a method on the Actions object.\n\t\t// That function will set scheduledRestart to null via the preferences API. But we want our display to look nice, hence the bit where we reset it to the default value.\n\t\tsetEnabled(toggled);\n\t};\n\n\tconst onTimeSelectChange = (time: TimeSelectTime) => {\n\t\tsetScheduledClose(time);\n\t};\n\n\t/**\n\t * Add listener on the store. When the preferences field changes, we change our local state.\n\t * Also, get the initial state from the store.\n\t */\n\tuseEffect(() => {\n\t\tprops.getPreferences((err: any, data: any) => {\n\t\t\tif (data) {\n\t\t\t\tlet configValue = data[props.configKey];\n\t\t\t\tconst isEnabled = typeof configValue === \"object\";\n\t\t\t\tlet preferencesDay: number | false = false;\n\t\t\t\tif (isEnabled) {\n\t\t\t\t\tpreferencesDay = configValue.dayOfWeek ?? false;\n\t\t\t\t\tconfigValue.meridiem = configValue.hour > 11 ? \"PM\" : \"AM\";\n\t\t\t\t} else {\n\t\t\t\t\tconfigValue = DEFAULT_TIME;\n\t\t\t\t}\n\n\t\t\t\tsetDay(preferencesDay);\n\t\t\t\tsetWeekly(preferencesDay !== false);\n\t\t\t\tsetEnabled(isEnabled);\n\t\t\t\tsetScheduledClose(configValue);\n\t\t\t\tsetInitialized(true);\n\t\t\t}\n\t\t});\n\t}, []);\n\n\tconst getSchedule = (): ScheduledDayTimeObjectType | false => {\n\t\tlet returnValue: ScheduledDayTimeObjectType | false = false;\n\n\t\tif (enabled) {\n\t\t\treturnValue = { ...scheduledClose };\n\t\t\tif (weekly) {\n\t\t\t\treturnValue.dayOfWeek = day ? day : 0;\n\t\t\t} else {\n\t\t\t\tdelete returnValue.dayOfWeek;\n\t\t\t}\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tuseEffect(() => {\n\t\tif (initialized) {\n\t\t\tprops.setPreferences(props.configKey, getSchedule());\n\t\t}\n\t}, [scheduledClose, weekly, enabled, day]);\n\n\treturn (\n\t\t<div className=\"complex-menu-content-row\" style={{ overflow: \"visible\" }}>\n\t\t\t<div className=\"close-toggle-container\">\n\t\t\t\t<Checkbox onClick={toggleEnabled} checked={enabled} label={props.label} />\n\t\t\t\t<FinsembleToggleButtonBar\n\t\t\t\t\tselected={!weekly}\n\t\t\t\t\toptions={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"Daily\",\n\t\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: \"Weekly\",\n\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t]}\n\t\t\t\t\tonChange={(value) => {\n\t\t\t\t\t\t// Day representes the day of the week, and is false when irrelevant.\n\t\t\t\t\t\t// Here, we only ever set it to false. The day number comes from the dropdown below.\n\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\tsetDay(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetWeekly(!value);\n\t\t\t\t\t}}\n\t\t\t\t\tenabled={enabled}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{weekly && (\n\t\t\t\t<div className={`time-selectors daily-select ${enabled ? \"\" : \"disabled\"}`}>\n\t\t\t\t\t<div className=\"daily-select-label\" aria-label=\"Day\">\n\t\t\t\t\t\tDay:\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"daily-select-dropdown\">\n\t\t\t\t\t\t<DefaultDropdownButton\n\t\t\t\t\t\t\tkey={`${day}`}\n\t\t\t\t\t\t\tbuttonOptions={dayOptions}\n\t\t\t\t\t\t\tclassNames={\"push-right\"}\n\t\t\t\t\t\t\tallowEmpty={false}\n\t\t\t\t\t\t\tcaretLocation={\"right\"}\n\t\t\t\t\t\t\tenabled={enabled}\n\t\t\t\t\t\t\tbuttonLabel={`${dayOptions[day ? day : 0]?.optionLabel}`}\n\t\t\t\t\t\t\tdefaultSelection={dayOptions[day ? day : 0]}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className=\"time-selectors\">\n\t\t\t\t<TimeSelect\n\t\t\t\t\tkey={`${scheduledClose.hour}${scheduledClose.minute}${scheduledClose.meridiem}`}\n\t\t\t\t\tenabled={enabled}\n\t\t\t\t\tinitialTime={scheduledClose}\n\t\t\t\t\tonChange={onTimeSelectChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default ScheduledClose;\n"]}
@@ -8,6 +8,8 @@ import { storeManager, Actions, getStore } from "./stores/windowTitleBarStore";
8
8
  import "../../assets/css/windowTitleBar.css";
9
9
  import { clone } from "../sdd/Appearance.helpers";
10
10
  import { Logger } from "@finsemble/finsemble-api";
11
+ // Values for possible zero
12
+ const possibleZeros = ["0", "0px", 0];
11
13
  export class WindowTitleBarShell extends React.Component {
12
14
  constructor(props) {
13
15
  super(props);
@@ -91,7 +93,7 @@ export class WindowTitleBarShell extends React.Component {
91
93
  { field: "hackScrollbar", listener: this.onShowTabsChanged },
92
94
  { field: "Main.useDOMBasedMovement", listener: this.setDOMBasedMovement },
93
95
  ], () => { });
94
- // Add listeners for tiling/tabing
96
+ // Add listeners for tiling/tabbing
95
97
  FSBL.Clients.RouterClient.addListener("DockingService.startTilingOrTabbing", this.onTilingStart);
96
98
  FSBL.Clients.RouterClient.addListener("DockingService.stopTilingOrTabbing", this.onTilingStop);
97
99
  FSBL.Clients.RouterClient.addListener("DockingService.cancelTilingOrTabbing", this.onTilingStop);
@@ -183,6 +185,7 @@ export class WindowTitleBarShell extends React.Component {
183
185
  { field: "tabs", listener: this.onTabsChanged },
184
186
  { field: "showTabs", listener: this.onShowTabsChanged },
185
187
  ], () => { }, () => { });
188
+ // Cleanup all listeners
186
189
  FSBL.Clients.RouterClient.removeListener("DockingService.startTilingOrTabbing", this.disallowDragOnCenterRegion);
187
190
  FSBL.Clients.RouterClient.removeListener("DockingService.stopTilingOrTabbing", this.allowDragOnCenterRegion);
188
191
  FSBL.Clients.RouterClient.removeListener("DockingService.cancelTilingOrTabbing", this.allowDragOnCenterRegion);
@@ -219,19 +222,15 @@ export class WindowTitleBarShell extends React.Component {
219
222
  * When tiling start, we want to find the dragHandler and hide it
220
223
  */
221
224
  onTilingStart() {
222
- let dragHandle = document.querySelector(`.${this.state.dragHandleName}`);
223
- if (dragHandle) {
224
- dragHandle.classList.add("hidden");
225
- }
225
+ var _a;
226
+ (_a = document.querySelector(`.${this.state.dragHandleName}`)) === null || _a === void 0 ? void 0 : _a.classList.add("hidden");
226
227
  }
227
228
  /**
228
229
  * When tiling stops, we want to find the dragHandler and re-show it
229
230
  */
230
231
  onTilingStop() {
231
- let dragHandle = document.querySelector(`.${this.state.dragHandleName}.hidden`);
232
- if (dragHandle) {
233
- dragHandle.classList.remove("hidden");
234
- }
232
+ var _a;
233
+ (_a = document.querySelector(`.${this.state.dragHandleName}.hidden`)) === null || _a === void 0 ? void 0 : _a.classList.remove("hidden");
235
234
  }
236
235
  /**
237
236
  * Called whenever a tab is dropped on a non tab area.
@@ -252,8 +251,10 @@ export class WindowTitleBarShell extends React.Component {
252
251
  // if do double click it will invoke MouseDown and MouseUp events which could break the window bounds. So wait a 100ms for moving or resizing the window.
253
252
  const handleMouseDown = (event) => {
254
253
  // prevent a second call if the button hasn't been unpressed
255
- if (this.isMousePressed)
254
+ if (this.isMousePressed) {
256
255
  return;
256
+ }
257
+ // Indicate that the mouse has been pressed
257
258
  this.isMousePressed = true;
258
259
  setTimeout(() => {
259
260
  if (this.isMousePressed) {
@@ -263,8 +264,9 @@ export class WindowTitleBarShell extends React.Component {
263
264
  };
264
265
  const handleMouseUp = () => {
265
266
  // prevent a call if the button hasn't been pressed
266
- if (!this.isMousePressed)
267
+ if (!this.isMousePressed) {
267
268
  return;
269
+ }
268
270
  this.isMousePressed = false;
269
271
  FSBL.Clients.WindowClient.stopMovingWindow();
270
272
  };
@@ -522,7 +524,6 @@ export class WindowTitleBarShell extends React.Component {
522
524
  * changes to the DOM tree using the observe method
523
525
  */
524
526
  const mutationObserver = new MutationObserver((mutations) => {
525
- const possibleZeros = ["0", "0px", 0];
526
527
  mutations.forEach((mutation) => {
527
528
  mutation.addedNodes.forEach((node) => {
528
529
  var _a;
@@ -625,7 +626,6 @@ export class WindowTitleBarShell extends React.Component {
625
626
  */
626
627
  calculateBumpValue(type, topStyle, bumpBy) {
627
628
  let topVal = topStyle;
628
- const possibleZeros = ["0", "0px", 0];
629
629
  if (type == "all") {
630
630
  topVal = `calc(${topStyle} + ${bumpBy})`;
631
631
  }