@deephaven/dashboard-core-plugins 0.6.1-alpha.5 → 0.6.1-markdownnotebooks.5

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 (33) hide show
  1. package/dist/ConsolePlugin.d.ts.map +1 -1
  2. package/dist/ConsolePlugin.js +11 -5
  3. package/dist/ConsolePlugin.js.map +1 -1
  4. package/dist/controls/ControlType.d.ts +1 -0
  5. package/dist/controls/ControlType.d.ts.map +1 -1
  6. package/dist/controls/ControlType.js +2 -0
  7. package/dist/controls/ControlType.js.map +1 -1
  8. package/dist/linker/Linker.d.ts +13 -13
  9. package/dist/linker/Linker.d.ts.map +1 -1
  10. package/dist/linker/Linker.js +6 -5
  11. package/dist/linker/Linker.js.map +1 -1
  12. package/dist/panels/FileExplorerPanel.js.map +1 -1
  13. package/dist/panels/IrisGridPanel.d.ts +3 -9
  14. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  15. package/dist/panels/IrisGridPanel.js +11 -40
  16. package/dist/panels/IrisGridPanel.js.map +1 -1
  17. package/dist/panels/MarkdownNotebookContainer.d.ts +21 -0
  18. package/dist/panels/MarkdownNotebookContainer.d.ts.map +1 -0
  19. package/dist/panels/MarkdownNotebookContainer.js +35 -0
  20. package/dist/panels/MarkdownNotebookContainer.js.map +1 -0
  21. package/dist/panels/MarkdownNotebookEditor.d.ts +46 -0
  22. package/dist/panels/MarkdownNotebookEditor.d.ts.map +1 -0
  23. package/dist/panels/MarkdownNotebookEditor.js +257 -0
  24. package/dist/panels/MarkdownNotebookEditor.js.map +1 -0
  25. package/dist/panels/MarkdownNotebookPanel.css +127 -0
  26. package/dist/panels/MarkdownNotebookPanel.css.map +1 -0
  27. package/dist/panels/MarkdownNotebookPanel.d.ts +91 -0
  28. package/dist/panels/MarkdownNotebookPanel.d.ts.map +1 -0
  29. package/dist/panels/MarkdownNotebookPanel.js +448 -0
  30. package/dist/panels/MarkdownNotebookPanel.js.map +1 -0
  31. package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +16 -16
