@deephaven/dashboard-core-plugins 0.49.2-theme-plugins.45 → 0.50.1-beta.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.
@@ -1 +1 @@
1
- {"version":3,"file":"FileExplorerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FileExplorerPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAqB,EAEnB,WAAW,EACX,eAAe,EAIhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAW,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,KAAK,QAAQ,GAAG,mBAAmB,CAAC;AAkBpC,QAAA,MAAM,SAAS,4JAA6D,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAC3C,UAAU,GACV,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAOF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CACpD,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,SAAS,SAAuB;IAEvC,MAAM,CAAC,KAAK,SAAmB;IAE/B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAItC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO;gBAU7C,KAAK,EAAE,sBAAsB;IA4BzC,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB,IAAI,IAAI;IAgBxB,qBAAqB,IAAI,IAAI;IAI7B,2BAA2B,IAAI,IAAI;IAOnC,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzC,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1D,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI;IAU5C,qBAAqB,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI;IAY7D,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI;IAwB1E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMpD,mBAAmB,CACjB,OAAO,EAAE,UAAU,EACnB,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI;IAOP,mBAAmB,IAAI,IAAI;IAO3B,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,OAAO;IAMnB,MAAM,IAAI,SAAS;CA0CpB;AAED,QAAA,MAAM,0BAA0B;;;;;;;;EAA+B,CAAC;AAEhE,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"FileExplorerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FileExplorerPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAqB,EAEnB,WAAW,EACX,eAAe,EAIhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAW,cAAc,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,0BAA0B,CAAC;AAKlC,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,KAAK,QAAQ,GAAG,mBAAmB,CAAC;AAkBpC,QAAA,MAAM,SAAS,4JAA6D,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAC3C,UAAU,GACV,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAOF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CACpD,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,SAAS,SAAuB;IAEvC,MAAM,CAAC,KAAK,SAAmB;IAE/B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAItC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO;gBAU7C,KAAK,EAAE,sBAAsB;IA4BzC,iBAAiB,IAAI,IAAI;IAMzB,gBAAgB,IAAI,IAAI;IAgBxB,qBAAqB,IAAI,IAAI;IAI7B,2BAA2B,IAAI,IAAI;IAOnC,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzC,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI;IAU5C,qBAAqB,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI;IAY7D,gBAAgB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI;IAwB1E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAMpD,mBAAmB,CACjB,OAAO,EAAE,UAAU,EACnB,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GACjC,IAAI;IAOP,mBAAmB,IAAI,IAAI;IAO3B,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI,OAAO;IAMnB,MAAM,IAAI,SAAS;CA0CpB;AAED,QAAA,MAAM,0BAA0B;;;;;;;;EAA+B,CAAC;AAEhE,eAAe,0BAA0B,CAAC"}
@@ -137,25 +137,7 @@ export class FileExplorerPanel extends React.Component {
137
137
  log.error('Invalid item in handleCopyItem', file);
138
138
  return;
139
139
  }
140
- var newName = FileUtils.getCopyFileName(file.filename);
141
- var checkNewName = /*#__PURE__*/function () {
142
- var _ref = _asyncToGenerator(function* () {
143
- try {
144
- yield fileStorage.info(newName);
145
- return true;
146
- } catch (error) {
147
- return false;
148
- }
149
- });
150
- return function checkNewName() {
151
- return _ref.apply(this, arguments);
152
- };
153
- }();
154
- // await in loop is fine here, this isn't a parallel task
155
- // eslint-disable-next-line no-await-in-loop
156
- while (yield checkNewName()) {
157
- newName = FileUtils.getCopyFileName(newName);
158
- }
140
+ var newName = yield FileUtils.getUniqueCopyFileName(fileStorage, file.filename);
159
141
  yield fileStorage.copyFile(file.filename, newName);
160
142
  })();
161
143
  }
@@ -213,10 +195,10 @@ export class FileExplorerPanel extends React.Component {
213
195
  log.debug('handleRename', oldName, newName);
214
196
  glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);
215
197
  }
