@deephaven/dashboard-core-plugins 1.4.1-beta.2 → 1.4.1-react19.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/ChartBuilderPlugin.js.map +1 -1
  2. package/dist/ChartBuilderPluginConfig.js.map +1 -1
  3. package/dist/ChartPanelPlugin.js +1 -1
  4. package/dist/ChartPanelPlugin.js.map +1 -1
  5. package/dist/ChartPluginConfig.js.map +1 -1
  6. package/dist/ChartWidgetPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.d.ts.map +1 -1
  8. package/dist/ConsolePlugin.js +12 -2
  9. package/dist/ConsolePlugin.js.map +1 -1
  10. package/dist/FilterEvents.js.map +1 -1
  11. package/dist/FilterPlugin.js +2 -2
  12. package/dist/FilterPlugin.js.map +1 -1
  13. package/dist/FilterPluginConfig.js.map +1 -1
  14. package/dist/GridPanelPlugin.js.map +1 -1
  15. package/dist/GridPluginConfig.js.map +1 -1
  16. package/dist/GridWidgetPlugin.d.ts.map +1 -1
  17. package/dist/GridWidgetPlugin.js +3 -1
  18. package/dist/GridWidgetPlugin.js.map +1 -1
  19. package/dist/LinkerPlugin.js.map +1 -1
  20. package/dist/LinkerPluginConfig.js.map +1 -1
  21. package/dist/MarkdownPlugin.js +1 -1
  22. package/dist/MarkdownPlugin.js.map +1 -1
  23. package/dist/MarkdownPluginConfig.js.map +1 -1
  24. package/dist/PandasPanelPlugin.js.map +1 -1
  25. package/dist/PandasPluginConfig.js.map +1 -1
  26. package/dist/PandasWidgetPlugin.d.ts.map +1 -1
  27. package/dist/PandasWidgetPlugin.js +4 -2
  28. package/dist/PandasWidgetPlugin.js.map +1 -1
  29. package/dist/TablePluginWrapper.js.map +1 -1
  30. package/dist/WidgetLoaderPlugin.js.map +1 -1
  31. package/dist/WidgetLoaderPluginConfig.js.map +1 -1
  32. package/dist/controls/ControlType.js.map +1 -1
  33. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +1 -1
  34. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  35. package/dist/controls/dropdown-filter/DropdownFilter.js +4 -6
  36. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  37. package/dist/controls/input-filter/InputFilter.js +1 -2
  38. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  39. package/dist/controls/markdown/MarkdownContainer.js +1 -2
  40. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  41. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  42. package/dist/controls/markdown/MarkdownStartPage.js +1 -2
  43. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  44. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  45. package/dist/events/ChartEvent.js +2 -0
  46. package/dist/events/ChartEvent.js.map +1 -1
  47. package/dist/events/ConsoleEvent.js.map +1 -1
  48. package/dist/events/InputFilterEvent.js +8 -0
  49. package/dist/events/InputFilterEvent.js.map +1 -1
  50. package/dist/events/IrisGridEvent.js +2 -0
  51. package/dist/events/IrisGridEvent.js.map +1 -1
  52. package/dist/events/MarkdownEvent.js.map +1 -1
  53. package/dist/events/NotebookEvent.js.map +1 -1
  54. package/dist/events/PQEvent.js.map +1 -1
  55. package/dist/events/PandasEvent.js +2 -0
  56. package/dist/events/PandasEvent.js.map +1 -1
  57. package/dist/events/TabEventMap.js.map +1 -1
  58. package/dist/events/index.js.map +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/linker/ColumnSelectionValidator.js.map +1 -1
  61. package/dist/linker/Linker.js +2 -2
  62. package/dist/linker/Linker.js.map +1 -1
  63. package/dist/linker/LinkerEvent.js.map +1 -1
  64. package/dist/linker/LinkerLink.js +1 -3
  65. package/dist/linker/LinkerLink.js.map +1 -1
  66. package/dist/linker/LinkerOverlayContent.js +1 -2
  67. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  68. package/dist/linker/LinkerUtils.js.map +1 -1
  69. package/dist/linker/ToolType.js.map +1 -1
  70. package/dist/linker/index.js.map +1 -1
  71. package/dist/panels/ChartColumnSelectorOverlay.d.ts +0 -4
  72. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  73. package/dist/panels/ChartColumnSelectorOverlay.js +2 -7
  74. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  75. package/dist/panels/ChartFilterOverlay.d.ts +0 -12
  76. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  77. package/dist/panels/ChartFilterOverlay.js +1 -13
  78. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  79. package/dist/panels/ChartPanel.d.ts +10 -10
  80. package/dist/panels/ChartPanel.d.ts.map +1 -1
  81. package/dist/panels/ChartPanel.js +2 -4
  82. package/dist/panels/ChartPanel.js.map +1 -1
  83. package/dist/panels/ChartPanelUtils.js.map +1 -1
  84. package/dist/panels/CommandHistoryPanel.js +2 -4
  85. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  86. package/dist/panels/ConsolePanel.d.ts +2 -1
  87. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  88. package/dist/panels/ConsolePanel.js +13 -12
  89. package/dist/panels/ConsolePanel.js.map +1 -1
  90. package/dist/panels/CorePanel.js +3 -3
  91. package/dist/panels/CorePanel.js.map +1 -1
  92. package/dist/panels/DropdownFilterPanel.d.ts +2 -8
  93. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  94. package/dist/panels/DropdownFilterPanel.js +6 -6
  95. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  96. package/dist/panels/FileExplorerPanel.d.ts +1 -7
  97. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  98. package/dist/panels/FileExplorerPanel.js +1 -2
  99. package/dist/panels/FileExplorerPanel.js.map +1 -1
  100. package/dist/panels/FilterSetManager.js +12 -13
  101. package/dist/panels/FilterSetManager.js.map +1 -1
  102. package/dist/panels/FilterSetManagerPanel.d.ts +3 -3
  103. package/dist/panels/FilterSetManagerPanel.js +4 -4
  104. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  105. package/dist/panels/InputFilterPanel.d.ts +3 -3
  106. package/dist/panels/InputFilterPanel.js +4 -5
  107. package/dist/panels/InputFilterPanel.js.map +1 -1
  108. package/dist/panels/IrisGridPanel.d.ts +5 -5
  109. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  110. package/dist/panels/IrisGridPanel.js +14 -13
  111. package/dist/panels/IrisGridPanel.js.map +1 -1
  112. package/dist/panels/IrisGridPanelTooltip.js +1 -2
  113. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  114. package/dist/panels/IrisGridPanelTypes.js.map +1 -1
  115. package/dist/panels/LogPanel.d.ts +3 -3
  116. package/dist/panels/LogPanel.d.ts.map +1 -1
  117. package/dist/panels/LogPanel.js +1 -3
  118. package/dist/panels/LogPanel.js.map +1 -1
  119. package/dist/panels/MarkdownNotebook.js +3 -4
  120. package/dist/panels/MarkdownNotebook.js.map +1 -1
  121. package/dist/panels/MarkdownPanel.d.ts +3 -3
  122. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  123. package/dist/panels/MarkdownPanel.js +3 -1
  124. package/dist/panels/MarkdownPanel.js.map +1 -1
  125. package/dist/panels/MockFileStorage.js.map +1 -1
  126. package/dist/panels/MockFileStorageTable.js +1 -1
  127. package/dist/panels/MockFileStorageTable.js.map +1 -1
  128. package/dist/panels/NotebookPanel.d.ts +7 -9
  129. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  130. package/dist/panels/NotebookPanel.js +11 -11
  131. package/dist/panels/NotebookPanel.js.map +1 -1
  132. package/dist/panels/PandasPanel.d.ts +11 -3
  133. package/dist/panels/PandasPanel.d.ts.map +1 -1
  134. package/dist/panels/PandasPanel.js +62 -6
  135. package/dist/panels/PandasPanel.js.map +1 -1
  136. package/dist/panels/PandasReloadButton.js +2 -3
  137. package/dist/panels/PandasReloadButton.js.map +1 -1
  138. package/dist/panels/WidgetPanel.js +2 -3
  139. package/dist/panels/WidgetPanel.js.map +1 -1
  140. package/dist/panels/WidgetPanelTooltip.js +1 -3
  141. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  142. package/dist/panels/WidgetPanelTypes.js.map +1 -1
  143. package/dist/panels/index.js.map +1 -1
  144. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  145. package/dist/prop-types/UIPropTypes.js.map +1 -1
  146. package/dist/prop-types/index.js.map +1 -1
  147. package/dist/redux/actions.js.map +1 -1
  148. package/dist/redux/index.js.map +1 -1
  149. package/dist/redux/selectors.js.map +1 -1
  150. package/dist/useChartLinker.js.map +1 -1
  151. package/dist/useConfigureRuff.js.map +1 -1
  152. package/dist/useDashboardColumnFilters.js.map +1 -1
  153. package/dist/useGridLinker.js.map +1 -1
  154. package/dist/useHydrateGrid.js.map +1 -1
  155. package/dist/useIrisGridModel.js +2 -2
  156. package/dist/useIrisGridModel.js.map +1 -1
  157. package/dist/useLoadTablePlugin.js.map +1 -1
  158. package/dist/useTablePlugin.js +1 -1
  159. package/dist/useTablePlugin.js.map +1 -1
  160. package/package.json +24 -24
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownNotebook.js","names":["React","PureComponent","classNames","Markdown","remarkGfm","remarkMath","rehypeMathjax","Button","Code","vsPlay","assertNotNull","jsx","_jsx","jsxs","_jsxs","MarkdownNotebook","constructor","props","_defineProperty","handleRunSelected","bind","renderCodeBlock","renderLink","commands","Map","codeElements","editorScrollView","createRef","state","hasCode","hasRunCode","nextStartLine","componentDidMount","updateHasCode","componentDidUpdate","size","setState","getNextStartLine","line","keys","nextIndex","findIndex","key","length","event","_this$codeElements$ge","_element$parentElemen","preventDefault","stopPropagation","keyIndex","startLine","command","get","newNextStartLine","element","current","nextElement","parentElement","nextElementSibling","_this$editorScrollVie","offsetTop","top","scroll","left","runCode","onRunCode","children","className","inline","node","nodeChildren","position","start","value","ref","isFirstBlock","isSelected","language","undefined","startsWith","substring","set","onClick","role","kind","icon","tooltip","Children","map","child","trim","onLinkClick","href","target","render","content","transformImageUri","transformLinkUri","flashing","disabled","components","code","a","linkTarget","remarkPlugins","rehypePlugins","includeElementIndex"],"sources":["../../src/panels/MarkdownNotebook.tsx"],"sourcesContent":["import React, {\n PureComponent,\n type ReactElement,\n type RefObject,\n type MouseEvent,\n type MouseEventHandler,\n} from 'react';\nimport classNames from 'classnames';\nimport Markdown, { type Options } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport rehypeMathjax from 'rehype-mathjax';\nimport { Button } from '@deephaven/components';\nimport { Code } from '@deephaven/console';\nimport { vsPlay } from '@deephaven/icons';\nimport './MarkdownNotebook.scss';\nimport { type ReactMarkdownProps } from 'react-markdown/lib/ast-to-react';\nimport { assertNotNull } from '@deephaven/utils';\n\ninterface MarkdownNotebookProps {\n onRunCode: (command?: string) => void;\n content: string;\n onLinkClick: MouseEventHandler<HTMLAnchorElement>;\n transformImageUri?: Options['transformImageUri'];\n transformLinkUri?: Options['transformLinkUri'];\n}\n\ninterface MarkdownNotebookState {\n hasCode: boolean;\n\n // Keep track if any code has been executed yet. If not, make the run button flash\n hasRunCode: boolean;\n\n // Line of the next block to execute. Null to start at the first block\n nextStartLine: number | null;\n}\n\nexport class MarkdownNotebook extends PureComponent<\n MarkdownNotebookProps,\n MarkdownNotebookState\n> {\n static defaultProps = {\n onRunCode: (): void => undefined,\n };\n\n constructor(props: MarkdownNotebookProps) {\n super(props);\n\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.renderCodeBlock = this.renderCodeBlock.bind(this);\n this.renderLink = this.renderLink.bind(this);\n\n // Map of each code block from it's starting line number to the code within that block\n this.commands = new Map();\n this.codeElements = new Map();\n this.editorScrollView = React.createRef();\n\n this.state = {\n hasCode: false,\n\n // Keep track if any code has been executed yet. If not, make the run button flash\n hasRunCode: false,\n\n // Line of the next block to execute. Null to start at the first block\n nextStartLine: null,\n };\n }\n\n componentDidMount(): void {\n this.updateHasCode();\n }\n\n componentDidUpdate(): void {\n this.updateHasCode();\n }\n\n commands: Map<number, string>;\n\n codeElements: Map<number, React.RefObject<HTMLDivElement>>;\n\n editorScrollView: RefObject<HTMLDivElement>;\n\n updateHasCode(): void {\n const { hasCode } = this.state;\n if (this.commands.size === 0 && hasCode) {\n this.setState({ hasCode: false });\n } else if (this.commands.size > 0 && !hasCode) {\n this.setState({ hasCode: true });\n }\n }\n\n /**\n * @param line The line of the code block to start from\n * @returns The next line of the code block to start from\n */\n getNextStartLine(line: number | null): number | null {\n const keys = [...this.commands.keys()];\n const nextIndex = keys.findIndex(key => key === line) + 1;\n if (nextIndex >= keys.length) {\n // We got to the last block, disable\n return null;\n }\n\n return keys[nextIndex];\n }\n\n handleRunSelected(event: MouseEvent<HTMLButtonElement>): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { nextStartLine } = this.state;\n const keys = [...this.commands.keys()];\n const keyIndex = keys.findIndex(\n key => key === nextStartLine || nextStartLine == null\n );\n if (keyIndex < 0) {\n return;\n }\n const startLine = keys[keyIndex];\n const command = this.commands.get(startLine);\n const newNextStartLine = this.getNextStartLine(startLine);\n const element = this.codeElements.get(startLine)?.current;\n const nextElement = element?.parentElement?.nextElementSibling;\n if (nextElement != null) {\n const { offsetTop } = nextElement as HTMLElement;\n const top = offsetTop;\n this.editorScrollView.current?.scroll({\n top,\n left: 0,\n });\n }\n\n this.runCode(command);\n this.setState({ nextStartLine: newNextStartLine });\n }\n\n runCode(command?: string): void {\n const { onRunCode } = this.props;\n onRunCode(command);\n\n this.setState({ hasRunCode: true });\n }\n\n renderCodeBlock(\n props: JSX.IntrinsicElements['code'] &\n ReactMarkdownProps & {\n inline?: boolean;\n }\n ): ReactElement {\n const { children, className, inline, node } = props;\n const { hasRunCode, nextStartLine } = this.state;\n const { children: nodeChildren, position } = node;\n assertNotNull(position);\n const { start } = position;\n const { line } = start;\n const command = (nodeChildren[0] as { value: string }).value;\n const ref = React.createRef<HTMLDivElement>();\n const isFirstBlock = this.commands.size === 0;\n const isSelected =\n nextStartLine === line ||\n (isFirstBlock && nextStartLine == null && !hasRunCode);\n const language =\n className !== undefined && className.startsWith('language-')\n ? className.substring(9)\n : 'plaintext';\n\n if (inline != null && inline) {\n return <code className={className}>{children}</code>;\n }\n\n this.commands.set(line, command);\n this.codeElements.set(line, ref);\n\n return (\n <div\n className={classNames('markdown-notebook-code-block', {\n 'is-selected': isSelected,\n })}\n ref={ref}\n onClick={() => {\n this.setState({ nextStartLine: line });\n }}\n role=\"presentation\"\n >\n <Button\n kind=\"ghost\"\n icon={vsPlay}\n className=\"btn-play-block\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n\n this.runCode(command);\n this.setState({ nextStartLine: line });\n }}\n tooltip=\"Run code\"\n />\n <code>\n <Code language={language}>\n {React.Children.map(children, child =>\n typeof child === 'string' ? child.trim() : child\n )}\n </Code>\n </code>\n </div>\n );\n }\n\n renderLink(\n props: React.ClassAttributes<HTMLAnchorElement> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\n ReactMarkdownProps\n ): ReactElement {\n const { onLinkClick } = this.props;\n const { href, children, target } = props;\n return (\n <a href={href} onClick={onLinkClick} target={target}>\n {children}\n </a>\n );\n }\n\n render(): ReactElement {\n const { content, transformImageUri, transformLinkUri } = this.props;\n const { hasCode, hasRunCode, nextStartLine } = this.state;\n return (\n <div className=\"markdown-notebook\">\n <div className=\"markdown-notebook-toolbar\">\n <Button\n className={classNames('btn-play-selected-cell', {\n flashing: hasCode && !hasRunCode,\n })}\n kind=\"ghost\"\n icon={vsPlay}\n onClick={this.handleRunSelected}\n tooltip=\"Run code and select next\"\n disabled={(hasRunCode && nextStartLine == null) || !hasCode}\n >\n Run Selected Code\n </Button>\n </div>\n <div className=\"markdown-notebook-content\" ref={this.editorScrollView}>\n <Markdown\n components={{ code: this.renderCodeBlock, a: this.renderLink }}\n linkTarget=\"_blank\"\n remarkPlugins={[remarkGfm, remarkMath]}\n rehypePlugins={[rehypeMathjax]}\n transformLinkUri={transformLinkUri}\n transformImageUri={transformImageUri}\n includeElementIndex\n >\n {content}\n </Markdown>\n </div>\n </div>\n );\n }\n}\n\nexport default MarkdownNotebook;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownNotebook.js","names":["React","PureComponent","classNames","Markdown","remarkGfm","remarkMath","rehypeMathjax","Button","Code","vsPlay","assertNotNull","jsx","_jsx","jsxs","_jsxs","MarkdownNotebook","constructor","props","_defineProperty","handleRunSelected","bind","renderCodeBlock","renderLink","commands","Map","codeElements","editorScrollView","createRef","state","hasCode","hasRunCode","nextStartLine","componentDidMount","updateHasCode","componentDidUpdate","size","setState","getNextStartLine","line","keys","nextIndex","findIndex","key","length","event","_this$codeElements$ge","_element$parentElemen","preventDefault","stopPropagation","keyIndex","startLine","command","get","newNextStartLine","element","current","nextElement","parentElement","nextElementSibling","_this$editorScrollVie","offsetTop","top","scroll","left","runCode","onRunCode","children","className","inline","node","nodeChildren","position","start","value","ref","isFirstBlock","isSelected","language","undefined","startsWith","substring","set","onClick","role","kind","icon","tooltip","Children","map","child","trim","onLinkClick","href","target","render","content","transformImageUri","transformLinkUri","flashing","disabled","components","code","a","linkTarget","remarkPlugins","rehypePlugins","includeElementIndex"],"sources":["../../src/panels/MarkdownNotebook.tsx"],"sourcesContent":["import React, {\n PureComponent,\n type ReactElement,\n type RefObject,\n type MouseEvent,\n type MouseEventHandler,\n} from 'react';\nimport classNames from 'classnames';\nimport Markdown, { type Options } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport rehypeMathjax from 'rehype-mathjax';\nimport { Button } from '@deephaven/components';\nimport { Code } from '@deephaven/console';\nimport { vsPlay } from '@deephaven/icons';\nimport './MarkdownNotebook.scss';\nimport { type ReactMarkdownProps } from 'react-markdown/lib/ast-to-react';\nimport { assertNotNull } from '@deephaven/utils';\n\ninterface MarkdownNotebookProps {\n onRunCode: (command?: string) => void;\n content: string;\n onLinkClick: MouseEventHandler<HTMLAnchorElement>;\n transformImageUri?: Options['transformImageUri'];\n transformLinkUri?: Options['transformLinkUri'];\n}\n\ninterface MarkdownNotebookState {\n hasCode: boolean;\n\n // Keep track if any code has been executed yet. If not, make the run button flash\n hasRunCode: boolean;\n\n // Line of the next block to execute. Null to start at the first block\n nextStartLine: number | null;\n}\n\nexport class MarkdownNotebook extends PureComponent<\n MarkdownNotebookProps,\n MarkdownNotebookState\n> {\n static defaultProps = {\n onRunCode: (): void => undefined,\n };\n\n constructor(props: MarkdownNotebookProps) {\n super(props);\n\n this.handleRunSelected = this.handleRunSelected.bind(this);\n this.renderCodeBlock = this.renderCodeBlock.bind(this);\n this.renderLink = this.renderLink.bind(this);\n\n // Map of each code block from it's starting line number to the code within that block\n this.commands = new Map();\n this.codeElements = new Map();\n this.editorScrollView = React.createRef();\n\n this.state = {\n hasCode: false,\n\n // Keep track if any code has been executed yet. If not, make the run button flash\n hasRunCode: false,\n\n // Line of the next block to execute. Null to start at the first block\n nextStartLine: null,\n };\n }\n\n componentDidMount(): void {\n this.updateHasCode();\n }\n\n componentDidUpdate(): void {\n this.updateHasCode();\n }\n\n commands: Map<number, string>;\n\n codeElements: Map<number, React.RefObject<HTMLDivElement>>;\n\n editorScrollView: RefObject<HTMLDivElement>;\n\n updateHasCode(): void {\n const { hasCode } = this.state;\n if (this.commands.size === 0 && hasCode) {\n this.setState({ hasCode: false });\n } else if (this.commands.size > 0 && !hasCode) {\n this.setState({ hasCode: true });\n }\n }\n\n /**\n * @param line The line of the code block to start from\n * @returns The next line of the code block to start from\n */\n getNextStartLine(line: number | null): number | null {\n const keys = [...this.commands.keys()];\n const nextIndex = keys.findIndex(key => key === line) + 1;\n if (nextIndex >= keys.length) {\n // We got to the last block, disable\n return null;\n }\n\n return keys[nextIndex];\n }\n\n handleRunSelected(event: MouseEvent<HTMLButtonElement>): void {\n event.preventDefault();\n event.stopPropagation();\n\n const { nextStartLine } = this.state;\n const keys = [...this.commands.keys()];\n const keyIndex = keys.findIndex(\n key => key === nextStartLine || nextStartLine == null\n );\n if (keyIndex < 0) {\n return;\n }\n const startLine = keys[keyIndex];\n const command = this.commands.get(startLine);\n const newNextStartLine = this.getNextStartLine(startLine);\n const element = this.codeElements.get(startLine)?.current;\n const nextElement = element?.parentElement?.nextElementSibling;\n if (nextElement != null) {\n const { offsetTop } = nextElement as HTMLElement;\n const top = offsetTop;\n this.editorScrollView.current?.scroll({\n top,\n left: 0,\n });\n }\n\n this.runCode(command);\n this.setState({ nextStartLine: newNextStartLine });\n }\n\n runCode(command?: string): void {\n const { onRunCode } = this.props;\n onRunCode(command);\n\n this.setState({ hasRunCode: true });\n }\n\n renderCodeBlock(\n props: JSX.IntrinsicElements['code'] &\n ReactMarkdownProps & {\n inline?: boolean;\n }\n ): ReactElement {\n const { children, className, inline, node } = props;\n const { hasRunCode, nextStartLine } = this.state;\n const { children: nodeChildren, position } = node;\n assertNotNull(position);\n const { start } = position;\n const { line } = start;\n const command = (nodeChildren[0] as { value: string }).value;\n const ref = React.createRef<HTMLDivElement>();\n const isFirstBlock = this.commands.size === 0;\n const isSelected =\n nextStartLine === line ||\n (isFirstBlock && nextStartLine == null && !hasRunCode);\n const language =\n className !== undefined && className.startsWith('language-')\n ? className.substring(9)\n : 'plaintext';\n\n if (inline != null && inline) {\n return <code className={className}>{children}</code>;\n }\n\n this.commands.set(line, command);\n this.codeElements.set(line, ref);\n\n return (\n <div\n className={classNames('markdown-notebook-code-block', {\n 'is-selected': isSelected,\n })}\n ref={ref}\n onClick={() => {\n this.setState({ nextStartLine: line });\n }}\n role=\"presentation\"\n >\n <Button\n kind=\"ghost\"\n icon={vsPlay}\n className=\"btn-play-block\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n\n this.runCode(command);\n this.setState({ nextStartLine: line });\n }}\n tooltip=\"Run code\"\n />\n <code>\n <Code language={language}>\n {React.Children.map(children, child =>\n typeof child === 'string' ? child.trim() : child\n )}\n </Code>\n </code>\n </div>\n );\n }\n\n renderLink(\n props: React.ClassAttributes<HTMLAnchorElement> &\n React.AnchorHTMLAttributes<HTMLAnchorElement> &\n ReactMarkdownProps\n ): ReactElement {\n const { onLinkClick } = this.props;\n const { href, children, target } = props;\n return (\n <a href={href} onClick={onLinkClick} target={target}>\n {children}\n </a>\n );\n }\n\n render(): ReactElement {\n const { content, transformImageUri, transformLinkUri } = this.props;\n const { hasCode, hasRunCode, nextStartLine } = this.state;\n return (\n <div className=\"markdown-notebook\">\n <div className=\"markdown-notebook-toolbar\">\n <Button\n className={classNames('btn-play-selected-cell', {\n flashing: hasCode && !hasRunCode,\n })}\n kind=\"ghost\"\n icon={vsPlay}\n onClick={this.handleRunSelected}\n tooltip=\"Run code and select next\"\n disabled={(hasRunCode && nextStartLine == null) || !hasCode}\n >\n Run Selected Code\n </Button>\n </div>\n <div className=\"markdown-notebook-content\" ref={this.editorScrollView}>\n <Markdown\n components={{ code: this.renderCodeBlock, a: this.renderLink }}\n linkTarget=\"_blank\"\n remarkPlugins={[remarkGfm, remarkMath]}\n rehypePlugins={[rehypeMathjax]}\n transformLinkUri={transformLinkUri}\n transformImageUri={transformImageUri}\n includeElementIndex\n >\n {content}\n </Markdown>\n </div>\n </div>\n );\n }\n}\n\nexport default MarkdownNotebook;\n"],"mappings":"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","ignoreList":[]}
@@ -36,9 +36,9 @@ export declare class MarkdownPanel extends Component<MarkdownPanelProps, Markdow
36
36
  handleEditorResize(): void;
37
37
  render(): ReactElement;
38
38
  }
