@deephaven/dashboard-core-plugins 0.6.1-beta.0 → 0.6.1-markdownnotebooks.6

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.
@@ -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;IAqHD,6CASC;IAED,2CAGC;IAED,mCAkBC;IAED,2BAKC;IAED;;OAEG;IACH,uBAFW,UAAU,QA+BpB;IAED,0BAGC;IAED,qCAsBC;IAED;;;;OAIG;IACH,sCAeC;IAtQC,iBAA4B;IAiB5B,8CAA0B;IAC1B,YAAkB;IA0BpB,4BAiCC;IAED,wBAMC;IAHC,qBAAmC;IAKrC,yBAWC;IAED,8DAQC;IAED,6CAwBC;CAyKF"}