216
- handleSessionOpened(session, _ref2) {
198
+ handleSessionOpened(session, _ref) {
217
199
  var {
218
200
  language
219
- } = _ref2;
201
+ } = _ref;
220
202
  this.setState({
221
203
  session,
222
204
  language
@@ -1 +1 @@
1
- {"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","isDirectory","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCopyFile","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","file","newName","getCopyFileName","filename","checkNewName","info","copyFile","files","forEach","CLOSE_FILE","id","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","RENAME_FILE","undefined","glContainer","render","ConnectedFileExplorerPanel"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n FileStorage,\n FileStorageItem,\n FileUtils,\n NewItemModal,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport React, { ReactNode } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language: string;\n session?: IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCopyFile = this.handleCopyFile.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel =\n this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit =\n this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n async handleCopyFile(file: FileStorageItem): Promise<void> {\n const { fileStorage } = this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n let newName = FileUtils.getCopyFileName(file.filename);\n const checkNewName = async (): Promise<boolean> => {\n try {\n await fileStorage.info(newName);\n return true;\n } catch (error) {\n return false;\n }\n };\n // await in loop is fine here, this isn't a parallel task\n // eslint-disable-next-line no-await-in-loop\n while (await checkNewName()) {\n newName = FileUtils.getCopyFileName(newName);\n }\n await fileStorage.copyFile(file.filename, newName);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onCopy={this.handleCopyFile}\n onCreateFile={this.handleCreateFile}\n onCreateFolder={this.handleCreateDirectory}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nconst ConnectedFileExplorerPanel = connector(FileExplorerPanel);\n\nexport default ConnectedFileExplorerPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","isDirectory","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCopyFile","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","file","newName","getUniqueCopyFileName","filename","copyFile","files","forEach","CLOSE_FILE","id","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","RENAME_FILE","undefined","glContainer","render","ConnectedFileExplorerPanel"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n FileStorage,\n FileStorageItem,\n FileUtils,\n NewItemModal,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport React, { ReactNode } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language: string;\n session?: IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCopyFile = this.handleCopyFile.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel =\n this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit =\n this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n async handleCopyFile(file: FileStorageItem): Promise<void> {\n const { fileStorage } = this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n const newName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n file.filename\n );\n await fileStorage.copyFile(file.filename, newName);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onCopy={this.handleCopyFile}\n onCreateFile={this.handleCreateFile}\n onCreateFolder={this.handleCreateDirectory}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nconst ConnectedFileExplorerPanel = connector(FileExplorerPanel);\n\nexport default ConnectedFileExplorerPanel;\n"],"mappings":"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"}
@@ -147,9 +147,9 @@ declare class NotebookPanel extends Component<NotebookPanelProps, NotebookPanelS
147
147
  * @param fileName The name of the file to be overwritten
148
148
  */
149
149
  handleOverwrite(fileName: string): void;
150
- handleCopy(): void;
150
+ handleCopy(): Promise<void>;
151
151
  handleDelete(): void;
152
- handleDeleteConfirm(): void;
152
+ handleDeleteConfirm(): Promise<void>;
153
153
  handleDeleteCancel(): void;
154
154
  handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void;
155
155
  handleEditorWillDestroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/NotebookPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -571,21 +573,37 @@ class NotebookPanel extends Component {
571
573
  this.focus();
572
574
  }
573
575
  handleCopy() {
574
- var {
575
- fileMetadata,
576
- settings
577
- } = this.state;
578
- assertNotNull(fileMetadata);
579
- var content = this.getNotebookValue();
580
- var {
581
- language
582
- } = settings;
583
- var {
584
- itemName
585
- } = fileMetadata;
586
- var copyName = FileUtils.getCopyFileName(itemName);
587
- log.debug('handleCopy', fileMetadata, itemName, copyName);
588
- this.createNotebook(copyName, language, content);
576
+ var _this = this;
577
+ return _asyncToGenerator(function* () {
578
+ var {
579
+ fileStorage,
580
+ glEventHub,
581
+ session
582
+ } = _this.props;
583
+ var {
584
+ fileMetadata,
585
+ settings
586
+ } = _this.state;
587
+ assertNotNull(fileMetadata);
588
+ var {
589
+ language
590
+ } = settings;
591
+ var {
592
+ itemName
593
+ } = fileMetadata;
594
+ var copyName = yield FileUtils.getUniqueCopyFileName(fileStorage, itemName);
595
+ log.debug('handleCopy', fileMetadata, itemName, copyName);
596
+ yield fileStorage.copyFile(itemName, copyName);
597
+ var newFileMetadata = {
598
+ id: copyName,
599
+ itemName: copyName
600
+ };
601
+ var notebookSettings = {
602
+ value: null,
603
+ language
604
+ };
605
+ glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, language, notebookSettings, newFileMetadata, true);
606
+ })();
589
607
  }
590
608
  handleDelete() {
591
609
  log.debug('handleDelete, pending confirmation');
@@ -594,31 +612,35 @@ class NotebookPanel extends Component {
594
612
  });
595
613
  }
596
614
  handleDeleteConfirm() {
597
- var {
598
- fileStorage,
599
- glContainer,
600
- glEventHub
601
- } = this.props;
602
- var {
603
- fileMetadata
604
- } = this.state;
605
- log.debug('handleDeleteConfirm', fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName);
606
- this.setState({
607
- showDeleteModal: false
608
- });
609
- if (!fileMetadata) {
610
- return;
611
- }
612
- if (FileUtils.hasPath(fileMetadata.itemName)) {
613
- glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, {
614
- force: true
615
- });
616
- fileStorage.deleteFile(fileMetadata.itemName);
617
- } else {
618
- glContainer.close({
619
- force: true
615
+ var _this2 = this;
616
+ return _asyncToGenerator(function* () {
617
+ var {
618
+ fileStorage,
619
+ glContainer,
620
+ glEventHub
621
+ } = _this2.props;
622
+ var {
623
+ fileMetadata
624
+ } = _this2.state;
625
+ log.debug('handleDeleteConfirm', fileMetadata === null || fileMetadata === void 0 ? void 0 : fileMetadata.itemName);
626
+ _this2.setState({
627
+ showDeleteModal: false
620
628
  });
621
- }
629
+ if (!fileMetadata) {
630
+ return;
631
+ }
632
+ if (FileUtils.hasPath(fileMetadata.itemName) && ( // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
633
+ yield FileUtils.fileExists(fileStorage, fileMetadata.itemName))) {
634
+ glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, {
635
+ force: true
636
+ });
637
+ fileStorage.deleteFile(fileMetadata.itemName);
638
+ } else {
639
+ glContainer.close({
640
+ force: true
641
+ });
642
+ }
643
+ })();
622
644
  }
623
645
  handleDeleteCancel() {
624
646
  this.setState({
@@ -1 +1 @@
1
- {"version":3,"file":"NotebookPanel.js","names":["React","Component","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","saveSettings","saveSettingsAction","getSettings","getDefaultNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","initialSettings","isMinimapEnabled","minimap","enabled","isWordWrapEnabled","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","defaultNotebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","copyName","getCopyFileName","createNotebook","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","newSettings","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","notebookSettings","SELECT_NOTEBOOK","errorParam","isTimedOut","file","oldMetadata","name","isOverwrite","oldName","newName","curPanelState","JSON","stringify","updateDimensions","command","runCommand","getSelectedCommand","droppedId","forceUpdate","args","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","CREATE_NOTEBOOK","SEND_COMMAND","getOverflowActions","render","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","createPortal","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, ReactElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n Button,\n DropdownAction,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport {\n FileStorage,\n FileUtils,\n NewItemModal,\n File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n saveSettings as saveSettingsAction,\n RootState,\n getSettings,\n WorkspaceSettings,\n getDefaultNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n PanelEvent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport MarkdownNotebook from './MarkdownNotebook';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\ninterface Metadata extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelProps extends DashboardPanelProps {\n fileStorage: FileStorage;\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n session: IdeSession;\n sessionLanguage: string;\n panelState: PanelState;\n notebooksUrl: string;\n defaultNotebookSettings: NotebookSetting;\n settings: WorkspaceSettings;\n saveSettings: (settings: WorkspaceSettings) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isFocused: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: editor.IStandaloneEditorConstructionOptions;\n\n session?: IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showDeleteModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: null,\n };\n\n static languageFromFileName(fileName: string): string | null {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props: NotebookPanelProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n\n this.tabInitOnce = false;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { defaultNotebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n defaultNotebookSettings.isMinimapEnabled !==\n prevProps.defaultNotebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n editor?: editor.IStandaloneCodeEditor;\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab: Tab): void {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | undefined {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent(): void {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata: FileMetadata, isPreview: boolean): void {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName) ?? '',\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (isMinimapEnabled: boolean, isWordWrapEnabled: boolean) => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ]\n );\n\n savePanelState(): void {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue =\n changeCount !== savedChangeCount ? value : undefined;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard(): void {\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n handleCopy(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const content = this.getNotebookValue();\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = FileUtils.getCopyFileName(itemName);\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n this.createNotebook(copyName, language, content);\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n handleDeleteConfirm(): void {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (FileUtils.hasPath(fileMetadata.itemName)) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1, savedChangeCount };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { defaultNotebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: defaultNotebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { settings, defaultNotebookSettings, saveSettings } = this.props;\n const newSettings: WorkspaceSettings = {\n ...settings,\n defaultNotebookSettings: {\n isMinimapEnabled: !defaultNotebookSettings.isMinimapEnabled,\n },\n };\n saveSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\n }\n }\n\n handleBlur(): void {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus(): void {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: React.MouseEvent<HTMLAnchorElement>): void {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave(): void {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename) ?? '';\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n oldMetadata &&\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue() ?? '';\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command?: string): void {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n getDropdownOverflowActions(): DropdownAction[] {\n const { defaultNotebookSettings } = this.props;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n defaultNotebookSettings.isMinimapEnabled,\n this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\n ).wordWrap === 'on'\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n defaultNotebookSettings,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const settings = this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\n )}\n />,\n portal // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabClicked={this.handleTabClick}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </Button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n NotebookPanelProps,\n | 'defaultNotebookSettings'\n | 'fileStorage'\n | 'session'\n | 'sessionLanguage'\n | 'settings'\n> => {\n const fileStorage = getFileStorage(state);\n const settings = getSettings(state);\n const defaultNotebookSettings = getDefaultNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n settings,\n defaultNotebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n { saveSettings: saveSettingsAction },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NotebookPanel.js","names":["React","Component","ReactDOM","memoize","connect","FontAwesomeIcon","BasicModal","ContextActions","DropdownMenu","Tooltip","GLOBAL_SHORTCUTS","Button","ScriptEditor","ScriptEditorUtils","SHORTCUTS","FileUtils","NewItemModal","vsSave","vsKebabVertical","dhFileSearch","vsPlay","dhRunSelection","vsCheck","vsCopy","dhICursor","vsTrash","getFileStorage","saveSettings","saveSettingsAction","getSettings","getDefaultNotebookSettings","classNames","debounce","PanelEvent","Log","assertNotNull","Pending","PromiseUtils","ConsoleEvent","NotebookEvent","getDashboardSessionWrapper","Panel","MarkdownNotebook","log","module","DEBOUNCE_PANEL_STATE_UPDATE","NotebookPanel","handleError","error","isCanceled","unsavedNotebookCount","document","querySelectorAll","UNSAVED_INDICATOR_CLASS_NAME","UNSAVED_STATUS_CLASS_NAME","length","languageFromFileName","fileName","extension","getExtension","toLowerCase","constructor","props","initialSettings","isMinimapEnabled","minimap","enabled","isWordWrapEnabled","title","icon","action","handleFind","group","groups","high","shortcut","NOTEBOOK","FIND","order","handleCopy","medium","handleShowRename","handleDelete","undefined","handleMinimapChange","low","MINIMAP","handleWordWrapChange","WORDWRAP","handleBlur","bind","handleCloseCancel","handleCloseDiscard","handleCloseSave","handleDeleteConfirm","handleDeleteCancel","handleEditorInitialized","handleEditorWillDestroy","handleEditorChange","handleFocus","handleLinkClick","handleLoadSuccess","handleLoadError","handlePanelDropped","handleRenameFile","handleResize","handleRunCommand","handleRunAll","handleRunSelected","handleSave","handleSaveAsCancel","handleSaveAsSubmit","handleSaveError","handleSaveSuccess","handleSessionOpened","handleSessionClosed","handleShow","handleTab","handleTabBlur","handleTabClick","handleTabFocus","handleTransformLinkUri","handleOverwrite","handlePreviewPromotion","getDropdownOverflowActions","pending","debouncedSavePanelState","savePanelState","debouncedLoad","load","notebook","tabTitleElement","tabInitOnce","isDashboardActive","session","sessionLanguage","panelState","settings","value","language","wordWrap","fileMetadata","isPreview","hasFileId","hasPath","itemName","isUnsaved","changeCount","state","isFocused","isLoading","isLoaded","savedChangeCount","showCloseModal","showDeleteModal","showSaveAsModal","scriptCode","debug","componentDidMount","glContainer","glEventHub","tab","initTab","initNotebookContent","on","RENAME_FILE","DROPPED","PROMOTE_FROM_PREVIEW","componentDidUpdate","prevProps","prevState","defaultNotebookSettings","setPreviewStatus","updateEditorWordWrap","updateEditorMinimap","componentWillUnmount","flush","cancel","off","emit","UNREGISTER_FILE","initTabCloseOverride","initTabClasses","beforeClose","options","force","setState","tabElement","element","get","titleElement","querySelector","classList","add","getNotebookValue","notebookValue","getValue","id","registerFileMetadata","Error","closeFileTabById","CLOSE_FILE","metadata","tabId","REGISTER_FILE","renameTab","RENAME","fileStorage","loadFile","then","loadedFile","filename","prevItemName","getBaseName","updatedSettings","content","catch","save","saveContent","updateSavedChangeCount","saveFile","basename","remove","removePreviewStatus","dehydratedValue","dehydratedSettings","close","focus","copyName","getUniqueCopyFileName","copyFile","newFileMetadata","notebookSettings","SELECT_NOTEBOOK","fileExists","deleteFile","innerEditor","editor","e","debug2","isUndoing","isRedoing","toggleFind","updateOptions","newSettings","event","notebooksUrl","href","currentTarget","startsWith","stopPropagation","preventDefault","notebookPath","substring","replace","errorParam","isTimedOut","file","oldMetadata","name","isOverwrite","oldName","newName","curPanelState","JSON","stringify","updateDimensions","command","runCommand","getSelectedCommand","droppedId","forceUpdate","args","isHidden","detail","src","endsWith","charAt","itemUri","URL","requestAnimationFrame","createNotebook","CREATE_NOTEBOOK","SEND_COMMAND","getOverflowActions","render","focusOnMount","DEFAULT_NAME","isMarkdown","isExistingItem","isSessionConnected","isLanguageMatching","runButtonsDisabled","toolbarDisabled","contextActions","SAVE","disabledRunButtonTooltip","getDisabledRunTooltip","disabledRunSelectedButtonTooltip","additionalActions","portal","find","createPortal","RUN","getDisplayText","RUN_SELECTED","POPPER_OPTIONS","placement","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","ConnectedNotebookPanel","forwardRef"],"sources":["../../src/panels/NotebookPanel.tsx"],"sourcesContent":["// Wrapper for the Notebook for use in a golden layout container\nimport React, { Component, ReactElement } from 'react';\nimport ReactDOM from 'react-dom';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport type { editor } from 'monaco-editor';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n BasicModal,\n ContextActions,\n DropdownMenu,\n Tooltip,\n GLOBAL_SHORTCUTS,\n Button,\n DropdownAction,\n} from '@deephaven/components';\nimport { ScriptEditor, ScriptEditorUtils, SHORTCUTS } from '@deephaven/console';\nimport {\n FileStorage,\n FileUtils,\n NewItemModal,\n File,\n} from '@deephaven/file-explorer';\nimport {\n vsSave,\n vsKebabVertical,\n dhFileSearch,\n vsPlay,\n dhRunSelection,\n vsCheck,\n vsCopy,\n dhICursor,\n vsTrash,\n} from '@deephaven/icons';\nimport {\n getFileStorage,\n saveSettings as saveSettingsAction,\n RootState,\n getSettings,\n WorkspaceSettings,\n getDefaultNotebookSettings,\n} from '@deephaven/redux';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport {\n DashboardPanelProps,\n PanelEvent,\n PanelMetadata,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Tab, CloseOptions } from '@deephaven/golden-layout';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport { getDashboardSessionWrapper } from '../redux';\nimport Panel from './Panel';\nimport MarkdownNotebook from './MarkdownNotebook';\nimport './NotebookPanel.scss';\n\nconst log = Log.module('NotebookPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 400;\n\ninterface Metadata extends PanelMetadata {\n id: string;\n}\ninterface NotebookSetting {\n isMinimapEnabled: boolean;\n}\n\ninterface FileMetadata {\n itemName: string;\n id: string;\n}\n\ninterface PanelState {\n isPreview?: boolean;\n settings: editor.IStandaloneEditorConstructionOptions;\n fileMetadata: FileMetadata | null;\n}\n\ninterface NotebookPanelProps extends DashboardPanelProps {\n fileStorage: FileStorage;\n isDashboardActive: boolean;\n isPreview: boolean;\n metadata: Metadata;\n session: IdeSession;\n sessionLanguage: string;\n panelState: PanelState;\n notebooksUrl: string;\n defaultNotebookSettings: NotebookSetting;\n settings: WorkspaceSettings;\n saveSettings: (settings: WorkspaceSettings) => void;\n}\n\ninterface NotebookPanelState {\n error?: {\n message?: string | undefined;\n };\n isDashboardActive: boolean;\n isFocused: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isPreview: boolean;\n\n savedChangeCount: number;\n changeCount: number;\n fileMetadata: FileMetadata | null;\n settings: editor.IStandaloneEditorConstructionOptions;\n\n session?: IdeSession;\n sessionLanguage?: string;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n\n showCloseModal: boolean;\n showDeleteModal: boolean;\n showSaveAsModal: boolean;\n\n scriptCode: string;\n\n itemName?: string;\n}\n\nclass NotebookPanel extends Component<NotebookPanelProps, NotebookPanelState> {\n static COMPONENT = 'NotebookPanel';\n\n static POPPER_OPTIONS = { placement: 'bottom-end' } as const;\n\n static DEFAULT_NAME = 'Untitled';\n\n static UNSAVED_INDICATOR_CLASS_NAME = 'editor-unsaved-indicator';\n\n static UNSAVED_STATUS_CLASS_NAME = 'is-unsaved';\n\n static handleError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n }\n\n /**\n * Returns number of unsaved notebooks.\n */\n static unsavedNotebookCount(): number {\n return document.querySelectorAll(\n `.${NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME}.${NotebookPanel.UNSAVED_STATUS_CLASS_NAME}`\n ).length;\n }\n\n static defaultProps = {\n isDashboardActive: true,\n isPreview: false,\n session: null,\n sessionLanguage: null,\n defaultNotebookSettings: null,\n };\n\n static languageFromFileName(fileName: string): string | null {\n const extension = FileUtils.getExtension(fileName).toLowerCase();\n switch (extension) {\n case 'py':\n case 'python':\n return 'python';\n case 'groovy':\n return 'groovy';\n case 'scala':\n return 'scala';\n default:\n return null;\n }\n }\n\n constructor(props: NotebookPanelProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleCloseCancel = this.handleCloseCancel.bind(this);\n this.handleCloseDiscard = this.handleCloseDiscard.bind(this);\n this.handleCloseSave = this.handleCloseSave.bind(this);\n this.handleCopy = this.handleCopy.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleDeleteConfirm = this.handleDeleteConfirm.bind(this);\n this.handleDeleteCancel = this.handleDeleteCancel.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorWillDestroy = this.handleEditorWillDestroy.bind(this);\n this.handleEditorChange = this.handleEditorChange.bind(this);\n this.handleFind = this.handleFind.bind(this);\n this.handleMinimapChange = this.handleMinimapChange.bind(this);\n this.handleWordWrapChange = this.handleWordWrapChange.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleLinkClick = this.handleLinkClick.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.handleRenameFile = this.handleRenameFile.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleRunCommand = this.handleRunCommand.bind(this);\n this.handleRunAll = this.handleRunAll.bind(this);\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.handleSave = this.handleSave.bind(this);\n this.handleSaveAsCancel = this.handleSaveAsCancel.bind(this);\n this.handleSaveAsSubmit = this.handleSaveAsSubmit.bind(this);\n this.handleSaveError = this.handleSaveError.bind(this);\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleShowRename = this.handleShowRename.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleTransformLinkUri = this.handleTransformLinkUri.bind(this);\n this.handleOverwrite = this.handleOverwrite.bind(this);\n this.handlePreviewPromotion = this.handlePreviewPromotion.bind(this);\n this.getDropdownOverflowActions =\n this.getDropdownOverflowActions.bind(this);\n this.pending = new Pending();\n\n this.debouncedSavePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.debouncedLoad = debounce(\n this.load.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.notebook = null;\n\n this.tabTitleElement = null;\n\n this.tabInitOnce = false;\n\n const { isDashboardActive, session, sessionLanguage, panelState } = props;\n\n let settings: editor.IStandaloneEditorConstructionOptions = {\n value: '',\n language: '',\n wordWrap: 'off',\n };\n let fileMetadata = null;\n let { isPreview } = props;\n if (panelState != null) {\n ({\n fileMetadata = fileMetadata,\n isPreview = isPreview,\n settings = settings,\n } = panelState);\n }\n\n // Not showing the unsaved indicator for null file id and editor content === '',\n // may need to implement some other indication that this notebook has never been saved\n const hasFileId =\n fileMetadata != null && FileUtils.hasPath(fileMetadata.itemName);\n\n // Unsaved if file id != null and content != null\n // OR file id is null AND content is not null or ''\n const isUnsaved =\n (hasFileId === true && settings.value != null) ||\n (!hasFileId && settings.value != null && settings.value.length > 0);\n const changeCount = isUnsaved ? 1 : 0;\n\n this.state = {\n error: undefined,\n isDashboardActive,\n isFocused: false,\n isLoading: true,\n isLoaded: false,\n isPreview,\n\n savedChangeCount: 0,\n changeCount,\n fileMetadata,\n settings,\n\n session,\n sessionLanguage,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n fileMetadata,\n settings,\n },\n\n showCloseModal: false,\n showDeleteModal: false,\n showSaveAsModal: false,\n\n scriptCode: '',\n };\n\n log.debug('constructor', props, this.state);\n }\n\n componentDidMount(): void {\n const { glContainer, glEventHub } = this.props;\n const { tab } = glContainer;\n if (tab != null) this.initTab(tab);\n this.initNotebookContent();\n glEventHub.on(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.on(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n }\n\n componentDidUpdate(\n prevProps: NotebookPanelProps,\n prevState: NotebookPanelState\n ): void {\n const { isPreview, settings } = this.state;\n const { wordWrap } = settings;\n const { defaultNotebookSettings } = this.props;\n if (isPreview !== prevState.isPreview) {\n this.setPreviewStatus();\n }\n if (wordWrap !== prevState.settings.wordWrap) {\n this.updateEditorWordWrap();\n this.debouncedSavePanelState();\n }\n if (\n defaultNotebookSettings.isMinimapEnabled !==\n prevProps.defaultNotebookSettings.isMinimapEnabled\n ) {\n this.updateEditorMinimap();\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSavePanelState.flush();\n this.pending.cancel();\n\n const { glEventHub, glContainer } = this.props;\n\n const { fileMetadata, isPreview } = this.state;\n glEventHub.off(NotebookEvent.RENAME_FILE, this.handleRenameFile);\n glEventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n glContainer.off(\n NotebookEvent.PROMOTE_FROM_PREVIEW,\n this.handlePreviewPromotion\n );\n glEventHub.emit(NotebookEvent.UNREGISTER_FILE, fileMetadata, isPreview);\n }\n\n pending: Pending;\n\n debouncedSavePanelState;\n\n debouncedLoad;\n\n notebook: ScriptEditor | null;\n\n tabTitleElement: Element | null;\n\n tabInitOnce: boolean;\n\n editor?: editor.IStandaloneCodeEditor;\n\n // Called by TabEvent. Happens once when created, but also each time its moved.\n // when moved, need to re-init the unsaved indicators on title elements\n initTab(tab: Tab): void {\n if (!this.tabInitOnce) {\n this.tabInitOnce = true;\n this.initTabCloseOverride();\n }\n this.initTabClasses(tab);\n }\n\n /**\n * Adds a beforeClose handler to check if a notebook needs to be saved\n * Call panel close with force if the check can be skipped\n *\n * Note that firing a close event manually may trigger before state update occurs\n * In those instances, use force\n */\n initTabCloseOverride(): void {\n const { glContainer } = this.props;\n glContainer.beforeClose((options?: CloseOptions) => {\n if (options?.force === true) {\n return true;\n }\n\n const { changeCount, savedChangeCount } = this.state;\n if (changeCount !== savedChangeCount) {\n this.setState({ showCloseModal: true });\n return false;\n }\n\n return true;\n });\n }\n\n initTabClasses(tab: Tab): void {\n const tabElement = tab.element.get(0);\n assertNotNull(tabElement);\n const titleElement = tabElement.querySelector('.lm_title');\n this.tabTitleElement = titleElement;\n titleElement?.classList.add('notebook-title');\n this.setPreviewStatus();\n }\n\n getNotebookValue(): string | undefined {\n const { changeCount, savedChangeCount, settings } = this.state;\n const { value } = settings;\n if (changeCount !== savedChangeCount && this.notebook) {\n const notebookValue = this.notebook.getValue();\n return notebookValue != null ? notebookValue : value;\n }\n return value;\n }\n\n initNotebookContent(): void {\n // Init from file,\n // fallback to content from settings for unsaved notebook\n const { fileMetadata, settings, isPreview } = this.state;\n if (fileMetadata && fileMetadata.id) {\n log.debug('Init content from file');\n this.registerFileMetadata(fileMetadata, isPreview);\n this.load();\n return;\n }\n if (settings.value != null) {\n log.debug('Use content passed in the settings prop');\n this.handleLoadSuccess();\n return;\n }\n // No settings, no metadata\n this.handleLoadError(new Error('Missing file metadata'));\n }\n\n closeFileTabById(id: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.CLOSE_FILE, { id });\n }\n\n // Associate file id with the current tab\n // so the next time the file is opened this tab can be focused instead of opening a new tab\n registerFileMetadata(fileMetadata: FileMetadata, isPreview: boolean): void {\n const { glEventHub, metadata } = this.props;\n const { id: tabId } = metadata;\n glEventHub.emit(\n NotebookEvent.REGISTER_FILE,\n tabId,\n fileMetadata,\n isPreview\n );\n }\n\n renameTab(id: string, title: string): void {\n const { glEventHub } = this.props;\n glEventHub.emit(NotebookEvent.RENAME, id, title);\n }\n\n load(): void {\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { id } = fileMetadata;\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.loadFile(id))\n .then(loadedFile => {\n log.debug('Loaded file', loadedFile);\n const { filename: itemName } = loadedFile;\n const { itemName: prevItemName } = this.state;\n if (itemName !== prevItemName) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(itemName));\n }\n const updatedSettings = {\n ...settings,\n language: NotebookPanel.languageFromFileName(itemName) ?? '',\n };\n if (settings.value == null) {\n updatedSettings.value = loadedFile.content;\n }\n if (settings.wordWrap === undefined) {\n settings.wordWrap = 'off';\n }\n this.setState({\n fileMetadata: { id: itemName, itemName },\n settings: updatedSettings,\n });\n this.debouncedSavePanelState();\n })\n .then(this.handleLoadSuccess)\n .catch(this.handleLoadError);\n }\n\n /**\n * Attempts to save the notebook.\n * @returns Returns true if save has begun, false if user needed to be prompted\n */\n save(): boolean {\n const { fileMetadata } = this.state;\n if (fileMetadata && FileUtils.hasPath(fileMetadata.itemName)) {\n const content = this.getNotebookValue();\n if (content !== undefined) {\n this.saveContent(fileMetadata.itemName, content);\n return true;\n }\n return false;\n }\n\n this.setState({ showSaveAsModal: true });\n return false;\n }\n\n /**\n * Update existing file content\n * @param filename The name of the file\n * @param content New file content\n */\n saveContent(filename: string, content: string): void {\n log.debug('saveContent', filename, content);\n this.updateSavedChangeCount();\n const { fileStorage } = this.props;\n this.pending\n .add(fileStorage.saveFile({ filename, content, basename: filename }))\n .then(this.handleSaveSuccess)\n .catch(this.handleSaveError);\n }\n\n updateSavedChangeCount(): void {\n this.setState(({ changeCount }) => ({ savedChangeCount: changeCount }));\n }\n\n setPreviewStatus(): void {\n if (!this.tabTitleElement) {\n return;\n }\n const { isPreview } = this.state;\n log.debug('setPreviewStatus', this.tabTitleElement, isPreview);\n if (isPreview) {\n this.tabTitleElement.classList.add('is-preview');\n } else {\n this.tabTitleElement.classList.remove('is-preview');\n }\n }\n\n handlePreviewPromotion(): void {\n this.removePreviewStatus();\n }\n\n getSettings = memoize(\n (\n initialSettings: editor.IStandaloneEditorConstructionOptions,\n isMinimapEnabled: boolean\n ): editor.IStandaloneEditorConstructionOptions => ({\n ...initialSettings,\n minimap: { enabled: isMinimapEnabled },\n })\n );\n\n getOverflowActions = memoize(\n (isMinimapEnabled: boolean, isWordWrapEnabled: boolean) => [\n {\n title: 'Find',\n icon: dhFileSearch,\n action: this.handleFind,\n group: ContextActions.groups.high,\n shortcut: SHORTCUTS.NOTEBOOK.FIND,\n order: 10,\n },\n {\n title: 'Copy File',\n icon: vsCopy,\n action: this.handleCopy,\n group: ContextActions.groups.medium,\n order: 20,\n },\n {\n title: 'Rename File',\n icon: dhICursor,\n action: this.handleShowRename,\n group: ContextActions.groups.medium,\n order: 30,\n },\n {\n title: 'Delete File',\n icon: vsTrash,\n action: this.handleDelete,\n group: ContextActions.groups.medium,\n order: 40,\n },\n {\n title: 'Show Minimap',\n icon: isMinimapEnabled ? vsCheck : undefined,\n action: this.handleMinimapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n order: 20,\n },\n {\n title: 'Word Wrap',\n icon: isWordWrapEnabled ? vsCheck : undefined,\n action: this.handleWordWrapChange,\n group: ContextActions.groups.low,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n order: 30,\n },\n ]\n );\n\n savePanelState(): void {\n this.setState(state => {\n const {\n changeCount,\n savedChangeCount,\n fileMetadata,\n isPreview,\n settings: initialSettings,\n } = state;\n const value = this.getNotebookValue();\n // notebooks with no unsaved changes have value === null in dehydrated state\n // content will be loaded from file when hydrating\n const dehydratedValue =\n changeCount !== savedChangeCount ? value : undefined;\n const settings = {\n ...initialSettings,\n value,\n };\n const dehydratedSettings = {\n ...initialSettings,\n value: dehydratedValue,\n };\n const panelState = {\n settings: dehydratedSettings,\n fileMetadata,\n isPreview,\n };\n log.debug('Saving panel state', panelState);\n return {\n settings,\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n });\n }\n\n handleCloseDiscard(): void {\n this.setState({ showCloseModal: false });\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n\n handleCloseSave(): void {\n this.setState({ showCloseModal: false });\n if (this.save()) {\n const { glContainer } = this.props;\n glContainer.close({ force: true });\n }\n }\n\n handleCloseCancel(): void {\n this.setState({ showCloseModal: false });\n }\n\n /**\n * Closes overwritten tabs\n * @param fileName The name of the file to be overwritten\n */\n handleOverwrite(fileName: string): void {\n const { glEventHub } = this.props;\n\n glEventHub.emit(\n NotebookEvent.CLOSE_FILE,\n {\n id: fileName,\n itemName: fileName,\n },\n { force: true }\n );\n\n this.focus();\n }\n\n async handleCopy(): Promise<void> {\n const { fileStorage, glEventHub, session } = this.props;\n const { fileMetadata, settings } = this.state;\n assertNotNull(fileMetadata);\n const { language } = settings;\n const { itemName } = fileMetadata;\n const copyName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n itemName\n );\n log.debug('handleCopy', fileMetadata, itemName, copyName);\n await fileStorage.copyFile(itemName, copyName);\n const newFileMetadata = { id: copyName, itemName: copyName };\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n newFileMetadata,\n true\n );\n }\n\n handleDelete(): void {\n log.debug('handleDelete, pending confirmation');\n this.setState({ showDeleteModal: true });\n }\n\n async handleDeleteConfirm(): Promise<void> {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { fileMetadata } = this.state;\n\n log.debug('handleDeleteConfirm', fileMetadata?.itemName);\n this.setState({ showDeleteModal: false });\n\n if (!fileMetadata) {\n return;\n }\n\n if (\n FileUtils.hasPath(fileMetadata.itemName) &&\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n (await FileUtils.fileExists(fileStorage, fileMetadata.itemName))\n ) {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, { force: true });\n fileStorage.deleteFile(fileMetadata.itemName);\n } else {\n glContainer.close({ force: true });\n }\n }\n\n handleDeleteCancel(): void {\n this.setState({ showDeleteModal: false });\n }\n\n handleEditorInitialized(innerEditor: editor.IStandaloneCodeEditor): void {\n this.editor = innerEditor;\n }\n\n handleEditorWillDestroy(): void {\n this.editor = undefined;\n }\n\n handleEditorChange(e: editor.IModelContentChangedEvent): void {\n log.debug2('handleEditorChanged', e);\n\n this.removePreviewStatus();\n\n this.setState(state => {\n const { changeCount, savedChangeCount } = state;\n const { isUndoing, isRedoing } = e;\n if (isUndoing) {\n // Note that it's possible to undo past where the user last saved, if they save and then undo for example\n return { changeCount: changeCount - 1, savedChangeCount };\n }\n\n if (!isRedoing && changeCount < savedChangeCount) {\n // We made another change after undoing some changes from the previous save\n // Just reset the saved counter to zero and increase the unchanged saves\n // It'll be set correctly on the next save\n return { changeCount: changeCount + 1, savedChangeCount: 0 };\n }\n\n return { changeCount: changeCount + 1, savedChangeCount };\n });\n this.debouncedSavePanelState();\n }\n\n handleFind(): void {\n if (this.notebook) {\n this.notebook.toggleFind();\n }\n }\n\n updateEditorMinimap(): void {\n if (this.editor) {\n const { defaultNotebookSettings } = this.props;\n this.editor.updateOptions({\n minimap: { enabled: defaultNotebookSettings.isMinimapEnabled },\n });\n }\n }\n\n handleMinimapChange(): void {\n const { settings, defaultNotebookSettings, saveSettings } = this.props;\n const newSettings: WorkspaceSettings = {\n ...settings,\n defaultNotebookSettings: {\n isMinimapEnabled: !defaultNotebookSettings.isMinimapEnabled,\n },\n };\n saveSettings(newSettings);\n }\n\n updateEditorWordWrap(): void {\n if (this.editor) {\n const { settings } = this.state;\n const { wordWrap } = settings;\n this.editor.updateOptions({\n wordWrap,\n });\n }\n }\n\n handleWordWrapChange(): void {\n if (this.editor) {\n this.setState(prevState => {\n const { settings } = prevState;\n const wordWrap = settings.wordWrap === 'on' ? 'off' : 'on';\n return {\n settings: {\n ...settings,\n wordWrap,\n },\n };\n });\n }\n }\n\n handleBlur(): void {\n log.debug('handleBlur');\n this.setState({ isFocused: false });\n }\n\n handleFocus(): void {\n log.debug('handleFocus');\n this.setState({ isFocused: true });\n }\n\n /**\n * @param event The click event from clicking on the link\n */\n handleLinkClick(event: React.MouseEvent<HTMLAnchorElement>): void {\n const { notebooksUrl, session, sessionLanguage } = this.props;\n const { href } = event.currentTarget;\n if (!href || !href.startsWith(notebooksUrl)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n const notebookPath = `/${href.substring(notebooksUrl.length)}`.replace(\n /%20/g,\n ' '\n );\n if (notebookPath === '/') {\n log.debug('Ignoring invalid notebook link', notebookPath);\n return;\n }\n\n log.debug('Notebook link clicked, opening', notebookPath);\n\n const { glEventHub } = this.props;\n const notebookSettings = {\n value: null,\n language: sessionLanguage,\n };\n const fileMetadata = { id: notebookPath, itemName: notebookPath };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n handleLoadSuccess(): void {\n this.setState({\n error: undefined,\n isLoaded: true,\n isLoading: false,\n });\n }\n\n handleLoadError(errorParam: { message?: string | undefined }): void {\n let error = errorParam;\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n if (PromiseUtils.isTimedOut(error)) {\n error = new Error('File not found.');\n }\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleSave(): void {\n log.debug('handleSave');\n this.save();\n }\n\n handleSaveSuccess(file: File): void {\n const { fileStorage } = this.props;\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const language = NotebookPanel.languageFromFileName(file.filename) ?? '';\n this.setState(state => {\n const { fileMetadata: oldMetadata } = state;\n const settings = {\n ...state.settings,\n language,\n };\n log.debug('handleSaveSuccess', fileMetadata, oldMetadata, settings);\n if (\n oldMetadata &&\n FileUtils.hasPath(oldMetadata.itemName) &&\n oldMetadata.itemName !== fileMetadata.itemName\n ) {\n log.debug('handleSaveSuccess deleting old file', oldMetadata.itemName);\n fileStorage\n .deleteFile(oldMetadata.itemName)\n .catch(NotebookPanel.handleError);\n }\n return {\n fileMetadata,\n settings,\n isPreview: false,\n };\n });\n this.debouncedSavePanelState();\n this.registerFileMetadata(fileMetadata, false);\n }\n\n handleSaveError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n // There was an error saving, just reset the savedChangeCount\n // It's possible if they undo changes they'll be back at the spot where it was last saved successfully,\n // But we may as well continue showing the error until they actually save again\n this.setState({ savedChangeCount: 0 });\n log.error(error);\n }\n\n handleSaveAsCancel(): void {\n this.setState({ showSaveAsModal: false });\n }\n\n handleSaveAsSubmit(name: string, isOverwrite = false): void {\n if (isOverwrite) {\n this.handleOverwrite(name);\n }\n\n log.debug('handleSaveAsSubmit', name);\n const { fileMetadata } = this.state;\n if (!fileMetadata) {\n return;\n }\n const { itemName: prevItemName } = fileMetadata;\n const content = this.getNotebookValue() ?? '';\n this.setState({\n showSaveAsModal: false,\n });\n\n if (FileUtils.getBaseName(prevItemName) !== FileUtils.getBaseName(name)) {\n const { metadata } = this.props;\n const { id: tabId } = metadata;\n this.renameTab(tabId, FileUtils.getBaseName(name));\n }\n\n this.saveContent(name, content);\n }\n\n handleRenameFile(\n oldName: string,\n newName: string,\n panelState?: PanelState\n ): void {\n const { fileMetadata, panelState: curPanelState } = this.state;\n const { glContainer } = this.props;\n\n if (\n fileMetadata?.itemName === `/${newName}` &&\n panelState &&\n JSON.stringify(curPanelState) !== JSON.stringify(panelState)\n ) {\n glContainer.close();\n return;\n }\n\n if (fileMetadata && fileMetadata.id === oldName) {\n this.setState({ fileMetadata: { id: newName, itemName: newName } });\n this.debouncedSavePanelState();\n }\n }\n\n handleResize(): void {\n this.notebook?.updateDimensions();\n }\n\n handleRunCommand(command?: string): void {\n this.runCommand(command);\n }\n\n handleRunAll(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getValue() ?? undefined);\n }\n\n handleRunSelected(): void {\n if (!this.notebook) {\n log.error('Editor is not initialized.');\n return;\n }\n this.runCommand(this.notebook.getSelectedCommand());\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n sessionLanguage: language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n sessionLanguage: undefined,\n });\n }\n\n handleShow(): void {\n log.debug('handleShow');\n this.notebook?.updateDimensions();\n }\n\n handlePanelDropped(droppedId: string): void {\n const {\n metadata: { id },\n } = this.props;\n // re-render necessary for portal after being dropped\n if (droppedId === id) this.forceUpdate();\n }\n\n handleShowRename(): void {\n this.setState({ showSaveAsModal: true });\n }\n\n handleTab(tab: Tab): void {\n log.debug('NotebookPanel tab event', tab);\n this.initTab(tab);\n }\n\n handleTabFocus(...args: unknown[]): void {\n log.debug('handleTabFocus', ...args);\n const { glContainer } = this.props;\n this.setState({\n isDashboardActive: true,\n });\n if (this.notebook && !glContainer.isHidden) {\n this.notebook.updateDimensions();\n }\n }\n\n handleTabBlur(): void {\n log.debug('handleTabBlur');\n this.setState({\n isDashboardActive: false,\n });\n }\n\n handleTabClick(e: MouseEvent): void {\n log.debug('handle NotebookPanel tab click');\n this.focus();\n if (e.detail === 2) {\n this.removePreviewStatus();\n }\n }\n\n /**\n * Transform the link URI to load from where the notebook is if it's relative\n * @param src The link to transform\n * @returns String the transformed link\n */\n handleTransformLinkUri(src: string): string {\n const { notebooksUrl } = this.props;\n const { fileMetadata } = this.state;\n\n if (src.endsWith('/')) {\n return src;\n }\n\n if (src.startsWith('/')) {\n return `${notebooksUrl}${src.substring(1)}`;\n }\n\n let itemName = fileMetadata?.itemName;\n if (itemName === undefined) {\n return src;\n }\n if (itemName.charAt(0) === '/') {\n itemName = itemName.substring(1);\n }\n\n const itemUri = new URL(itemName, notebooksUrl);\n return new URL(src, itemUri).href;\n }\n\n focus(): void {\n requestAnimationFrame(() => {\n if (this.notebook) {\n this.notebook.focus();\n }\n });\n }\n\n createNotebook(\n itemName: string,\n language: string | undefined,\n content = ''\n ): void {\n const { glEventHub } = this.props;\n const { session, sessionLanguage, settings } = this.state;\n const notebookSettings = {\n ...settings,\n language,\n value: content,\n };\n const fileMetadata = {\n id: null,\n itemName,\n };\n log.debug(\n 'handleCreateNotebook',\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n sessionLanguage,\n notebookSettings,\n fileMetadata\n );\n }\n\n runCommand(command?: string): void {\n if (command === undefined || command === '') {\n log.debug('Ignoring empty command.');\n return;\n }\n\n this.removePreviewStatus();\n\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n removePreviewStatus(): void {\n this.setState(({ isPreview }) => {\n if (isPreview) {\n const { fileMetadata } = this.state;\n if (fileMetadata) {\n this.registerFileMetadata(fileMetadata, false);\n }\n return { isPreview: false };\n }\n return null;\n });\n }\n\n getDropdownOverflowActions(): DropdownAction[] {\n const { defaultNotebookSettings } = this.props;\n const { settings: initialSettings } = this.state;\n return this.getOverflowActions(\n defaultNotebookSettings.isMinimapEnabled,\n this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\n ).wordWrap === 'on'\n );\n }\n\n render(): ReactElement {\n const {\n fileStorage,\n glContainer,\n glContainer: { tab },\n glEventHub,\n defaultNotebookSettings,\n } = this.props;\n const {\n changeCount,\n savedChangeCount,\n error,\n isDashboardActive,\n isLoaded,\n isLoading,\n isPreview,\n fileMetadata,\n session,\n sessionLanguage,\n settings: initialSettings,\n showCloseModal,\n showDeleteModal,\n showSaveAsModal,\n } = this.state;\n // We don't want to steal focus if this isn't shown or it's just a preview\n const focusOnMount =\n isDashboardActive && !glContainer.isHidden && !isPreview;\n const itemName = fileMetadata?.itemName ?? NotebookPanel.DEFAULT_NAME;\n const isMarkdown = itemName.endsWith('.md');\n const isExistingItem = fileMetadata?.id != null;\n const settings = this.getSettings(\n initialSettings,\n defaultNotebookSettings.isMinimapEnabled\n );\n const isSessionConnected = session != null;\n const isLanguageMatching = sessionLanguage === settings.language;\n const runButtonsDisabled =\n !isLoaded || !isSessionConnected || !isLanguageMatching;\n const toolbarDisabled = !isLoaded;\n const contextActions = [\n {\n action: this.handleSave,\n shortcut: GLOBAL_SHORTCUTS.SAVE,\n },\n {\n action: this.handleMinimapChange,\n shortcut: SHORTCUTS.NOTEBOOK.MINIMAP,\n },\n {\n action: this.handleWordWrapChange,\n shortcut: SHORTCUTS.NOTEBOOK.WORDWRAP,\n },\n ];\n const disabledRunButtonTooltip = ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run'\n );\n const disabledRunSelectedButtonTooltip =\n ScriptEditorUtils.getDisabledRunTooltip(\n isSessionConnected,\n isLanguageMatching,\n 'Notebook extension',\n 'Run Selected'\n );\n\n const additionalActions = [\n {\n title: isExistingItem ? 'Rename' : 'Save As…',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleShowRename,\n },\n {\n title: 'Copy File',\n action: this.handleCopy,\n group: ContextActions.groups.high,\n order: 20,\n },\n ];\n\n const portal = tab?.element.find('.lm_title_before').get(0);\n\n return (\n <>\n {portal != null &&\n ReactDOM.createPortal(\n <span\n className={classNames(\n NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME,\n {\n [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]:\n changeCount !== savedChangeCount,\n }\n )}\n />,\n portal // tab.element is jquery element, we want a dom element\n )}\n\n <Panel\n className=\"notebook-container\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onTab={this.handleTab}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabClicked={this.handleTabClick}\n onTabFocus={this.handleTabFocus}\n onTabBlur={this.handleTabBlur}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n additionalActions={additionalActions}\n renderTabTooltip={() => itemName}\n >\n {!isMarkdown && (\n <>\n <div className=\"notebook-toolbar\">\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunAll}\n disabled={runButtonsDisabled}\n icon={<FontAwesomeIcon icon={vsPlay} transform=\"grow-4\" />}\n tooltip={`Run ${SHORTCUTS.NOTEBOOK.RUN.getDisplayText()}`}\n aria-label=\"Run\"\n />\n {disabledRunButtonTooltip != null && (\n <Tooltip>{disabledRunButtonTooltip}</Tooltip>\n )}\n </span>\n <span>\n <Button\n kind=\"ghost\"\n className=\"btn-play\"\n onClick={this.handleRunSelected}\n disabled={runButtonsDisabled}\n icon={\n <FontAwesomeIcon\n icon={dhRunSelection}\n transform=\"grow-4\"\n />\n }\n tooltip={`Run Selected ${SHORTCUTS.NOTEBOOK.RUN_SELECTED.getDisplayText()}`}\n aria-label=\"Run Selected\"\n />\n {disabledRunSelectedButtonTooltip != null && (\n <Tooltip>{disabledRunSelectedButtonTooltip}</Tooltip>\n )}\n </span>\n <Button\n kind=\"ghost\"\n className=\"mr-auto\"\n disabled={toolbarDisabled}\n onClick={this.handleSave}\n icon={vsSave}\n tooltip={`Save ${GLOBAL_SHORTCUTS.SAVE.getDisplayText()}`}\n aria-label=\"Save\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn-overflow btn-link-icon\"\n disabled={toolbarDisabled}\n icon={vsKebabVertical}\n tooltip=\"More Actions...\"\n onClick={() => {\n // no-op: click is handled in `DropdownMenu`\n }}\n >\n <DropdownMenu\n actions={this.getDropdownOverflowActions}\n popperOptions={NotebookPanel.POPPER_OPTIONS}\n />\n </Button>\n </div>\n <ScriptEditor\n isLoaded={isLoaded}\n isLoading={isLoading}\n error={error}\n onChange={this.handleEditorChange}\n onRunCommand={this.handleRunCommand}\n session={session}\n sessionLanguage={sessionLanguage}\n onEditorInitialized={this.handleEditorInitialized}\n onEditorWillDestroy={this.handleEditorWillDestroy}\n settings={settings}\n focusOnMount={focusOnMount}\n ref={notebook => {\n this.notebook = notebook;\n }}\n />\n </>\n )}\n {isMarkdown && (\n <MarkdownNotebook\n content={settings.value ?? ''}\n onLinkClick={this.handleLinkClick}\n onRunCode={this.handleRunCommand}\n transformImageUri={this.handleTransformLinkUri}\n transformLinkUri={this.handleTransformLinkUri}\n />\n )}\n <NewItemModal\n isOpen={showSaveAsModal}\n type=\"file\"\n defaultValue={itemName}\n title={isExistingItem ? 'Rename' : 'Save file as'}\n onSubmit={this.handleSaveAsSubmit}\n onCancel={this.handleSaveAsCancel}\n notifyOnExtensionChange\n storage={fileStorage}\n />\n <BasicModal\n isOpen={showDeleteModal}\n headerText={`Are you sure you want to delete \"${itemName}\"?`}\n bodyText=\"You cannot undo this action.\"\n onCancel={this.handleDeleteCancel}\n onConfirm={this.handleDeleteConfirm}\n confirmButtonText=\"Delete\"\n />\n <BasicModal\n isOpen={showCloseModal}\n headerText={`Do you want to save the changes you made to ${itemName}?`}\n bodyText=\"Your changes will be lost if you don't save them.\"\n onCancel={this.handleCloseCancel}\n onDiscard={this.handleCloseDiscard}\n onConfirm={this.handleCloseSave}\n discardButtonText=\"Discard Changes\"\n confirmButtonText=\"Save\"\n />\n <ContextActions actions={contextActions} />\n </Panel>\n </>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n NotebookPanelProps,\n | 'defaultNotebookSettings'\n | 'fileStorage'\n | 'session'\n | 'sessionLanguage'\n | 'settings'\n> => {\n const fileStorage = getFileStorage(state);\n const settings = getSettings(state);\n const defaultNotebookSettings = getDefaultNotebookSettings(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: sessionLanguage } = sessionConfig ?? {};\n return {\n fileStorage,\n settings,\n defaultNotebookSettings,\n session,\n sessionLanguage,\n };\n};\n\nconst ConnectedNotebookPanel = connect(\n mapStateToProps,\n { saveSettings: saveSettingsAction },\n null,\n { forwardRef: true }\n)(NotebookPanel);\n\nexport default ConnectedNotebookPanel;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/dashboard-core-plugins",
3
- "version": "0.49.2-theme-plugins.45+2d9d2fa7",
3
+ "version": "0.50.1-beta.0+cf1b3687",
4
4
  "description": "Deephaven Dashboard Core Plugins",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -22,26 +22,26 @@
22
22
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
23
23
  },
24
24
  "dependencies": {
25
- "@deephaven/app-utils": "^0.49.2-theme-plugins.45+2d9d2fa7",
26
- "@deephaven/chart": "^0.49.2-theme-plugins.45+2d9d2fa7",
27
- "@deephaven/components": "^0.49.2-theme-plugins.45+2d9d2fa7",
28
- "@deephaven/console": "^0.49.2-theme-plugins.45+2d9d2fa7",
29
- "@deephaven/dashboard": "^0.49.2-theme-plugins.45+2d9d2fa7",
30
- "@deephaven/file-explorer": "^0.49.2-theme-plugins.45+2d9d2fa7",
31
- "@deephaven/filters": "^0.49.2-theme-plugins.45+2d9d2fa7",
32
- "@deephaven/golden-layout": "^0.49.2-theme-plugins.45+2d9d2fa7",
33
- "@deephaven/grid": "^0.49.2-theme-plugins.45+2d9d2fa7",
34
- "@deephaven/icons": "^0.49.2-theme-plugins.45+2d9d2fa7",
35
- "@deephaven/iris-grid": "^0.49.2-theme-plugins.45+2d9d2fa7",
36
- "@deephaven/jsapi-bootstrap": "^0.49.2-theme-plugins.45+2d9d2fa7",
37
- "@deephaven/jsapi-types": "^0.49.2-theme-plugins.45+2d9d2fa7",
38
- "@deephaven/jsapi-utils": "^0.49.2-theme-plugins.45+2d9d2fa7",
39
- "@deephaven/log": "^0.49.2-theme-plugins.45+2d9d2fa7",
40
- "@deephaven/plugin": "^0.49.2-theme-plugins.45+2d9d2fa7",
41
- "@deephaven/react-hooks": "^0.49.2-theme-plugins.45+2d9d2fa7",
42
- "@deephaven/redux": "^0.49.2-theme-plugins.45+2d9d2fa7",
43
- "@deephaven/storage": "^0.49.2-theme-plugins.45+2d9d2fa7",
44
- "@deephaven/utils": "^0.49.2-theme-plugins.45+2d9d2fa7",
25
+ "@deephaven/app-utils": "^0.50.1-beta.0+cf1b3687",
26
+ "@deephaven/chart": "^0.50.1-beta.0+cf1b3687",
27
+ "@deephaven/components": "^0.50.1-beta.0+cf1b3687",
28
+ "@deephaven/console": "^0.50.1-beta.0+cf1b3687",
29
+ "@deephaven/dashboard": "^0.50.1-beta.0+cf1b3687",
30
+ "@deephaven/file-explorer": "^0.50.1-beta.0+cf1b3687",
31
+ "@deephaven/filters": "^0.50.1-beta.0+cf1b3687",
32
+ "@deephaven/golden-layout": "^0.50.1-beta.0+cf1b3687",
33
+ "@deephaven/grid": "^0.50.1-beta.0+cf1b3687",
34
+ "@deephaven/icons": "^0.50.1-beta.0+cf1b3687",
35
+ "@deephaven/iris-grid": "^0.50.1-beta.0+cf1b3687",
36
+ "@deephaven/jsapi-bootstrap": "^0.50.1-beta.0+cf1b3687",
37
+ "@deephaven/jsapi-types": "^0.50.1-beta.0+cf1b3687",
38
+ "@deephaven/jsapi-utils": "^0.50.1-beta.0+cf1b3687",
39
+ "@deephaven/log": "^0.50.1-beta.0+cf1b3687",
40
+ "@deephaven/plugin": "^0.50.1-beta.0+cf1b3687",
41
+ "@deephaven/react-hooks": "^0.50.1-beta.0+cf1b3687",
42
+ "@deephaven/redux": "^0.50.1-beta.0+cf1b3687",
43
+ "@deephaven/storage": "^0.50.1-beta.0+cf1b3687",
44
+ "@deephaven/utils": "^0.50.1-beta.0+cf1b3687",
45
45
  "@fortawesome/react-fontawesome": "^0.2.0",
46
46
  "classnames": "^2.3.1",
47
47
  "deep-equal": "^2.0.5",
@@ -64,8 +64,8 @@
64
64
  "react-redux": "^7.2.4"
65
65
  },
66
66
  "devDependencies": {
67
- "@deephaven/jsapi-shim": "^0.49.2-theme-plugins.45+2d9d2fa7",
68
- "@deephaven/mocks": "^0.49.2-theme-plugins.45+2d9d2fa7"
67
+ "@deephaven/jsapi-shim": "^0.50.1-beta.0+cf1b3687",
68
+ "@deephaven/mocks": "^0.50.1-beta.0+cf1b3687"
69
69
  },
70
70
  "files": [
71
71
  "dist"
@@ -76,5 +76,5 @@
76
76
  "publishConfig": {
77
77
  "access": "public"
78
78
  },
79
- "gitHead": "2d9d2fa7116f00b55aec65ed41db7042e2a87e17"
79
+ "gitHead": "cf1b368742a7700b08a8d2eda43671856913c9c7"
80
80
  }