@@ -0,0 +1,35 @@
1
+ import React, { PureComponent } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import classNames from 'classnames';
4
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
+ import { vsEdit } from '@deephaven/icons';
6
+ export default class MarkdownNotebookContainer extends PureComponent {
7
+ render() {
8
+ var {
9
+ isEditing,
10
+ children,
11
+ onDoubleClick
12
+ } = this.props;
13
+ return /*#__PURE__*/React.createElement("div", {
14
+ className: "markdown-notebook-container h-100 w-100",
15
+ onDoubleClick: onDoubleClick
16
+ }, onDoubleClick && /*#__PURE__*/React.createElement("div", {
17
+ className: classNames('text-muted', 'edit-hint', {
18
+ viewing: !isEditing
19
+ })
20
+ }, /*#__PURE__*/React.createElement("span", null, "double-click to edit ", /*#__PURE__*/React.createElement(FontAwesomeIcon, {
21
+ icon: vsEdit
22
+ }))), children);
23
+ }
24
+
25
+ }
26
+ MarkdownNotebookContainer.propTypes = {
27
+ onDoubleClick: PropTypes.func,
28
+ children: PropTypes.node.isRequired,
29
+ isEditing: PropTypes.bool
30
+ };
31
+ MarkdownNotebookContainer.defaultProps = {
32
+ isEditing: false,
33
+ onDoubleClick: null
34
+ };
35
+ //# sourceMappingURL=MarkdownNotebookContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/panels/MarkdownNotebookContainer.jsx"],"names":["React","PureComponent","PropTypes","classNames","FontAwesomeIcon","vsEdit","MarkdownNotebookContainer","render","isEditing","children","onDoubleClick","props","viewing","propTypes","func","node","isRequired","bool","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,QAAuB,kBAAvB;AAEA,eAAe,MAAMC,yBAAN,SAAwCL,aAAxC,CAAsD;AACnEM,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,SAAF;AAAaC,MAAAA,QAAb;AAAuBC,MAAAA;AAAvB,QAAyC,KAAKC,KAApD;AAEA,wBACE;AACE,MAAA,SAAS,EAAC,yCADZ;AAEE,MAAA,aAAa,EAAED;AAFjB,OAIGA,aAAa,iBACZ;AACE,MAAA,SAAS,EAAEP,UAAU,CAAC,YAAD,EAAe,WAAf,EAA4B;AAC/CS,QAAAA,OAAO,EAAE,CAACJ;AADqC,OAA5B;AADvB,oBAKE,wEACuB,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEH;AAAvB,MADvB,CALF,CALJ,EAeGI,QAfH,CADF;AAmBD;;AAvBkE;AA0BrEH,yBAAyB,CAACO,SAA1B,GAAsC;AACpCH,EAAAA,aAAa,EAAER,SAAS,CAACY,IADW;AAEpCL,EAAAA,QAAQ,EAAEP,SAAS,CAACa,IAAV,CAAeC,UAFW;AAGpCR,EAAAA,SAAS,EAAEN,SAAS,CAACe;AAHe,CAAtC;AAMAX,yBAAyB,CAACY,YAA1B,GAAyC;AACvCV,EAAAA,SAAS,EAAE,KAD4B;AAEvCE,EAAAA,aAAa,EAAE;AAFwB,CAAzC","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsEdit } from '@deephaven/icons';\n\nexport default class MarkdownNotebookContainer extends PureComponent {\n render() {\n const { isEditing, children, onDoubleClick } = this.props;\n\n return (\n <div\n className=\"markdown-notebook-container h-100 w-100\"\n onDoubleClick={onDoubleClick}\n >\n {onDoubleClick && (\n <div\n className={classNames('text-muted', 'edit-hint', {\n viewing: !isEditing,\n })}\n >\n <span>\n double-click to edit <FontAwesomeIcon icon={vsEdit} />\n </span>\n </div>\n )}\n {children}\n </div>\n );\n }\n}\n\nMarkdownNotebookContainer.propTypes = {\n onDoubleClick: PropTypes.func,\n children: PropTypes.node.isRequired,\n isEditing: PropTypes.bool,\n};\n\nMarkdownNotebookContainer.defaultProps = {\n isEditing: false,\n onDoubleClick: null,\n};\n"],"file":"MarkdownNotebookContainer.js"}
@@ -0,0 +1,46 @@
1
+ declare class MarkdownNotebookEditor extends React.PureComponent<any, any, any> {
2
+ constructor(props: any);
3
+ handleRunSelected(event: any): void;
4
+ renderCodeBlock(props: any): JSX.Element;
5
+ renderLink(props: any): JSX.Element;
6
+ container: HTMLDivElement | null;
7
+ commands: Map<any, any>;
8
+ codeElements: Map<any, any>;
9
+ editorScrollView: React.RefObject<any>;
10
+ resetBlocks(): void;
11
+ /**
12
+ * @param {number|null} line The line of the code block to start from
13
+ * @returns {number} The next line of the code block to start from
14
+ */
15
+ getNextStartLine(line: number | null): number;
16
+ runCode(command: any): void;
17
+ }
18
+ declare namespace MarkdownNotebookEditor {
19
+ namespace propTypes {
20
+ const isEditing: PropTypes.Requireable<boolean>;
21
+ const onRunCode: PropTypes.Requireable<(...args: any[]) => any>;
22
+ const content: PropTypes.Requireable<string>;
23
+ const onEditorInitialized: PropTypes.Validator<(...args: any[]) => any>;
24
+ const onLinkClick: PropTypes.Requireable<(...args: any[]) => any>;
25
+ const transformImageUri: PropTypes.Requireable<(...args: any[]) => any>;
26
+ const transformLinkUri: PropTypes.Requireable<(...args: any[]) => any>;
27
+ }
28
+ namespace defaultProps {
29
+ const isEditing_1: boolean;
30
+ export { isEditing_1 as isEditing };
31
+ const content_1: string;
32
+ export { content_1 as content };
33
+ const onLinkClick_1: undefined;
34
+ export { onLinkClick_1 as onLinkClick };
35
+ export function onRunCode_1(): void;
36
+ export { onRunCode_1 as onRunCode };
37
+ const transformImageUri_1: undefined;
38
+ export { transformImageUri_1 as transformImageUri };
39
+ const transformLinkUri_1: undefined;
40
+ export { transformLinkUri_1 as transformLinkUri };
41
+ }
42
+ }
43
+ export default MarkdownNotebookEditor;
44
+ import React from "react";
45
+ import PropTypes from "prop-types";
46
+ //# sourceMappingURL=MarkdownNotebookEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownNotebookEditor.d.ts","sourceRoot":"","sources":["../../src/panels/MarkdownNotebookEditor.jsx"],"names":[],"mappings":"AASA;IACE,wBAqBC;IA8BD,oCA4BC;IASD,yCAwDC;IAGD,oCAIC;IAhJC,iCAAqB;IAGrB,wBAAyB;IACzB,4BAA6B;IAC7B,uCAAyC;IAkB3C,oBAIC;IAED;;;OAGG;IACH,uBAHW,MAAM,GAAC,IAAI,GACT,MAAM,CAWlB;IAgCD,4BAKC;CA2HF;;;;;;;;;;;;;;;;;;QAgBY,oCAAQ"}
@@ -0,0 +1,257 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React, { PureComponent } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import Markdown from 'react-markdown';
6
+ import { Button } from '@deephaven/components';
7
+ import { Code, Editor } from '@deephaven/console';
8
+ import classNames from 'classnames';
9
+ import { vsPlay } from '@deephaven/icons';
10
+ import remarkGfm from 'remark-gfm';
11
+ export default class MarkdownNotebookEditor extends PureComponent {
12
+ constructor(props) {
13
+ super(props);
14
+ this.handleRunSelected = this.handleRunSelected.bind(this);
15
+ this.renderCodeBlock = this.renderCodeBlock.bind(this);
16
+ this.renderLink = this.renderLink.bind(this);
17
+ this.container = null; // Map of each code block from it's starting line number to the code within that block
18
+
19
+ this.commands = new Map();
20
+ this.codeElements = new Map();
21
+ this.editorScrollView = /*#__PURE__*/React.createRef();
22
+ this.state = {
23
+ // Keep track if any code has been executed yet. If not, make the run button flash
24
+ hasRunCode: false,
25
+ // Line of the next block to execute. Null to start at the first block
26
+ nextStartLine: null
27
+ };
28
+ }
29
+
30
+ componentDidUpdate(prevProps) {
31
+ var {
32
+ content
33
+ } = this.props;
34
+
35
+ if (prevProps.content !== content) {
36
+ this.resetBlocks();
37
+ }
38
+ }
39
+
40
+ resetBlocks() {
41
+ this.codeElements.clear();
42
+ this.commands.clear();
43
+ this.setState({
44
+ nextStartLine: null
45
+ });
46
+ }
47
+ /**
48
+ * @param {number|null} line The line of the code block to start from
49
+ * @returns {number} The next line of the code block to start from
50
+ */
51
+
52
+
53
+ getNextStartLine(line) {
54
+ var keys = [...this.commands.keys()];
55
+ var nextIndex = keys.findIndex(key => key === line) + 1;
56
+
57
+ if (nextIndex >= keys.length) {
58
+ // We got to the last block, disable
59
+ return null;
60
+ }
61
+
62
+ return keys[nextIndex];
63
+ }
64
+
65
+ handleRunSelected(event) {
66
+ var _this$codeElements$ge, _element$parentElemen;
67
+
68
+ event.preventDefault();
69
+ event.stopPropagation();
70
+ var {
71
+ nextStartLine
72
+ } = this.state;
73
+ var keys = [...this.commands.keys()];
74
+ var keyIndex = keys.findIndex(key => key === nextStartLine || nextStartLine == null);
75
+
76
+ if (keyIndex < 0) {
77
+ return;
78
+ }
79
+
80
+ var startLine = keys[keyIndex];
81
+ var command = this.commands.get(startLine);
82
+ var newNextStartLine = this.getNextStartLine(startLine);
83
+ var element = (_this$codeElements$ge = this.codeElements.get(startLine)) === null || _this$codeElements$ge === void 0 ? void 0 : _this$codeElements$ge.current;
84
+ var nextElement = element === null || element === void 0 ? void 0 : (_element$parentElemen = element.parentElement) === null || _element$parentElemen === void 0 ? void 0 : _element$parentElemen.nextElementSibling;
85
+
86
+ if (nextElement) {
87
+ var {
88
+ offsetTop
89
+ } = nextElement;
90
+ var top = offsetTop;
91
+ this.editorScrollView.current.scroll({
92
+ top,
93
+ left: 0
94
+ });
95
+ }
96
+
97
+ this.runCode(command);
98
+ this.setState({
99
+ nextStartLine: newNextStartLine
100
+ });
101
+ }
102
+
103
+ runCode(command) {
104
+ var {
105
+ onRunCode
106
+ } = this.props;
107
+ onRunCode(command);
108
+ this.setState({
109
+ hasRunCode: true
110
+ });
111
+ }
112
+
113
+ renderCodeBlock(props) {
114
+ var {
115
+ children,
116
+ className,
117
+ inline,
118
+ node
119
+ } = props;
120
+ var {
121
+ hasRunCode,
122
+ nextStartLine
123
+ } = this.state;
124
+ var {
125
+ children: nodeChildren,
126
+ position
127
+ } = node;
128
+ var {
129
+ start
130
+ } = position;
131
+ var {
132
+ line
133
+ } = start;
134
+ var command = nodeChildren[0].value;
135
+ var ref = /*#__PURE__*/React.createRef();
136
+ var isFirstBlock = this.commands.size === 0;
137
+ var isSelected = nextStartLine === line || isFirstBlock && nextStartLine == null && !hasRunCode;
138
+ var language = className !== null && className !== void 0 && className.startsWith('language-') ? className.substring(9) : 'plaintext';
139
+
140
+ if (inline) {
141
+ return /*#__PURE__*/React.createElement("code", {
142
+ className: className
143
+ }, children);
144
+ }
145
+
146
+ this.commands.set(line, command);
147
+ this.codeElements.set(line, ref);
148
+ return /*#__PURE__*/React.createElement("div", {
149
+ className: classNames('markdown-notebook-editor-code-block', {
150
+ 'is-selected': isSelected
151
+ }),
152
+ ref: ref,
153
+ onClick: () => {
154
+ this.setState({
155
+ nextStartLine: line
156
+ });
157
+ },
158
+ role: "presentation"
159
+ }, /*#__PURE__*/React.createElement(Button, {
160
+ kind: "ghost",
161
+ icon: vsPlay,
162
+ className: "btn-play-block",
163
+ onClick: event => {
164
+ event.stopPropagation();
165
+ event.preventDefault();
166
+ this.runCode(command);
167
+ this.setState({
168
+ nextStartLine: line
169
+ });
170
+ },
171
+ tooltip: "Run code"
172
+ }), /*#__PURE__*/React.createElement("code", null, /*#__PURE__*/React.createElement(Code, {
173
+ language: language
174
+ }, React.Children.map(children, child => typeof child === 'string' ? child.trim() : child))));
175
+ } // eslint-disable-next-line class-methods-use-this
176
+
177
+
178
+ renderLink(props) {
179
+ var {
180
+ onLinkClick
181
+ } = this.props; // eslint-disable-next-line react/jsx-props-no-spreading,jsx-a11y/anchor-has-content,jsx-a11y/no-static-element-interactions
182
+
183
+ return /*#__PURE__*/React.createElement("a", _extends({}, props, {
184
+ onClick: onLinkClick
185
+ }));
186
+ }
187
+
188
+ render() {
189
+ var {
190
+ isEditing,
191
+ content,
192
+ onEditorInitialized,
193
+ transformImageUri,
194
+ transformLinkUri
195
+ } = this.props;
196
+ var {
197
+ hasRunCode,
198
+ nextStartLine
199
+ } = this.state;
200
+ return /*#__PURE__*/React.createElement("div", {
201
+ className: "markdown-notebook-editor-container",
202
+ ref: container => {
203
+ this.container = container;
204
+ }
205
+ }, /*#__PURE__*/React.createElement("div", {
206
+ className: "markdown-notebook-editor-toolbar"
207
+ }, /*#__PURE__*/React.createElement(Button, {
208
+ className: classNames('btn-play-selected-cell', {
209
+ flashing: !hasRunCode
210
+ }),
211
+ kind: "ghost",
212
+ icon: vsPlay,
213
+ onClick: this.handleRunSelected,
214
+ tooltip: "Run code and select next",
215
+ disabled: hasRunCode && nextStartLine == null
216
+ }, "Run Selected Code")), /*#__PURE__*/React.createElement("div", {
217
+ className: "markdown-notebook-editor",
218
+ ref: this.editorScrollView
219
+ }, isEditing ? /*#__PURE__*/React.createElement(Editor, {
220
+ settings: {
221
+ language: 'markdown',
222
+ value: content,
223
+ lineNumbers: 'off'
224
+ },
225
+ onEditorInitialized: onEditorInitialized
226
+ }) : /*#__PURE__*/React.createElement(Markdown, {
227
+ components: {
228
+ code: this.renderCodeBlock,
229
+ a: this.renderLink
230
+ },
231
+ linkTarget: "_blank",
232
+ remarkPlugins: [remarkGfm],
233
+ transformLinkUri: transformLinkUri,
234
+ transformImageUri: transformImageUri,
235
+ includeElementIndex: true
236
+ }, content)));
237
+ }
238
+
239
+ }
240
+ MarkdownNotebookEditor.propTypes = {
241
+ isEditing: PropTypes.bool,
242
+ onRunCode: PropTypes.func,
243
+ content: PropTypes.string,
244
+ onEditorInitialized: PropTypes.func.isRequired,
245
+ onLinkClick: PropTypes.func,
246
+ transformImageUri: PropTypes.func,
247
+ transformLinkUri: PropTypes.func
248
+ };
249
+ MarkdownNotebookEditor.defaultProps = {
250
+ isEditing: false,
251
+ content: '',
252
+ onLinkClick: undefined,
253
+ onRunCode: () => {},
254
+ transformImageUri: undefined,
255
+ transformLinkUri: undefined
256
+ };
257
+ //# sourceMappingURL=MarkdownNotebookEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/panels/MarkdownNotebookEditor.jsx"],"names":["React","PureComponent","PropTypes","Markdown","Button","Code","Editor","classNames","vsPlay","remarkGfm","MarkdownNotebookEditor","constructor","props","handleRunSelected","bind","renderCodeBlock","renderLink","container","commands","Map","codeElements","editorScrollView","createRef","state","hasRunCode","nextStartLine","componentDidUpdate","prevProps","content","resetBlocks","clear","setState","getNextStartLine","line","keys","nextIndex","findIndex","key","length","event","preventDefault","stopPropagation","keyIndex","startLine","command","get","newNextStartLine","element","current","nextElement","parentElement","nextElementSibling","offsetTop","top","scroll","left","runCode","onRunCode","children","className","inline","node","nodeChildren","position","start","value","ref","isFirstBlock","size","isSelected","language","startsWith","substring","set","Children","map","child","trim","onLinkClick","render","isEditing","onEditorInitialized","transformImageUri","transformLinkUri","flashing","lineNumbers","code","a","propTypes","bool","func","string","isRequired","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport Markdown from 'react-markdown';\nimport { Button } from '@deephaven/components';\nimport { Code, Editor } from '@deephaven/console';\nimport classNames from 'classnames';\nimport { vsPlay } from '@deephaven/icons';\nimport remarkGfm from 'remark-gfm';\n\nexport default class MarkdownNotebookEditor extends PureComponent {\n constructor(props) {\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 this.container = null;\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 // 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 componentDidUpdate(prevProps) {\n const { content } = this.props;\n if (prevProps.content !== content) {\n this.resetBlocks();\n }\n }\n\n resetBlocks() {\n this.codeElements.clear();\n this.commands.clear();\n this.setState({ nextStartLine: null });\n }\n\n /**\n * @param {number|null} line The line of the code block to start from\n * @returns {number} The next line of the code block to start from\n */\n getNextStartLine(line) {\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) {\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) {\n const { offsetTop } = nextElement;\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) {\n const { onRunCode } = this.props;\n onRunCode(command);\n\n this.setState({ hasRunCode: true });\n }\n\n renderCodeBlock(props) {\n const { children, className, inline, node } = props;\n const { hasRunCode, nextStartLine } = this.state;\n const { children: nodeChildren, position } = node;\n const { start } = position;\n const { line } = start;\n const command = nodeChildren[0].value;\n const ref = React.createRef();\n const isFirstBlock = this.commands.size === 0;\n const isSelected =\n nextStartLine === line ||\n (isFirstBlock && nextStartLine == null && !hasRunCode);\n const language = className?.startsWith('language-')\n ? className.substring(9)\n : 'plaintext';\n\n if (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-editor-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 // eslint-disable-next-line class-methods-use-this\n renderLink(props) {\n const { onLinkClick } = this.props;\n // eslint-disable-next-line react/jsx-props-no-spreading,jsx-a11y/anchor-has-content,jsx-a11y/no-static-element-interactions\n return <a {...props} onClick={onLinkClick} />;\n }\n\n render() {\n const {\n isEditing,\n content,\n onEditorInitialized,\n transformImageUri,\n transformLinkUri,\n } = this.props;\n const { hasRunCode, nextStartLine } = this.state;\n return (\n <div\n className=\"markdown-notebook-editor-container\"\n ref={container => {\n this.container = container;\n }}\n >\n <div className=\"markdown-notebook-editor-toolbar\">\n <Button\n className={classNames('btn-play-selected-cell', {\n flashing: !hasRunCode,\n })}\n kind=\"ghost\"\n icon={vsPlay}\n onClick={this.handleRunSelected}\n tooltip=\"Run code and select next\"\n disabled={hasRunCode && nextStartLine == null}\n >\n Run Selected Code\n </Button>\n </div>\n <div className=\"markdown-notebook-editor\" ref={this.editorScrollView}>\n {isEditing ? (\n <Editor\n settings={{\n language: 'markdown',\n value: content,\n lineNumbers: 'off',\n }}\n onEditorInitialized={onEditorInitialized}\n />\n ) : (\n <Markdown\n components={{ code: this.renderCodeBlock, a: this.renderLink }}\n linkTarget=\"_blank\"\n remarkPlugins={[remarkGfm]}\n transformLinkUri={transformLinkUri}\n transformImageUri={transformImageUri}\n includeElementIndex\n >\n {content}\n </Markdown>\n )}\n </div>\n </div>\n );\n }\n}\n\nMarkdownNotebookEditor.propTypes = {\n isEditing: PropTypes.bool,\n onRunCode: PropTypes.func,\n content: PropTypes.string,\n onEditorInitialized: PropTypes.func.isRequired,\n onLinkClick: PropTypes.func,\n transformImageUri: PropTypes.func,\n transformLinkUri: PropTypes.func,\n};\n\nMarkdownNotebookEditor.defaultProps = {\n isEditing: false,\n content: '',\n onLinkClick: undefined,\n onRunCode: () => {},\n transformImageUri: undefined,\n transformLinkUri: undefined,\n};\n"],"file":"MarkdownNotebookEditor.js"}
@@ -0,0 +1,127 @@
1
+ .markdown-notebook-title.is-preview {
2
+ font-style: italic;
3
+ }
4
+
5
+ .markdown-notebook-container .markdown-notebook-editor-container {
6
+ width: 100%;
7
+ height: 100%;
8
+ display: flex;
9
+ flex-direction: column;
10
+ }
11
+ .markdown-notebook-container .markdown-notebook-editor-toolbar {
12
+ display: flex;
13
+ align-items: center;
14
+ padding: 0.25rem;
15
+ width: 100%;
16
+ flex: 0 0 36px;
17
+ border-bottom: 2px solid #1a171a;
18
+ }
19
+ .markdown-notebook-container .markdown-notebook-editor-toolbar .btn-play-selected-cell {
20
+ color: #9edc6f;
21
+ min-height: 34px;
22
+ }
23
+ .markdown-notebook-container .edit-hint {
24
+ position: absolute;
25
+ top: 0;
26
+ right: 0;
27
+ padding: 5px 20px;
28
+ text-align: right;
29
+ width: 100%;
30
+ min-height: 30px;
31
+ height: 30px;
32
+ opacity: 0;
33
+ user-select: none;
34
+ transition: opacity 0.15s ease-out;
35
+ pointer-events: none;
36
+ }
37
+ .markdown-notebook-container .markdown-notebook-editor {
38
+ flex-grow: 1;
39
+ width: 100%;
40
+ padding: 0 15px;
41
+ overflow: auto;
42
+ position: relative;
43
+ scroll-behavior: smooth;
44
+ }
45
+ .markdown-notebook-container .markdown-notebook-editor h1,
46
+ .markdown-notebook-container .markdown-notebook-editor h2,
47
+ .markdown-notebook-container .markdown-notebook-editor h3 {
48
+ margin-top: 3rem;
49
+ }
50
+ .markdown-notebook-container:hover .edit-hint.viewing {
51
+ opacity: 1;
52
+ }
53
+ .markdown-notebook-container blockquote {
54
+ border-left: 0.25em solid #929192;
55
+ padding: 0 1em;
56
+ color: #f0f0ee;
57
+ }
58
+ .markdown-notebook-container pre {
59
+ overflow: hidden;
60
+ }
61
+ .markdown-notebook-container pre > code {
62
+ display: block;
63
+ padding: 0.5rem;
64
+ }
65
+ .markdown-notebook-container a {
66
+ color: #4878ea;
67
+ }
68
+ .markdown-notebook-container a:visited {
69
+ color: #aa9af4;
70
+ }
71
+ .markdown-notebook-container .markdown-notebook-editor-code-block {
72
+ position: relative;
73
+ border-radius: 0 4px 4px 0;
74
+ }
75
+ .markdown-notebook-container .markdown-notebook-editor-code-block .btn-play-block {
76
+ color: #9edc6f;
77
+ opacity: 0;
78
+ position: absolute;
79
+ top: 0;
80
+ right: 0;
81
+ margin: 3px;
82
+ transition: opacity 0.15s ease-out;
83
+ }
84
+ .markdown-notebook-container .markdown-notebook-editor-code-block code {
85
+ color: #f0f0ee;
86
+ background: #403e41;
87
+ padding: 0.5rem;
88
+ border-radius: 4px;
89
+ border: 1px solid #1a171a;
90
+ overflow: auto;
91
+ display: block;
92
+ }
93
+ .markdown-notebook-container .markdown-notebook-editor-code-block.is-selected::after {
94
+ position: absolute;
95
+ top: 0;
96
+ left: 0;
97
+ bottom: 0;
98
+ width: 5px;
99
+ margin: 1px 0 1px 0;
100
+ background: #4878ea;
101
+ content: "";
102
+ pointer-events: none;
103
+ border-radius: 4px 0 0 4px;
104
+ }
105
+ .markdown-notebook-container .markdown-notebook-editor-code-block.is-selected .btn-play-block, .markdown-notebook-container .markdown-notebook-editor-code-block:hover .btn-play-block {
106
+ opacity: 1;
107
+ }
108
+ .markdown-notebook-container .flashing {
109
+ animation-duration: 1s;
110
+ animation-name: flash;
111
+ animation-timing-function: ease-in-out;
112
+ animation-iteration-count: infinite;
113
+ }
114
+
115
+ @keyframes flash {
116
+ 0% {
117
+ text-shadow: 0 0 5px #2d2a2e, 0 0 20px #2d2a2e;
118
+ }
119
+ 50% {
120
+ text-shadow: 0 0 2px rgba(255, 255, 255, 0.5), 0 0 10px #9edc6f;
121
+ }
122
+ 100% {
123
+ text-shadow: 0 0 5px #2d2a2e, 0 0 20px #2d2a2e;
124
+ }
125
+ }
126
+
127
+ /*# sourceMappingURL=MarkdownNotebookPanel.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../src/panels/MarkdownNotebookPanel.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAME;EACE;;;AAKF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,SCpBO;EDqBP;EACA;EACA;;AACA;EACE,OErBE;EFsBF;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA,YAtCe;EAuCf,QAvCe;EAwCf;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGE;;AAIJ;EACE;;AAGF;EACE;EACA;EACA,OExDa;;AF2Df;EACE;;AAGF;EACE;EACA,SC3EO;;AD8ET;EACE,OEtEY;;AFwEZ;EACE,OE7EG;;AFiFP;EACE;EACA;;AAEA;EACE,OExFE;EFyFF;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE,OE3FW;EF4FX,YEjFK;EFkFL,SCvGK;EDwGL,eEcU;EFbV;EACA;EACA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA,YE7GQ;EF8GR;EACA;EACA;;AAMF;EACE;;AAKN;EACE;EACA;EACA;EACA;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE","file":"MarkdownNotebookPanel.css"}
@@ -0,0 +1,91 @@
1
+ export class MarkdownNotebookPanel extends React.Component<any, any, any> {
2
+ static COMPONENT: string;
3
+ constructor(props: any);
4
+ handleContainerDoubleClick(event: any): void;
5
+ handleEditorInitialized(editor: any): void;
6
+ handleEditorBlur(event: any): void;
7
+ handleEditorResize(): void;
8
+ /**
9
+ * @param {MouseEvent} event The click event from clicking on the link
10
+ */
11
+ handleLinkClick(event: MouseEvent): void;
12
+ handleTab(tab: any): void;
13
+ handleRunCommand(command: any): void;
14
+ /**
15
+ * Transform the link URI to load from where the notebook is if it's relative
16
+ * @param {String} src The link to transform
17
+ * @returns String the transformed link
18
+ */
19
+ transformLinkUri(src: string): string;
20
+ pending: Pending;
21
+ markdownEditor: MarkdownNotebookEditor | null;
22
+ editor: any;
23
+ initNotebookContent(): void;
24
+ initTab(tab: any): void;
25
+ tabTitleElement: any;
26
+ setPreviewStatus(): void;
27
+ registerFileMetadata(fileMetadata: any, isPreview: any): void;
28
+ setEditorPosition(clickPositionY: any): void;
29
+ }
30
+ export namespace MarkdownNotebookPanel {
31
+ namespace propTypes {
32
+ const id: PropTypes.Validator<string>;
33
+ const fileStorage: PropTypes.Validator<PropTypes.InferProps<{
34
+ deleteFile: PropTypes.Validator<(...args: any[]) => any>;
35
+ loadFile: PropTypes.Validator<(...args: any[]) => any>;
36
+ saveFile: PropTypes.Validator<(...args: any[]) => any>;
37
+ }>>;
38
+ const glContainer: PropTypes.Validator<PropTypes.InferProps<{
39
+ on: PropTypes.Requireable<(...args: any[]) => any>;
40
+ off: PropTypes.Requireable<(...args: any[]) => any>;
41
+ isHidden: PropTypes.Requireable<boolean>;
42
+ tab: PropTypes.Requireable<PropTypes.InferProps<{
43
+ header: PropTypes.Requireable<PropTypes.InferProps<{
44
+ tabs: PropTypes.Requireable<(PropTypes.InferProps<{
45
+ contentItem: PropTypes.Requireable<PropTypes.InferProps<{}>>;
46
+ }> | null | undefined)[]>;
47
+ }>>;
48
+ }>>;
49
+ title: PropTypes.Requireable<string>;
50
+ setTitle: PropTypes.Requireable<(...args: any[]) => any>;
51
+ close: PropTypes.Requireable<(...args: any[]) => any>;
52
+ }>>;
53
+ const glEventHub: PropTypes.Validator<PropTypes.InferProps<{
54
+ on: PropTypes.Requireable<(...args: any[]) => any>;
55
+ off: PropTypes.Requireable<(...args: any[]) => any>;
56
+ emit: PropTypes.Requireable<(...args: any[]) => any>;
57
+ }>>;
58
+ const metadata: PropTypes.Requireable<PropTypes.InferProps<{
59
+ itemName: PropTypes.Requireable<string>;
60
+ }>>;
61
+ const panelState: PropTypes.Requireable<PropTypes.InferProps<{
62
+ content: PropTypes.Requireable<string>;
63
+ isPreview: PropTypes.Requireable<boolean>;
64
+ fileMetadata: PropTypes.Requireable<PropTypes.InferProps<{
65
+ id: PropTypes.Requireable<string>;
66
+ itemName: PropTypes.Requireable<string>;
67
+ }>>;
68
+ }>>;
69
+ const isPreview: PropTypes.Requireable<boolean>;
70
+ const notebooksUrl: PropTypes.Requireable<string>;
71
+ const session: PropTypes.Validator<PropTypes.InferProps<{}>>;
72
+ const sessionLanguage: PropTypes.Validator<string>;
73
+ }
74
+ namespace defaultProps {
75
+ const isPreview_1: boolean;
76
+ export { isPreview_1 as isPreview };
77
+ const metadata_1: null;
78
+ export { metadata_1 as metadata };
79
+ const panelState_1: null;
80
+ export { panelState_1 as panelState };
81
+ const notebooksUrl_1: string;
82
+ export { notebooksUrl_1 as notebooksUrl };
83
+ }
84
+ }
85
+ declare var _default: import("react-redux").ConnectedComponent<typeof MarkdownNotebookPanel, any>;
86
+ export default _default;
87
+ import React from "react";
88
+ import { Pending } from "@deephaven/utils";
89
+ import MarkdownNotebookEditor from "./MarkdownNotebookEditor";
90
+ import PropTypes from "prop-types";
91
+ //# sourceMappingURL=MarkdownNotebookPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownNotebookPanel.d.ts","sourceRoot":"","sources":["../../src/panels/MarkdownNotebookPanel.jsx"],"names":[],"mappings":"AAiBA;IACE,yBAA2C;IAE3C,wBAiCC;IAsHD,6CASC;IAED,2CAGC;IAED,mCAqBC;IAED,2BAKC;IAED;;OAEG;IACH,uBAFW,UAAU,QA+BpB;IAED,0BAGC;IAED,qCAsBC;IAED;;;;OAIG;IACH,sCAeC;IA1QC,iBAA4B;IAiB5B,8CAA0B;IAC1B,YAAkB;IA0BpB,4BAkCC;IAED,wBAMC;IAHC,qBAAmC;IAKrC,yBAWC;IAED,8DAQC;IAED,6CAwBC;CA4KF"}