39
- declare const ConnectedMarkdownPanel: import("react-redux").ConnectedComponent<typeof MarkdownPanel, import("react-redux").Omit<Pick<MarkdownPanelProps, "glEventHub" | "glContainer" | "metadata" | "localDashboardId" | "closedPanels"> & Partial<Pick<MarkdownPanelProps, "panelState">> & Partial<Pick<{
40
- panelState: null;
41
- }, never>>, "closedPanels"> & {
39
+ declare const ConnectedMarkdownPanel: import("react-redux").ConnectedComponent<typeof MarkdownPanel, import("react-redux").Omit<Pick<MarkdownPanelProps, "glEventHub" | "glContainer" | "metadata" | "localDashboardId" | "closedPanels"> & {
40
+ panelState?: PanelState | undefined;
41
+ } & {}, "closedPanels"> & {
42
42
  localDashboardId: string;
43
43
  }>;
44
44
  export default ConnectedMarkdownPanel;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownPanel.d.ts","sourceRoot":"","sources":["../../src/panels/MarkdownPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EAGlB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAIzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAO7C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,KAAK,kBAAkB,MAAM,qCAAqC,CAAC;AAS1E,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,kBAAmB,SAAQ,mBAAmB;IACtD,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,UAAU,kBAAkB;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,qBAAa,aAAc,SAAQ,SAAS,CAC1C,kBAAkB,EAClB,kBAAkB,CACnB;IACC,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,CAAC,SAAS,SAAmB;gBAEvB,KAAK,EAAE,kBAAkB;IAoCrC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAE1C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAE7C,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IA2B/C,kBAAkB,+EAA6C;IAE/D,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;IAW5D,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,GAAG,IAAI;IAK1E,oBAAoB,IAAI,IAAI;IAoB5B,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAQxD,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAK1D,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAyBzD,kBAAkB,IAAI,IAAI;IAO1B,MAAM,IAAI,YAAY;CA2CvB;AAYD,QAAA,MAAM,sBAAsB;;;sBARI,MAAM;EAUrB,CAAC;AAElB,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"MarkdownPanel.d.ts","sourceRoot":"","sources":["../../src/panels/MarkdownPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EAGlB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAIzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAO7C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,KAAK,kBAAkB,MAAM,qCAAqC,CAAC;AAS1E,UAAU,UAAU;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,kBAAmB,SAAQ,mBAAmB;IACtD,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,UAAU,kBAAkB;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,qBAAa,aAAc,SAAQ,SAAS,CAC1C,kBAAkB,EAClB,kBAAkB,CACnB;IACC,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,CAAC,SAAS,SAAmB;gBAEvB,KAAK,EAAE,kBAAkB;IAoCrC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAE1C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAE7C,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IA2B/C,kBAAkB,+EAA6C;IAE/D,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,IAAI;IAW5D,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,GAAG,IAAI;IAK1E,oBAAoB,IAAI,IAAI;IAoB5B,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAQxD,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAK1D,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAyBzD,kBAAkB,IAAI,IAAI;IAO1B,MAAM,IAAI,YAAY;CA6CvB;AAYD,QAAA,MAAM,sBAAsB;;;sBARI,MAAM;EAUrB,CAAC;AAElB,eAAe,sBAAsB,CAAC"}
@@ -181,7 +181,9 @@ export class MarkdownPanel extends Component {
181
181
  isEditing: isEditing,
182
182
  onDoubleClick: this.handleContainerDoubleClick,
183
183
  children: /*#__PURE__*/_jsx(Suspense, {
184
- fallback: /*#__PURE__*/_jsx(LoadingOverlay, {}),
184
+ fallback: /*#__PURE__*/_jsx(LoadingOverlay, {
185
+ "data-testid": "markdown-panel-loading"
186
+ }),
185
187
  children: /*#__PURE__*/_jsx(MarkdownEditor, {
186
188
  ref: markdownEditor => {
187
189
  this.markdownEditor = markdownEditor;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownPanel.js","names":["React","Component","Suspense","lazy","memoize","connect","getClosedPanelsForDashboard","LayoutUtils","PanelEvent","Log","assertNotNull","LoadingOverlay","Panel","MarkdownContainer","MarkdownStartPage","MarkdownUtils","jsx","_jsx","MarkdownEditor","log","module","MarkdownPanel","constructor","props","_defineProperty","getClosedMarkdowns","handleContainerDoubleClick","bind","handleCreateMarkdown","handleDeleteMarkdown","handleOpenMarkdown","handleEditorInitialized","handleEditorBlur","handleEditorResize","panelState","content","DEFAULT_CONTENT","state","isStartPageShown","closedPanels","length","isEditing","markdownEditor","setEditorPosition","clickPositionY","container","markdownEditorContainer","editor","_this$editor$getModel","_this$editor$getModel2","contentTop","getBoundingClientRect","top","contentScrollTop","scrollTop","contentScrollHeight","scrollHeight","totalLines","getModel","getLineCount","lineToFocus","Math","round","revealLine","setPosition","lineNumber","column","focus","event","dbClickPositionY","clientY","setState","debug","markdown","glContainer","glEventHub","config","getComponentConfigFromContainer","emit","REOPEN","DELETE","_this$editor","contains","relatedTarget","getValue","layout","render","closedMarkdowns","className","componentPanel","onResize","onBlur","isClonable","isRenamable","children","onCreate","onOpen","onDelete","onDoubleClick","fallback","ref","onEditorInitialized","mapStateToProps","ownProps","localDashboardId","ConnectedMarkdownPanel","forwardRef"],"sources":["../../src/panels/MarkdownPanel.tsx"],"sourcesContent":["import React, {\n Component,\n type FocusEvent,\n type MouseEvent,\n type ReactElement,\n Suspense,\n lazy,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport {\n type ClosedPanel,\n type DashboardPanelProps,\n getClosedPanelsForDashboard,\n LayoutUtils,\n PanelEvent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\nimport type * as monaco from 'monaco-editor';\nimport { assertNotNull } from '@deephaven/utils';\nimport { type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport Panel from './CorePanel';\nimport MarkdownContainer from '../controls/markdown/MarkdownContainer';\nimport MarkdownStartPage from '../controls/markdown/MarkdownStartPage';\nimport './MarkdownPanel.scss';\nimport type MarkdownEditorType from '../controls/markdown/MarkdownEditor';\nimport MarkdownUtils from '../controls/markdown/MarkdownUtils';\n\nconst MarkdownEditor = lazy(\n () => import('../controls/markdown/MarkdownEditor')\n);\n\nconst log = Log.module('MarkdownPanel');\n\ninterface PanelState {\n content?: string;\n}\n\ninterface MarkdownPanelProps extends DashboardPanelProps {\n panelState: PanelState;\n closedPanels: ClosedPanel[];\n}\n\ninterface MarkdownPanelState {\n isStartPageShown: boolean;\n isEditing: boolean;\n content?: string | null;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n}\n\nexport class MarkdownPanel extends Component<\n MarkdownPanelProps,\n MarkdownPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'MarkdownPanel';\n\n constructor(props: MarkdownPanelProps) {\n super(props);\n\n this.handleContainerDoubleClick =\n this.handleContainerDoubleClick.bind(this);\n this.handleCreateMarkdown = this.handleCreateMarkdown.bind(this);\n this.handleDeleteMarkdown = this.handleDeleteMarkdown.bind(this);\n this.handleOpenMarkdown = this.handleOpenMarkdown.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorBlur = this.handleEditorBlur.bind(this);\n this.handleEditorResize = this.handleEditorResize.bind(this);\n\n const { panelState } = props;\n let content = null;\n if (panelState != null && panelState.content != null) {\n if (panelState.content !== '') {\n ({ content } = panelState);\n } else {\n content = MarkdownUtils.DEFAULT_CONTENT;\n }\n }\n\n this.state = {\n isStartPageShown:\n content == null &&\n this.getClosedMarkdowns(props.closedPanels).length !== 0,\n isEditing: false,\n content,\n\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n\n this.markdownEditor = null;\n }\n\n markdownEditor: MarkdownEditorType | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n setEditorPosition(clickPositionY: number): void {\n assertNotNull(this.markdownEditor);\n const { container: markdownEditorContainer } = this.markdownEditor;\n if (this.editor && markdownEditorContainer != null) {\n const contentTop = markdownEditorContainer.getBoundingClientRect().top;\n const contentScrollTop = markdownEditorContainer.scrollTop;\n const contentScrollHeight = markdownEditorContainer.scrollHeight;\n const totalLines = this.editor.getModel()?.getLineCount() ?? 0;\n\n let lineToFocus = Math.round(\n ((contentScrollTop + clickPositionY - contentTop) /\n contentScrollHeight) *\n totalLines\n );\n if (lineToFocus > totalLines) {\n lineToFocus = totalLines;\n }\n\n this.editor.revealLine(lineToFocus);\n this.editor.setPosition({\n lineNumber: lineToFocus,\n column: 1,\n });\n this.editor.focus();\n }\n }\n\n getClosedMarkdowns = memoize(MarkdownUtils.getClosedMarkdowns);\n\n handleContainerDoubleClick(event: MouseEvent<Element>): void {\n const { isEditing } = this.state;\n const dbClickPositionY = event.clientY;\n\n if (!isEditing) {\n this.setState({ isEditing: true }, () => {\n this.setEditorPosition(dbClickPositionY);\n });\n }\n }\n\n handleEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor): void {\n log.debug('Markdown Editor Initialized...');\n this.editor = editor;\n }\n\n handleCreateMarkdown(): void {\n log.debug('create markdown...');\n\n this.setState(\n {\n isStartPageShown: false,\n content: '',\n isEditing: true,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: { content: '' },\n },\n () => {\n if (this.editor != null && this.editor.focus != null) {\n this.editor.focus();\n }\n }\n );\n }\n\n handleOpenMarkdown(markdown: ReactComponentConfig): void {\n log.debug('open markdown...', markdown);\n\n const { glContainer, glEventHub } = this.props;\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n glEventHub.emit(PanelEvent.REOPEN, markdown, config);\n }\n\n handleDeleteMarkdown(markdown: ReactComponentConfig): void {\n const { glEventHub } = this.props;\n glEventHub.emit(PanelEvent.DELETE, markdown);\n }\n\n handleEditorBlur(event: FocusEvent<HTMLDivElement>): void {\n log.debug(`markdown content changed, saving...`);\n const { isEditing } = this.state;\n\n // if not in edit mode, or in edit mode but blur went to an internal monaco field (like search)\n if (\n !isEditing ||\n (this.markdownEditor != null &&\n this.markdownEditor.container != null &&\n this.markdownEditor.container.contains(event.relatedTarget))\n ) {\n return;\n }\n\n const content = this.editor?.getValue();\n\n this.setState({\n content,\n isEditing: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: { content },\n });\n }\n\n handleEditorResize(): void {\n const { isEditing } = this.state;\n if (isEditing && this.editor) {\n this.editor.layout();\n }\n }\n\n render(): ReactElement {\n const { glContainer, glEventHub, closedPanels } = this.props;\n const { isEditing, isStartPageShown, content } = this.state;\n const closedMarkdowns = this.getClosedMarkdowns(closedPanels);\n\n return (\n <Panel\n glContainer={glContainer}\n glEventHub={glEventHub}\n className=\"markdown-panel\"\n componentPanel={this}\n onResize={this.handleEditorResize}\n onBlur={this.handleEditorBlur}\n isClonable\n isRenamable\n >\n {isStartPageShown ? (\n <MarkdownStartPage\n closedMarkdowns={closedMarkdowns}\n onCreate={this.handleCreateMarkdown}\n onOpen={this.handleOpenMarkdown}\n onDelete={this.handleDeleteMarkdown}\n />\n ) : (\n <MarkdownContainer\n isEditing={isEditing}\n onDoubleClick={this.handleContainerDoubleClick}\n >\n <Suspense fallback={<LoadingOverlay />}>\n <MarkdownEditor\n ref={markdownEditor => {\n this.markdownEditor = markdownEditor;\n }}\n isEditing={isEditing}\n content={content ?? MarkdownUtils.DEFAULT_CONTENT}\n onEditorInitialized={this.handleEditorInitialized}\n />\n </Suspense>\n </MarkdownContainer>\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<MarkdownPanelProps, 'closedPanels'> => {\n const { localDashboardId } = ownProps;\n return {\n closedPanels: getClosedPanelsForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedMarkdownPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(MarkdownPanel);\n\nexport default ConnectedMarkdownPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownPanel.js","names":["React","Component","Suspense","lazy","memoize","connect","getClosedPanelsForDashboard","LayoutUtils","PanelEvent","Log","assertNotNull","LoadingOverlay","Panel","MarkdownContainer","MarkdownStartPage","MarkdownUtils","jsx","_jsx","MarkdownEditor","log","module","MarkdownPanel","constructor","props","_defineProperty","getClosedMarkdowns","handleContainerDoubleClick","bind","handleCreateMarkdown","handleDeleteMarkdown","handleOpenMarkdown","handleEditorInitialized","handleEditorBlur","handleEditorResize","panelState","content","DEFAULT_CONTENT","state","isStartPageShown","closedPanels","length","isEditing","markdownEditor","setEditorPosition","clickPositionY","container","markdownEditorContainer","editor","_this$editor$getModel","_this$editor$getModel2","contentTop","getBoundingClientRect","top","contentScrollTop","scrollTop","contentScrollHeight","scrollHeight","totalLines","getModel","getLineCount","lineToFocus","Math","round","revealLine","setPosition","lineNumber","column","focus","event","dbClickPositionY","clientY","setState","debug","markdown","glContainer","glEventHub","config","getComponentConfigFromContainer","emit","REOPEN","DELETE","_this$editor","contains","relatedTarget","getValue","layout","render","closedMarkdowns","className","componentPanel","onResize","onBlur","isClonable","isRenamable","children","onCreate","onOpen","onDelete","onDoubleClick","fallback","ref","onEditorInitialized","mapStateToProps","ownProps","localDashboardId","ConnectedMarkdownPanel","forwardRef"],"sources":["../../src/panels/MarkdownPanel.tsx"],"sourcesContent":["import React, {\n Component,\n type FocusEvent,\n type MouseEvent,\n type ReactElement,\n Suspense,\n lazy,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport {\n type ClosedPanel,\n type DashboardPanelProps,\n getClosedPanelsForDashboard,\n LayoutUtils,\n PanelEvent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\nimport type * as monaco from 'monaco-editor';\nimport { assertNotNull } from '@deephaven/utils';\nimport { type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport Panel from './CorePanel';\nimport MarkdownContainer from '../controls/markdown/MarkdownContainer';\nimport MarkdownStartPage from '../controls/markdown/MarkdownStartPage';\nimport './MarkdownPanel.scss';\nimport type MarkdownEditorType from '../controls/markdown/MarkdownEditor';\nimport MarkdownUtils from '../controls/markdown/MarkdownUtils';\n\nconst MarkdownEditor = lazy(\n () => import('../controls/markdown/MarkdownEditor')\n);\n\nconst log = Log.module('MarkdownPanel');\n\ninterface PanelState {\n content?: string;\n}\n\ninterface MarkdownPanelProps extends DashboardPanelProps {\n panelState: PanelState;\n closedPanels: ClosedPanel[];\n}\n\ninterface MarkdownPanelState {\n isStartPageShown: boolean;\n isEditing: boolean;\n content?: string | null;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n}\n\nexport class MarkdownPanel extends Component<\n MarkdownPanelProps,\n MarkdownPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'MarkdownPanel';\n\n constructor(props: MarkdownPanelProps) {\n super(props);\n\n this.handleContainerDoubleClick =\n this.handleContainerDoubleClick.bind(this);\n this.handleCreateMarkdown = this.handleCreateMarkdown.bind(this);\n this.handleDeleteMarkdown = this.handleDeleteMarkdown.bind(this);\n this.handleOpenMarkdown = this.handleOpenMarkdown.bind(this);\n this.handleEditorInitialized = this.handleEditorInitialized.bind(this);\n this.handleEditorBlur = this.handleEditorBlur.bind(this);\n this.handleEditorResize = this.handleEditorResize.bind(this);\n\n const { panelState } = props;\n let content = null;\n if (panelState != null && panelState.content != null) {\n if (panelState.content !== '') {\n ({ content } = panelState);\n } else {\n content = MarkdownUtils.DEFAULT_CONTENT;\n }\n }\n\n this.state = {\n isStartPageShown:\n content == null &&\n this.getClosedMarkdowns(props.closedPanels).length !== 0,\n isEditing: false,\n content,\n\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n\n this.markdownEditor = null;\n }\n\n markdownEditor: MarkdownEditorType | null;\n\n editor?: monaco.editor.IStandaloneCodeEditor;\n\n setEditorPosition(clickPositionY: number): void {\n assertNotNull(this.markdownEditor);\n const { container: markdownEditorContainer } = this.markdownEditor;\n if (this.editor && markdownEditorContainer != null) {\n const contentTop = markdownEditorContainer.getBoundingClientRect().top;\n const contentScrollTop = markdownEditorContainer.scrollTop;\n const contentScrollHeight = markdownEditorContainer.scrollHeight;\n const totalLines = this.editor.getModel()?.getLineCount() ?? 0;\n\n let lineToFocus = Math.round(\n ((contentScrollTop + clickPositionY - contentTop) /\n contentScrollHeight) *\n totalLines\n );\n if (lineToFocus > totalLines) {\n lineToFocus = totalLines;\n }\n\n this.editor.revealLine(lineToFocus);\n this.editor.setPosition({\n lineNumber: lineToFocus,\n column: 1,\n });\n this.editor.focus();\n }\n }\n\n getClosedMarkdowns = memoize(MarkdownUtils.getClosedMarkdowns);\n\n handleContainerDoubleClick(event: MouseEvent<Element>): void {\n const { isEditing } = this.state;\n const dbClickPositionY = event.clientY;\n\n if (!isEditing) {\n this.setState({ isEditing: true }, () => {\n this.setEditorPosition(dbClickPositionY);\n });\n }\n }\n\n handleEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor): void {\n log.debug('Markdown Editor Initialized...');\n this.editor = editor;\n }\n\n handleCreateMarkdown(): void {\n log.debug('create markdown...');\n\n this.setState(\n {\n isStartPageShown: false,\n content: '',\n isEditing: true,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: { content: '' },\n },\n () => {\n if (this.editor != null && this.editor.focus != null) {\n this.editor.focus();\n }\n }\n );\n }\n\n handleOpenMarkdown(markdown: ReactComponentConfig): void {\n log.debug('open markdown...', markdown);\n\n const { glContainer, glEventHub } = this.props;\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n glEventHub.emit(PanelEvent.REOPEN, markdown, config);\n }\n\n handleDeleteMarkdown(markdown: ReactComponentConfig): void {\n const { glEventHub } = this.props;\n glEventHub.emit(PanelEvent.DELETE, markdown);\n }\n\n handleEditorBlur(event: FocusEvent<HTMLDivElement>): void {\n log.debug(`markdown content changed, saving...`);\n const { isEditing } = this.state;\n\n // if not in edit mode, or in edit mode but blur went to an internal monaco field (like search)\n if (\n !isEditing ||\n (this.markdownEditor != null &&\n this.markdownEditor.container != null &&\n this.markdownEditor.container.contains(event.relatedTarget))\n ) {\n return;\n }\n\n const content = this.editor?.getValue();\n\n this.setState({\n content,\n isEditing: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState: { content },\n });\n }\n\n handleEditorResize(): void {\n const { isEditing } = this.state;\n if (isEditing && this.editor) {\n this.editor.layout();\n }\n }\n\n render(): ReactElement {\n const { glContainer, glEventHub, closedPanels } = this.props;\n const { isEditing, isStartPageShown, content } = this.state;\n const closedMarkdowns = this.getClosedMarkdowns(closedPanels);\n\n return (\n <Panel\n glContainer={glContainer}\n glEventHub={glEventHub}\n className=\"markdown-panel\"\n componentPanel={this}\n onResize={this.handleEditorResize}\n onBlur={this.handleEditorBlur}\n isClonable\n isRenamable\n >\n {isStartPageShown ? (\n <MarkdownStartPage\n closedMarkdowns={closedMarkdowns}\n onCreate={this.handleCreateMarkdown}\n onOpen={this.handleOpenMarkdown}\n onDelete={this.handleDeleteMarkdown}\n />\n ) : (\n <MarkdownContainer\n isEditing={isEditing}\n onDoubleClick={this.handleContainerDoubleClick}\n >\n <Suspense\n fallback={<LoadingOverlay data-testid=\"markdown-panel-loading\" />}\n >\n <MarkdownEditor\n ref={markdownEditor => {\n this.markdownEditor = markdownEditor;\n }}\n isEditing={isEditing}\n content={content ?? MarkdownUtils.DEFAULT_CONTENT}\n onEditorInitialized={this.handleEditorInitialized}\n />\n </Suspense>\n </MarkdownContainer>\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<MarkdownPanelProps, 'closedPanels'> => {\n const { localDashboardId } = ownProps;\n return {\n closedPanels: getClosedPanelsForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedMarkdownPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(MarkdownPanel);\n\nexport default ConnectedMarkdownPanel;\n"],"mappings":";;;AAAA,OAAOA,KAAK,IACVC,SAAS,EAITC,QAAQ,EACRC,IAAI,QACC,OAAO;AACd,OAAOC,OAAO,MAAM,aAAa;AACjC,SAASC,OAAO,QAAQ,aAAa;AACrC,SAGEC,2BAA2B,EAC3BC,WAAW,EACXC,UAAU,QACL,sBAAsB;AAC7B,OAAOC,GAAG,MAAM,gBAAgB;AAGhC,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,SAASC,cAAc,QAAQ,uBAAuB;AAAC,OAChDC,KAAK;AAAA,OACLC,iBAAiB;AAAA,OACjBC,iBAAiB;AAAA;AAAA,OAGjBC,aAAa;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEpB,IAAMC,cAAc,gBAAGf,IAAI,CACzB,MAAM,MAAM,CAAC,qCAAqC,CACpD,CAAC;AAED,IAAMgB,GAAG,GAAGV,GAAG,CAACW,MAAM,CAAC,eAAe,CAAC;AAoBvC,OAAO,MAAMC,aAAa,SAASpB,SAAS,CAG1C;EAOAqB,WAAWA,CAACC,KAAyB,EAAE;IACrC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA,6BAkEMpB,OAAO,CAACW,aAAa,CAACU,kBAAkB,CAAC;IAhE5D,IAAI,CAACC,0BAA0B,GAC7B,IAAI,CAACA,0BAA0B,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACD,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACE,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACF,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACG,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACH,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACI,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACJ,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACK,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACL,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACM,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACN,IAAI,CAAC,IAAI,CAAC;IAE5D,IAAM;MAAEO;IAAW,CAAC,GAAGX,KAAK;IAC5B,IAAIY,OAAO,GAAG,IAAI;IAClB,IAAID,UAAU,IAAI,IAAI,IAAIA,UAAU,CAACC,OAAO,IAAI,IAAI,EAAE;MACpD,IAAID,UAAU,CAACC,OAAO,KAAK,EAAE,EAAE;QAC7B,CAAC;UAAEA;QAAQ,CAAC,GAAGD,UAAU;MAC3B,CAAC,MAAM;QACLC,OAAO,GAAGpB,aAAa,CAACqB,eAAe;MACzC;IACF;IAEA,IAAI,CAACC,KAAK,GAAG;MACXC,gBAAgB,EACdH,OAAO,IAAI,IAAI,IACf,IAAI,CAACV,kBAAkB,CAACF,KAAK,CAACgB,YAAY,CAAC,CAACC,MAAM,KAAK,CAAC;MAC1DC,SAAS,EAAE,KAAK;MAChBN,OAAO;MAEP;MACAD;IACF,CAAC;IAED,IAAI,CAACQ,cAAc,GAAG,IAAI;EAC5B;EAMAC,iBAAiBA,CAACC,cAAsB,EAAQ;IAC9ClC,aAAa,CAAC,IAAI,CAACgC,cAAc,CAAC;IAClC,IAAM;MAAEG,SAAS,EAAEC;IAAwB,CAAC,GAAG,IAAI,CAACJ,cAAc;IAClE,IAAI,IAAI,CAACK,MAAM,IAAID,uBAAuB,IAAI,IAAI,EAAE;MAAA,IAAAE,qBAAA,EAAAC,sBAAA;MAClD,IAAMC,UAAU,GAAGJ,uBAAuB,CAACK,qBAAqB,CAAC,CAAC,CAACC,GAAG;MACtE,IAAMC,gBAAgB,GAAGP,uBAAuB,CAACQ,SAAS;MAC1D,IAAMC,mBAAmB,GAAGT,uBAAuB,CAACU,YAAY;MAChE,IAAMC,UAAU,IAAAT,qBAAA,IAAAC,sBAAA,GAAG,IAAI,CAACF,MAAM,CAACW,QAAQ,CAAC,CAAC,cAAAT,sBAAA,uBAAtBA,sBAAA,CAAwBU,YAAY,CAAC,CAAC,cAAAX,qBAAA,cAAAA,qBAAA,GAAI,CAAC;MAE9D,IAAIY,WAAW,GAAGC,IAAI,CAACC,KAAK,CACzB,CAACT,gBAAgB,GAAGT,cAAc,GAAGM,UAAU,IAC9CK,mBAAmB,GACnBE,UACJ,CAAC;MACD,IAAIG,WAAW,GAAGH,UAAU,EAAE;QAC5BG,WAAW,GAAGH,UAAU;MAC1B;MAEA,IAAI,CAACV,MAAM,CAACgB,UAAU,CAACH,WAAW,CAAC;MACnC,IAAI,CAACb,MAAM,CAACiB,WAAW,CAAC;QACtBC,UAAU,EAAEL,WAAW;QACvBM,MAAM,EAAE;MACV,CAAC,CAAC;MACF,IAAI,CAACnB,MAAM,CAACoB,KAAK,CAAC,CAAC;IACrB;EACF;EAIAzC,0BAA0BA,CAAC0C,KAA0B,EAAQ;IAC3D,IAAM;MAAE3B;IAAU,CAAC,GAAG,IAAI,CAACJ,KAAK;IAChC,IAAMgC,gBAAgB,GAAGD,KAAK,CAACE,OAAO;IAEtC,IAAI,CAAC7B,SAAS,EAAE;MACd,IAAI,CAAC8B,QAAQ,CAAC;QAAE9B,SAAS,EAAE;MAAK,CAAC,EAAE,MAAM;QACvC,IAAI,CAACE,iBAAiB,CAAC0B,gBAAgB,CAAC;MAC1C,CAAC,CAAC;IACJ;EACF;EAEAtC,uBAAuBA,CAACgB,MAA2C,EAAQ;IACzE5B,GAAG,CAACqD,KAAK,CAAC,gCAAgC,CAAC;IAC3C,IAAI,CAACzB,MAAM,GAAGA,MAAM;EACtB;EAEAnB,oBAAoBA,CAAA,EAAS;IAC3BT,GAAG,CAACqD,KAAK,CAAC,oBAAoB,CAAC;IAE/B,IAAI,CAACD,QAAQ,CACX;MACEjC,gBAAgB,EAAE,KAAK;MACvBH,OAAO,EAAE,EAAE;MACXM,SAAS,EAAE,IAAI;MAEf;MACAP,UAAU,EAAE;QAAEC,OAAO,EAAE;MAAG;IAC5B,CAAC,EACD,MAAM;MACJ,IAAI,IAAI,CAACY,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,CAACoB,KAAK,IAAI,IAAI,EAAE;QACpD,IAAI,CAACpB,MAAM,CAACoB,KAAK,CAAC,CAAC;MACrB;IACF,CACF,CAAC;EACH;EAEArC,kBAAkBA,CAAC2C,QAA8B,EAAQ;IACvDtD,GAAG,CAACqD,KAAK,CAAC,kBAAkB,EAAEC,QAAQ,CAAC;IAEvC,IAAM;MAAEC,WAAW;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACpD,KAAK;IAC9C,IAAMqD,MAAM,GAAGrE,WAAW,CAACsE,+BAA+B,CAACH,WAAW,CAAC;IACvEC,UAAU,CAACG,IAAI,CAACtE,UAAU,CAACuE,MAAM,EAAEN,QAAQ,EAAEG,MAAM,CAAC;EACtD;EAEA/C,oBAAoBA,CAAC4C,QAA8B,EAAQ;IACzD,IAAM;MAAEE;IAAW,CAAC,GAAG,IAAI,CAACpD,KAAK;IACjCoD,UAAU,CAACG,IAAI,CAACtE,UAAU,CAACwE,MAAM,EAAEP,QAAQ,CAAC;EAC9C;EAEAzC,gBAAgBA,CAACoC,KAAiC,EAAQ;IAAA,IAAAa,YAAA;IACxD9D,GAAG,CAACqD,KAAK,sCAAsC,CAAC;IAChD,IAAM;MAAE/B;IAAU,CAAC,GAAG,IAAI,CAACJ,KAAK;;IAEhC;IACA,IACE,CAACI,SAAS,IACT,IAAI,CAACC,cAAc,IAAI,IAAI,IAC1B,IAAI,CAACA,cAAc,CAACG,SAAS,IAAI,IAAI,IACrC,IAAI,CAACH,cAAc,CAACG,SAAS,CAACqC,QAAQ,CAACd,KAAK,CAACe,aAAa,CAAE,EAC9D;MACA;IACF;IAEA,IAAMhD,OAAO,IAAA8C,YAAA,GAAG,IAAI,CAAClC,MAAM,cAAAkC,YAAA,uBAAXA,YAAA,CAAaG,QAAQ,CAAC,CAAC;IAEvC,IAAI,CAACb,QAAQ,CAAC;MACZpC,OAAO;MACPM,SAAS,EAAE,KAAK;MAEhB;MACAP,UAAU,EAAE;QAAEC;MAAQ;IACxB,CAAC,CAAC;EACJ;EAEAF,kBAAkBA,CAAA,EAAS;IACzB,IAAM;MAAEQ;IAAU,CAAC,GAAG,IAAI,CAACJ,KAAK;IAChC,IAAII,SAAS,IAAI,IAAI,CAACM,MAAM,EAAE;MAC5B,IAAI,CAACA,MAAM,CAACsC,MAAM,CAAC,CAAC;IACtB;EACF;EAEAC,MAAMA,CAAA,EAAiB;IACrB,IAAM;MAAEZ,WAAW;MAAEC,UAAU;MAAEpC;IAAa,CAAC,GAAG,IAAI,CAAChB,KAAK;IAC5D,IAAM;MAAEkB,SAAS;MAAEH,gBAAgB;MAAEH;IAAQ,CAAC,GAAG,IAAI,CAACE,KAAK;IAC3D,IAAMkD,eAAe,GAAG,IAAI,CAAC9D,kBAAkB,CAACc,YAAY,CAAC;IAE7D,oBACEtB,IAAA,CAACL,KAAK;MACJ8D,WAAW,EAAEA,WAAY;MACzBC,UAAU,EAAEA,UAAW;MACvBa,SAAS,EAAC,gBAAgB;MAC1BC,cAAc,EAAE,IAAK;MACrBC,QAAQ,EAAE,IAAI,CAACzD,kBAAmB;MAClC0D,MAAM,EAAE,IAAI,CAAC3D,gBAAiB;MAC9B4D,UAAU;MACVC,WAAW;MAAAC,QAAA,EAEVxD,gBAAgB,gBACfrB,IAAA,CAACH,iBAAiB;QAChByE,eAAe,EAAEA,eAAgB;QACjCQ,QAAQ,EAAE,IAAI,CAACnE,oBAAqB;QACpCoE,MAAM,EAAE,IAAI,CAAClE,kBAAmB;QAChCmE,QAAQ,EAAE,IAAI,CAACpE;MAAqB,CACrC,CAAC,gBAEFZ,IAAA,CAACJ,iBAAiB;QAChB4B,SAAS,EAAEA,SAAU;QACrByD,aAAa,EAAE,IAAI,CAACxE,0BAA2B;QAAAoE,QAAA,eAE/C7E,IAAA,CAACf,QAAQ;UACPiG,QAAQ,eAAElF,IAAA,CAACN,cAAc;YAAC,eAAY;UAAwB,CAAE,CAAE;UAAAmF,QAAA,eAElE7E,IAAA,CAACC,cAAc;YACbkF,GAAG,EAAE1D,cAAc,IAAI;cACrB,IAAI,CAACA,cAAc,GAAGA,cAAc;YACtC,CAAE;YACFD,SAAS,EAAEA,SAAU;YACrBN,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAIpB,aAAa,CAACqB,eAAgB;YAClDiE,mBAAmB,EAAE,IAAI,CAACtE;UAAwB,CACnD;QAAC,CACM;MAAC,CACM;IACpB,CACI,CAAC;EAEZ;AACF;AAACP,eAAA,CA7MYH,aAAa,kBAIF;EACpBa,UAAU,EAAE;AACd,CAAC;AAAAV,eAAA,CANUH,aAAa,eAQL,eAAe;AAuMpC,IAAMiF,eAAe,GAAGA,CACtBjE,KAAgB,EAChBkE,QAAsC,KACO;EAC7C,IAAM;IAAEC;EAAiB,CAAC,GAAGD,QAAQ;EACrC,OAAO;IACLhE,YAAY,EAAEjC,2BAA2B,CAAC+B,KAAK,EAAEmE,gBAAgB;EACnE,CAAC;AACH,CAAC;AAED,IAAMC,sBAAsB,GAAGpG,OAAO,CAACiG,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE;EAClEI,UAAU,EAAE;AACd,CAAC,CAAC,CAACrF,aAAa,CAAC;AAEjB,eAAeoF,sBAAsB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MockFileStorage.js","names":["FileNotFoundError","FileUtils","MockFileStorageTable","MockFileStorage","constructor","items","_defineProperty","getTable","_this","_asyncToGenerator","saveFile","file","Error","loadFile","name","copyFile","newName","deleteFile","_this2","filter","value","filename","moveFile","_this3","i","length","basename","getBaseName","id","info","_this4","allItems","itemDetails","type","createDirectory"],"sources":["../../src/panels/MockFileStorage.ts"],"sourcesContent":["import {\n type File,\n FileNotFoundError,\n type FileStorage,\n type FileStorageItem,\n type FileStorageTable,\n FileUtils,\n} from '@deephaven/file-explorer';\nimport MockFileStorageTable from './MockFileStorageTable';\n\nexport class MockFileStorage implements FileStorage {\n private items: FileStorageItem[];\n\n constructor(items: FileStorageItem[]) {\n this.items = items;\n }\n\n async getTable(): Promise<FileStorageTable> {\n return new MockFileStorageTable(this.items);\n }\n\n /* eslint-disable class-methods-use-this */\n saveFile(file: File): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n loadFile(name: string): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n async copyFile(name: string, newName: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async deleteFile(name: string): Promise<void> {\n this.items = this.items.filter(value => value.filename !== name);\n }\n\n async moveFile(name: string, newName: string): Promise<void> {\n for (let i = 0; i < this.items.length; i += 1) {\n if (this.items[i].filename === name) {\n this.items[i].filename = newName;\n this.items[i].basename = FileUtils.getBaseName(newName);\n this.items[i].id = newName;\n break;\n }\n }\n }\n\n async info(name: string): Promise<FileStorageItem> {\n const allItems = this.items.filter(value => value.filename === name);\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n throw new Error('More than one matching file found');\n }\n const itemDetails = allItems[0];\n\n return {\n filename: itemDetails.filename,\n basename: itemDetails.basename,\n id: itemDetails.filename,\n type: itemDetails.type,\n };\n }\n\n createDirectory(name: string): Promise<FileStorageItem> {\n throw new Error('Method not implemented.');\n }\n}\n\nexport default MockFileStorage;\n"],"mappings":";;;;;AAAA,SAEEA,iBAAiB,EAIjBC,SAAS,QACJ,0BAA0B;AAAC,OAC3BC,oBAAoB;AAE3B,OAAO,MAAMC,eAAe,CAAwB;EAGlDC,WAAWA,CAACC,KAAwB,EAAE;IAAAC,eAAA;IACpC,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;EAEME,QAAQA,CAAA,EAA8B;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MAC1C,OAAO,IAAIP,oBAAoB,CAACM,KAAI,CAACH,KAAK,CAAC;IAAC;EAC9C;;EAEA;EACAK,QAAQA,CAACC,IAAU,EAAiB;IAClC,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAC,QAAQA,CAACC,IAAY,EAAiB;IACpC,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEMG,QAAQA,CAACD,IAAY,EAAEE,OAAe,EAAiB;IAAA,OAAAP,iBAAA;MAC3D,MAAM,IAAIG,KAAK,CAAC,yBAAyB,CAAC;IAAC;EAC7C;EAEMK,UAAUA,CAACH,IAAY,EAAiB;IAAA,IAAAI,MAAA;IAAA,OAAAT,iBAAA;MAC5CS,MAAI,CAACb,KAAK,GAAGa,MAAI,CAACb,KAAK,CAACc,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKP,IAAI,CAAC;IAAC;EACnE;EAEMQ,QAAQA,CAACR,IAAY,EAAEE,OAAe,EAAiB;IAAA,IAAAO,MAAA;IAAA,OAAAd,iBAAA;MAC3D,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAI,CAAClB,KAAK,CAACoB,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAID,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACH,QAAQ,KAAKP,IAAI,EAAE;UACnCS,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACH,QAAQ,GAAGL,OAAO;UAChCO,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACE,QAAQ,GAAGzB,SAAS,CAAC0B,WAAW,CAACX,OAAO,CAAC;UACvDO,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACI,EAAE,GAAGZ,OAAO;UAC1B;QACF;MACF;IAAC;EACH;EAEMa,IAAIA,CAACf,IAAY,EAA4B;IAAA,IAAAgB,MAAA;IAAA,OAAArB,iBAAA;MACjD,IAAMsB,QAAQ,GAAGD,MAAI,CAACzB,KAAK,CAACc,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKP,IAAI,CAAC;MACpE,IAAIiB,QAAQ,CAACN,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAIzB,iBAAiB,CAAC,CAAC;MAC/B;MACA,IAAI+B,QAAQ,CAACN,MAAM,GAAG,CAAC,EAAE;QACvB,MAAM,IAAIb,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAMoB,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAAC;MAE/B,OAAO;QACLV,QAAQ,EAAEW,WAAW,CAACX,QAAQ;QAC9BK,QAAQ,EAAEM,WAAW,CAACN,QAAQ;QAC9BE,EAAE,EAAEI,WAAW,CAACX,QAAQ;QACxBY,IAAI,EAAED,WAAW,CAACC;MACpB,CAAC;IAAC;EACJ;EAEAC,eAAeA,CAACpB,IAAY,EAA4B;IACtD,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAEA,eAAeT,eAAe"}
1
+ {"version":3,"file":"MockFileStorage.js","names":["FileNotFoundError","FileUtils","MockFileStorageTable","MockFileStorage","constructor","items","_defineProperty","getTable","_this","_asyncToGenerator","saveFile","file","Error","loadFile","name","copyFile","newName","deleteFile","_this2","filter","value","filename","moveFile","_this3","i","length","basename","getBaseName","id","info","_this4","allItems","itemDetails","type","createDirectory"],"sources":["../../src/panels/MockFileStorage.ts"],"sourcesContent":["import {\n type File,\n FileNotFoundError,\n type FileStorage,\n type FileStorageItem,\n type FileStorageTable,\n FileUtils,\n} from '@deephaven/file-explorer';\nimport MockFileStorageTable from './MockFileStorageTable';\n\nexport class MockFileStorage implements FileStorage {\n private items: FileStorageItem[];\n\n constructor(items: FileStorageItem[]) {\n this.items = items;\n }\n\n async getTable(): Promise<FileStorageTable> {\n return new MockFileStorageTable(this.items);\n }\n\n /* eslint-disable class-methods-use-this */\n saveFile(file: File): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n loadFile(name: string): Promise<File> {\n throw new Error('Method not implemented.');\n }\n\n async copyFile(name: string, newName: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async deleteFile(name: string): Promise<void> {\n this.items = this.items.filter(value => value.filename !== name);\n }\n\n async moveFile(name: string, newName: string): Promise<void> {\n for (let i = 0; i < this.items.length; i += 1) {\n if (this.items[i].filename === name) {\n this.items[i].filename = newName;\n this.items[i].basename = FileUtils.getBaseName(newName);\n this.items[i].id = newName;\n break;\n }\n }\n }\n\n async info(name: string): Promise<FileStorageItem> {\n const allItems = this.items.filter(value => value.filename === name);\n if (allItems.length === 0) {\n throw new FileNotFoundError();\n }\n if (allItems.length > 1) {\n throw new Error('More than one matching file found');\n }\n const itemDetails = allItems[0];\n\n return {\n filename: itemDetails.filename,\n basename: itemDetails.basename,\n id: itemDetails.filename,\n type: itemDetails.type,\n };\n }\n\n createDirectory(name: string): Promise<FileStorageItem> {\n throw new Error('Method not implemented.');\n }\n}\n\nexport default MockFileStorage;\n"],"mappings":";;;;;AAAA,SAEEA,iBAAiB,EAIjBC,SAAS,QACJ,0BAA0B;AAAC,OAC3BC,oBAAoB;AAE3B,OAAO,MAAMC,eAAe,CAAwB;EAGlDC,WAAWA,CAACC,KAAwB,EAAE;IAAAC,eAAA;IACpC,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;EAEME,QAAQA,CAAA,EAA8B;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MAC1C,OAAO,IAAIP,oBAAoB,CAACM,KAAI,CAACH,KAAK,CAAC;IAAC;EAC9C;;EAEA;EACAK,QAAQA,CAACC,IAAU,EAAiB;IAClC,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEAC,QAAQA,CAACC,IAAY,EAAiB;IACpC,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAEMG,QAAQA,CAACD,IAAY,EAAEE,OAAe,EAAiB;IAAA,OAAAP,iBAAA;MAC3D,MAAM,IAAIG,KAAK,CAAC,yBAAyB,CAAC;IAAC;EAC7C;EAEMK,UAAUA,CAACH,IAAY,EAAiB;IAAA,IAAAI,MAAA;IAAA,OAAAT,iBAAA;MAC5CS,MAAI,CAACb,KAAK,GAAGa,MAAI,CAACb,KAAK,CAACc,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKP,IAAI,CAAC;IAAC;EACnE;EAEMQ,QAAQA,CAACR,IAAY,EAAEE,OAAe,EAAiB;IAAA,IAAAO,MAAA;IAAA,OAAAd,iBAAA;MAC3D,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAI,CAAClB,KAAK,CAACoB,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAID,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACH,QAAQ,KAAKP,IAAI,EAAE;UACnCS,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACH,QAAQ,GAAGL,OAAO;UAChCO,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACE,QAAQ,GAAGzB,SAAS,CAAC0B,WAAW,CAACX,OAAO,CAAC;UACvDO,MAAI,CAAClB,KAAK,CAACmB,CAAC,CAAC,CAACI,EAAE,GAAGZ,OAAO;UAC1B;QACF;MACF;IAAC;EACH;EAEMa,IAAIA,CAACf,IAAY,EAA4B;IAAA,IAAAgB,MAAA;IAAA,OAAArB,iBAAA;MACjD,IAAMsB,QAAQ,GAAGD,MAAI,CAACzB,KAAK,CAACc,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,QAAQ,KAAKP,IAAI,CAAC;MACpE,IAAIiB,QAAQ,CAACN,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAIzB,iBAAiB,CAAC,CAAC;MAC/B;MACA,IAAI+B,QAAQ,CAACN,MAAM,GAAG,CAAC,EAAE;QACvB,MAAM,IAAIb,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAMoB,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAAC;MAE/B,OAAO;QACLV,QAAQ,EAAEW,WAAW,CAACX,QAAQ;QAC9BK,QAAQ,EAAEM,WAAW,CAACN,QAAQ;QAC9BE,EAAE,EAAEI,WAAW,CAACX,QAAQ;QACxBY,IAAI,EAAED,WAAW,CAACC;MACpB,CAAC;IAAC;EACJ;EAEAC,eAAeA,CAACpB,IAAY,EAA4B;IACtD,MAAM,IAAIF,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAEA,eAAeT,eAAe","ignoreList":[]}
@@ -53,7 +53,7 @@ export class MockFileStorageTable {
53
53
  return _asyncToGenerator(function* () {
54
54
  var _this$onUpdateCallbac;
55
55
  var loadedViewportData = yield _this.getViewportData();
56
- (_this$onUpdateCallbac = _this.onUpdateCallback) === null || _this$onUpdateCallbac === void 0 ? void 0 : _this$onUpdateCallbac.call(_this, loadedViewportData);
56
+ (_this$onUpdateCallbac = _this.onUpdateCallback) === null || _this$onUpdateCallbac === void 0 || _this$onUpdateCallbac.call(_this, loadedViewportData);
57
57
  })();
58
58
  }
59
59
  setFilters(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"MockFileStorageTable.js","names":["isDirectory","MockFileStorageTable","constructor","items","_defineProperty","setSearch","search","setExpanded","path","expanded","charAt","length","i","item","concat","filename","isExpanded","Promise","resolve","collapseAll","getViewportData","offset","getSnapshot","sortedRanges","_asyncToGenerator","Error","setViewport","viewport","_this","_this$onUpdateCallbac","loadedViewportData","onUpdateCallback","call","setFilters","config","setSorts","setReversed","isReversed","close","onUpdate","callback","jest","fn","size"],"sources":["../../src/panels/MockFileStorageTable.ts"],"sourcesContent":["import {\n type FileStorageItem,\n type FileStorageTable,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport {\n type ViewportData,\n type IndexRange,\n type StorageSnapshot,\n type StorageTableViewport,\n type FilterConfig,\n type SortConfig,\n type ViewportUpdateCallback,\n type StorageListenerRemover,\n} from '@deephaven/storage';\n\nexport class MockFileStorageTable implements FileStorageTable {\n private items: FileStorageItem[];\n\n private onUpdateCallback?: ViewportUpdateCallback<FileStorageItem>;\n\n constructor(items: FileStorageItem[]) {\n this.items = items;\n }\n\n /* eslint-disable class-methods-use-this */\n setSearch(search: string): void {\n // no-op\n }\n\n setExpanded(path: string, expanded: boolean): Promise<void> {\n // only sets expansion for the FileExplorer in NewItemModal\n if (path.charAt(path.length - 1) === '/') {\n for (let i = 0; i < this.items.length; i += 1) {\n const item = this.items[i];\n if (\n isDirectory(item) &&\n (`${item.filename}/` === path || item.filename === path)\n ) {\n item.isExpanded = expanded;\n }\n }\n }\n return Promise.resolve();\n }\n\n collapseAll(): Promise<void> {\n for (let i = 0; i < this.items.length; i += 1) {\n const item = this.items[i];\n if (isDirectory(item)) {\n item.isExpanded = false;\n }\n }\n return Promise.resolve();\n }\n\n getViewportData(): Promise<ViewportData<FileStorageItem>> {\n return Promise.resolve({\n items: this.items, // Fill in with mock items\n offset: 0,\n });\n }\n\n async getSnapshot(\n sortedRanges: IndexRange[]\n ): Promise<StorageSnapshot<FileStorageItem>> {\n throw new Error('Method not implemented.');\n }\n\n async setViewport(viewport: StorageTableViewport): Promise<void> {\n const loadedViewportData = await this.getViewportData();\n this.onUpdateCallback?.(loadedViewportData);\n }\n\n setFilters(config: FilterConfig[] | null): void {\n // no-op\n }\n\n setSorts(config: SortConfig[] | null): void {\n // no-op\n }\n\n setReversed(isReversed: boolean): void {\n // no-op\n }\n\n close(): void {\n // no-op\n }\n\n onUpdate(\n callback: ViewportUpdateCallback<FileStorageItem>\n ): StorageListenerRemover {\n this.onUpdateCallback = callback;\n return jest.fn();\n }\n\n get size(): number {\n return this.items.length;\n }\n}\n\nexport default MockFileStorageTable;\n"],"mappings":";;;;;AAAA,SAGEA,WAAW,QACN,0BAA0B;AAYjC,OAAO,MAAMC,oBAAoB,CAA6B;EAK5DC,WAAWA,CAACC,KAAwB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACpC,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;;EAEA;EACAE,SAASA,CAACC,MAAc,EAAQ;IAC9B;EAAA;EAGFC,WAAWA,CAACC,IAAY,EAAEC,QAAiB,EAAiB;IAC1D;IACA,IAAID,IAAI,CAACE,MAAM,CAACF,IAAI,CAACG,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;MACxC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACT,KAAK,CAACQ,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAMC,IAAI,GAAG,IAAI,CAACV,KAAK,CAACS,CAAC,CAAC;QAC1B,IACEZ,WAAW,CAACa,IAAI,CAAC,KAChB,GAAAC,MAAA,CAAGD,IAAI,CAACE,QAAQ,WAAQP,IAAI,IAAIK,IAAI,CAACE,QAAQ,KAAKP,IAAI,CAAC,EACxD;UACAK,IAAI,CAACG,UAAU,GAAGP,QAAQ;QAC5B;MACF;IACF;IACA,OAAOQ,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAC,WAAWA,CAAA,EAAkB;IAC3B,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACT,KAAK,CAACQ,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;MAC7C,IAAMC,IAAI,GAAG,IAAI,CAACV,KAAK,CAACS,CAAC,CAAC;MAC1B,IAAIZ,WAAW,CAACa,IAAI,CAAC,EAAE;QACrBA,IAAI,CAACG,UAAU,GAAG,KAAK;MACzB;IACF;IACA,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAE,eAAeA,CAAA,EAA2C;IACxD,OAAOH,OAAO,CAACC,OAAO,CAAC;MACrBf,KAAK,EAAE,IAAI,CAACA,KAAK;MAAE;MACnBkB,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAEMC,WAAWA,CACfC,YAA0B,EACiB;IAAA,OAAAC,iBAAA;MAC3C,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;IAAC;EAC7C;EAEMC,WAAWA,CAACC,QAA8B,EAAiB;IAAA,IAAAC,KAAA;IAAA,OAAAJ,iBAAA;MAAA,IAAAK,qBAAA;MAC/D,IAAMC,kBAAkB,SAASF,KAAI,CAACR,eAAe,CAAC,CAAC;MACvD,CAAAS,qBAAA,GAAAD,KAAI,CAACG,gBAAgB,cAAAF,qBAAA,uBAArBA,qBAAA,CAAAG,IAAA,CAAAJ,KAAI,EAAoBE,kBAAkB,CAAC;IAAC;EAC9C;EAEAG,UAAUA,CAACC,MAA6B,EAAQ;IAC9C;EAAA;EAGFC,QAAQA,CAACD,MAA2B,EAAQ;IAC1C;EAAA;EAGFE,WAAWA,CAACC,UAAmB,EAAQ;IACrC;EAAA;EAGFC,KAAKA,CAAA,EAAS;IACZ;EAAA;EAGFC,QAAQA,CACNC,QAAiD,EACzB;IACxB,IAAI,CAACT,gBAAgB,GAAGS,QAAQ;IAChC,OAAOC,IAAI,CAACC,EAAE,CAAC,CAAC;EAClB;EAEA,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACxC,KAAK,CAACQ,MAAM;EAC1B;AACF;AAEA,eAAeV,oBAAoB"}
1
+ {"version":3,"file":"MockFileStorageTable.js","names":["isDirectory","MockFileStorageTable","constructor","items","_defineProperty","setSearch","search","setExpanded","path","expanded","charAt","length","i","item","concat","filename","isExpanded","Promise","resolve","collapseAll","getViewportData","offset","getSnapshot","sortedRanges","_asyncToGenerator","Error","setViewport","viewport","_this","_this$onUpdateCallbac","loadedViewportData","onUpdateCallback","call","setFilters","config","setSorts","setReversed","isReversed","close","onUpdate","callback","jest","fn","size"],"sources":["../../src/panels/MockFileStorageTable.ts"],"sourcesContent":["import {\n type FileStorageItem,\n type FileStorageTable,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport {\n type ViewportData,\n type IndexRange,\n type StorageSnapshot,\n type StorageTableViewport,\n type FilterConfig,\n type SortConfig,\n type ViewportUpdateCallback,\n type StorageListenerRemover,\n} from '@deephaven/storage';\n\nexport class MockFileStorageTable implements FileStorageTable {\n private items: FileStorageItem[];\n\n private onUpdateCallback?: ViewportUpdateCallback<FileStorageItem>;\n\n constructor(items: FileStorageItem[]) {\n this.items = items;\n }\n\n /* eslint-disable class-methods-use-this */\n setSearch(search: string): void {\n // no-op\n }\n\n setExpanded(path: string, expanded: boolean): Promise<void> {\n // only sets expansion for the FileExplorer in NewItemModal\n if (path.charAt(path.length - 1) === '/') {\n for (let i = 0; i < this.items.length; i += 1) {\n const item = this.items[i];\n if (\n isDirectory(item) &&\n (`${item.filename}/` === path || item.filename === path)\n ) {\n item.isExpanded = expanded;\n }\n }\n }\n return Promise.resolve();\n }\n\n collapseAll(): Promise<void> {\n for (let i = 0; i < this.items.length; i += 1) {\n const item = this.items[i];\n if (isDirectory(item)) {\n item.isExpanded = false;\n }\n }\n return Promise.resolve();\n }\n\n getViewportData(): Promise<ViewportData<FileStorageItem>> {\n return Promise.resolve({\n items: this.items, // Fill in with mock items\n offset: 0,\n });\n }\n\n async getSnapshot(\n sortedRanges: IndexRange[]\n ): Promise<StorageSnapshot<FileStorageItem>> {\n throw new Error('Method not implemented.');\n }\n\n async setViewport(viewport: StorageTableViewport): Promise<void> {\n const loadedViewportData = await this.getViewportData();\n this.onUpdateCallback?.(loadedViewportData);\n }\n\n setFilters(config: FilterConfig[] | null): void {\n // no-op\n }\n\n setSorts(config: SortConfig[] | null): void {\n // no-op\n }\n\n setReversed(isReversed: boolean): void {\n // no-op\n }\n\n close(): void {\n // no-op\n }\n\n onUpdate(\n callback: ViewportUpdateCallback<FileStorageItem>\n ): StorageListenerRemover {\n this.onUpdateCallback = callback;\n return jest.fn();\n }\n\n get size(): number {\n return this.items.length;\n }\n}\n\nexport default MockFileStorageTable;\n"],"mappings":";;;;;AAAA,SAGEA,WAAW,QACN,0BAA0B;AAYjC,OAAO,MAAMC,oBAAoB,CAA6B;EAK5DC,WAAWA,CAACC,KAAwB,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACpC,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;;EAEA;EACAE,SAASA,CAACC,MAAc,EAAQ;IAC9B;EAAA;EAGFC,WAAWA,CAACC,IAAY,EAAEC,QAAiB,EAAiB;IAC1D;IACA,IAAID,IAAI,CAACE,MAAM,CAACF,IAAI,CAACG,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;MACxC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACT,KAAK,CAACQ,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;QAC7C,IAAMC,IAAI,GAAG,IAAI,CAACV,KAAK,CAACS,CAAC,CAAC;QAC1B,IACEZ,WAAW,CAACa,IAAI,CAAC,KAChB,GAAAC,MAAA,CAAGD,IAAI,CAACE,QAAQ,WAAQP,IAAI,IAAIK,IAAI,CAACE,QAAQ,KAAKP,IAAI,CAAC,EACxD;UACAK,IAAI,CAACG,UAAU,GAAGP,QAAQ;QAC5B;MACF;IACF;IACA,OAAOQ,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAC,WAAWA,CAAA,EAAkB;IAC3B,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACT,KAAK,CAACQ,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;MAC7C,IAAMC,IAAI,GAAG,IAAI,CAACV,KAAK,CAACS,CAAC,CAAC;MAC1B,IAAIZ,WAAW,CAACa,IAAI,CAAC,EAAE;QACrBA,IAAI,CAACG,UAAU,GAAG,KAAK;MACzB;IACF;IACA,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAE,eAAeA,CAAA,EAA2C;IACxD,OAAOH,OAAO,CAACC,OAAO,CAAC;MACrBf,KAAK,EAAE,IAAI,CAACA,KAAK;MAAE;MACnBkB,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAEMC,WAAWA,CACfC,YAA0B,EACiB;IAAA,OAAAC,iBAAA;MAC3C,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;IAAC;EAC7C;EAEMC,WAAWA,CAACC,QAA8B,EAAiB;IAAA,IAAAC,KAAA;IAAA,OAAAJ,iBAAA;MAAA,IAAAK,qBAAA;MAC/D,IAAMC,kBAAkB,SAASF,KAAI,CAACR,eAAe,CAAC,CAAC;MACvD,CAAAS,qBAAA,GAAAD,KAAI,CAACG,gBAAgB,cAAAF,qBAAA,eAArBA,qBAAA,CAAAG,IAAA,CAAAJ,KAAI,EAAoBE,kBAAkB,CAAC;IAAC;EAC9C;EAEAG,UAAUA,CAACC,MAA6B,EAAQ;IAC9C;EAAA;EAGFC,QAAQA,CAACD,MAA2B,EAAQ;IAC1C;EAAA;EAGFE,WAAWA,CAACC,UAAmB,EAAQ;IACrC;EAAA;EAGFC,KAAKA,CAAA,EAAS;IACZ;EAAA;EAGFC,QAAQA,CACNC,QAAiD,EACzB;IACxB,IAAI,CAACT,gBAAgB,GAAGS,QAAQ;IAChC,OAAOC,IAAI,CAACC,EAAE,CAAC,CAAC;EAClB;EAEA,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACxC,KAAK,CAACQ,MAAM;EAC1B;AACF;AAEA,eAAeV,oBAAoB","ignoreList":[]}
@@ -193,15 +193,13 @@ declare class NotebookPanel extends Component<NotebookPanelProps, NotebookPanelS
193
193
  getDropdownOverflowActions(): DropdownAction[];
194
194
  render(): ReactElement;
195
195
  }
196
- declare const ConnectedNotebookPanel: import("react-redux").ConnectedComponent<typeof NotebookPanel, import("react-redux").Omit<Pick<NotebookPanelProps, "glEventHub" | "glContainer" | "metadata" | "panelState" | "localDashboardId" | "fileStorage" | "notebooksUrl" | "updateNotebookSettings"> & Partial<Pick<NotebookPanelProps, "notebookSettings" | "session" | "isDashboardActive" | "isPreview" | "sessionLanguage">> & Partial<Pick<{
197
- isDashboardActive: boolean;
198
- isPreview: boolean;
199
- session: null;
200
- sessionLanguage: null;
201
- notebookSettings: {
202
- isMinimapEnabled: boolean;
203
- };
204
- }, never>>, "notebookSettings" | "session" | "fileStorage" | "updateNotebookSettings" | "sessionLanguage"> & {
196
+ declare const ConnectedNotebookPanel: import("react-redux").ConnectedComponent<typeof NotebookPanel, import("react-redux").Omit<Pick<NotebookPanelProps, "glEventHub" | "glContainer" | "metadata" | "localDashboardId" | "panelState" | "fileStorage" | "notebooksUrl" | "updateNotebookSettings"> & {
197
+ notebookSettings?: NotebookSetting | undefined;
198
+ session?: dh.IdeSession | undefined;
199
+ isDashboardActive?: boolean | undefined;
200
+ isPreview?: boolean | undefined;
201
+ sessionLanguage?: string | undefined;
202
+ } & {}, "notebookSettings" | "session" | "fileStorage" | "updateNotebookSettings" | "sessionLanguage"> & {
205
203
  localDashboardId: string;
206
204
  }>;
207
205
  export default ConnectedNotebookPanel;
@@ -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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"}
@@ -25,9 +25,7 @@ import { ConsoleEvent, NotebookEvent } from "../events/index.js";
25
25
  import { getDashboardSessionWrapper } from "../redux/index.js";
26
26
  import Panel from "./CorePanel.js";
27
27
  import "./NotebookPanel.css";
28
- import { jsx as _jsx } from "react/jsx-runtime";
29
- import { jsxs as _jsxs } from "react/jsx-runtime";
30
- import { Fragment as _Fragment } from "react/jsx-runtime";
28
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
31
29
  var MarkdownNotebook = /*#__PURE__*/lazy(() => import('./MarkdownNotebook'));
32
30
  var log = Log.module('NotebookPanel');
33
31
  var DEBOUNCE_PANEL_STATE_UPDATE = 400;
@@ -330,7 +328,7 @@ class NotebookPanel extends Component {
330
328
  assertNotNull(tabElement);
331
329
  var titleElement = tabElement.querySelector('.lm_title');
332
330
  this.tabTitleElement = titleElement;
333
- titleElement === null || titleElement === void 0 ? void 0 : titleElement.classList.add('notebook-title');
331
+ titleElement === null || titleElement === void 0 || titleElement.classList.add('notebook-title');
334
332
  this.setPreviewStatus();
335
333
  }
336
334
  getNotebookValue() {
@@ -648,7 +646,7 @@ class NotebookPanel extends Component {
648
646
  if (!fileMetadata) {
649
647
  return;
650
648
  }
651
- if (FileUtils.hasPath(fileMetadata.itemName) && ( // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
649
+ if (FileUtils.hasPath(fileMetadata.itemName) && (// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
652
650
  yield FileUtils.fileExists(fileStorage, fileMetadata.itemName))) {
653
651
  glEventHub.emit(NotebookEvent.CLOSE_FILE, fileMetadata, {
654
652
  force: true
@@ -738,11 +736,11 @@ class NotebookPanel extends Component {
738
736
  updateEditorWordWrap() {
739
737
  if (this.editor) {
740
738
  var {
741
- settings: _settings
739
+ settings
742
740
  } = this.state;
743
741
  var {
744
742
  wordWrap
745
- } = _settings;
743
+ } = settings;
746
744
  this.editor.updateOptions({
747
745
  wordWrap
748
746
  });
@@ -964,7 +962,7 @@ class NotebookPanel extends Component {
964
962
  }
965
963
  handleResize() {
966
964
  var _this$notebook2;
967
- (_this$notebook2 = this.notebook) === null || _this$notebook2 === void 0 ? void 0 : _this$notebook2.updateDimensions();
965
+ (_this$notebook2 = this.notebook) === null || _this$notebook2 === void 0 || _this$notebook2.updateDimensions();
968
966
  }
969
967
  handleRunCommand(command) {
970
968
  this.runCommand(command);
@@ -1002,7 +1000,7 @@ class NotebookPanel extends Component {
1002
1000
  handleShow() {
1003
1001
  var _this$notebook3;
1004
1002
  log.debug('handleShow');
1005
- (_this$notebook3 = this.notebook) === null || _this$notebook3 === void 0 ? void 0 : _this$notebook3.updateDimensions();
1003
+ (_this$notebook3 = this.notebook) === null || _this$notebook3 === void 0 || _this$notebook3.updateDimensions();
1006
1004
  }
1007
1005
  handlePanelDropped(droppedId) {
1008
1006
  var {
@@ -1212,7 +1210,7 @@ class NotebookPanel extends Component {
1212
1210
  }];
1213
1211
  var portal = tab === null || tab === void 0 ? void 0 : tab.element.find('.lm_title_before').get(0);
1214
1212
  return /*#__PURE__*/_jsxs(_Fragment, {
1215
- children: [portal != null && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsx("span", {
1213
+ children: [portal != null && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx("span", {
1216
1214
  className: classNames(NotebookPanel.UNSAVED_INDICATOR_CLASS_NAME, {
1217
1215
  [NotebookPanel.UNSAVED_STATUS_CLASS_NAME]: changeCount !== savedChangeCount
1218
1216
  })
@@ -1304,7 +1302,9 @@ class NotebookPanel extends Component {
1304
1302
  }
1305
1303
  })]
1306
1304
  }), isMarkdown && /*#__PURE__*/_jsx(Suspense, {
1307
- fallback: /*#__PURE__*/_jsx(LoadingOverlay, {}),
1305
+ fallback: /*#__PURE__*/_jsx(LoadingOverlay, {
1306
+ "data-testid": "notebook-panel-loading"
1307
+ }),
1308
1308
  children: /*#__PURE__*/_jsx(MarkdownNotebook, {
1309
1309
  content: (_settings$value = settings.value) !== null && _settings$value !== void 0 ? _settings$value : '',
1310
1310
  onLinkClick: this.handleLinkClick,