@datalayer/jupyter-lexical 0.0.1
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.
- package/LICENSE +21 -0
- package/README.md +7 -0
- package/lib/components/InsertEquationDialog.d.ts +6 -0
- package/lib/components/InsertEquationDialog.js +17 -0
- package/lib/components/InsertEquationDialog.js.map +1 -0
- package/lib/components/InsertImageDialog.d.ts +13 -0
- package/lib/components/InsertImageDialog.js +48 -0
- package/lib/components/InsertImageDialog.js.map +1 -0
- package/lib/components/JupyterCellComponent.d.ts +2 -0
- package/lib/components/JupyterCellComponent.js +12 -0
- package/lib/components/JupyterCellComponent.js.map +1 -0
- package/lib/components/JupyterOutputComponent.d.ts +13 -0
- package/lib/components/JupyterOutputComponent.js +8 -0
- package/lib/components/JupyterOutputComponent.js.map +1 -0
- package/lib/convert/LexicalToNbFormat.d.ts +4 -0
- package/lib/convert/LexicalToNbFormat.js +100 -0
- package/lib/convert/LexicalToNbFormat.js.map +1 -0
- package/lib/convert/NbFormatToLexical.d.ts +4 -0
- package/lib/convert/NbFormatToLexical.js +31 -0
- package/lib/convert/NbFormatToLexical.js.map +1 -0
- package/lib/convert/markdown/MarkdownExport.d.ts +11 -0
- package/lib/convert/markdown/MarkdownExport.js +129 -0
- package/lib/convert/markdown/MarkdownExport.js.map +1 -0
- package/lib/convert/markdown/MarkdownImport.d.ts +2 -0
- package/lib/convert/markdown/MarkdownImport.js +246 -0
- package/lib/convert/markdown/MarkdownImport.js.map +1 -0
- package/lib/convert/markdown/MarkdownShortcuts.d.ts +10 -0
- package/lib/convert/markdown/MarkdownShortcuts.js +254 -0
- package/lib/convert/markdown/MarkdownShortcuts.js.map +1 -0
- package/lib/convert/markdown/MarkdownTransformers.d.ts +39 -0
- package/lib/convert/markdown/MarkdownTransformers.js +242 -0
- package/lib/convert/markdown/MarkdownTransformers.js.map +1 -0
- package/lib/convert/markdown/convertToMarkdown.d.ts +1 -0
- package/lib/convert/markdown/convertToMarkdown.js +126 -0
- package/lib/convert/markdown/convertToMarkdown.js.map +1 -0
- package/lib/convert/markdown/index.d.ts +17 -0
- package/lib/convert/markdown/index.js +46 -0
- package/lib/convert/markdown/index.js.map +1 -0
- package/lib/convert/markdown/utils.d.ts +24 -0
- package/lib/convert/markdown/utils.js +303 -0
- package/lib/convert/markdown/utils.js.map +1 -0
- package/lib/convert/transformers/MarkdownTransformers.d.ts +13 -0
- package/lib/convert/transformers/MarkdownTransformers.js +178 -0
- package/lib/convert/transformers/MarkdownTransformers.js.map +1 -0
- package/lib/examples/App.d.ts +1 -0
- package/lib/examples/App.js +22 -0
- package/lib/examples/App.js.map +1 -0
- package/lib/examples/Editor.d.ts +9 -0
- package/lib/examples/Editor.js +81 -0
- package/lib/examples/Editor.js.map +1 -0
- package/lib/examples/Example.d.ts +1 -0
- package/lib/examples/Example.js +11 -0
- package/lib/examples/Example.js.map +1 -0
- package/lib/examples/content/Example.ipynb.json +98 -0
- package/lib/examples/content/Example.lexical.json +259 -0
- package/lib/examples/context/LexicalContext.d.ts +13 -0
- package/lib/examples/context/LexicalContext.js +22 -0
- package/lib/examples/context/LexicalContext.js.map +1 -0
- package/lib/examples/plugins/ToolbarPlugin.d.ts +2 -0
- package/lib/examples/plugins/ToolbarPlugin.js +448 -0
- package/lib/examples/plugins/ToolbarPlugin.js.map +1 -0
- package/lib/examples/plugins/TreeViewPlugin.d.ts +2 -0
- package/lib/examples/plugins/TreeViewPlugin.js +13 -0
- package/lib/examples/plugins/TreeViewPlugin.js.map +1 -0
- package/lib/examples/themes/Theme.d.ts +10 -0
- package/lib/examples/themes/Theme.js +94 -0
- package/lib/examples/themes/Theme.js.map +1 -0
- package/lib/hooks/useModal.d.ts +2 -0
- package/lib/hooks/useModal.js +39 -0
- package/lib/hooks/useModal.js.map +1 -0
- package/lib/images/yellow-flower-small.jpg +0 -0
- package/lib/index.d.ts +40 -0
- package/lib/index.js +55 -0
- package/lib/index.js.map +1 -0
- package/lib/jupyter/index.d.ts +0 -0
- package/lib/jupyter/index.js +6 -0
- package/lib/jupyter/index.js.map +1 -0
- package/lib/jupyter/lab/Example.d.ts +1 -0
- package/lib/jupyter/lab/Example.js +11 -0
- package/lib/jupyter/lab/Example.js.map +1 -0
- package/lib/jupyter/lab/__tests__/datalayer.spec.d.ts +0 -0
- package/lib/jupyter/lab/__tests__/datalayer.spec.js +11 -0
- package/lib/jupyter/lab/__tests__/datalayer.spec.js.map +1 -0
- package/lib/jupyter/lab/component/MockComponent.d.ts +2 -0
- package/lib/jupyter/lab/component/MockComponent.js +17 -0
- package/lib/jupyter/lab/component/MockComponent.js.map +1 -0
- package/lib/jupyter/lab/component/MockTab1.d.ts +2 -0
- package/lib/jupyter/lab/component/MockTab1.js +14 -0
- package/lib/jupyter/lab/component/MockTab1.js.map +1 -0
- package/lib/jupyter/lab/handler.d.ts +8 -0
- package/lib/jupyter/lab/handler.js +41 -0
- package/lib/jupyter/lab/handler.js.map +1 -0
- package/lib/jupyter/lab/index.d.ts +7 -0
- package/lib/jupyter/lab/index.js +73 -0
- package/lib/jupyter/lab/index.js.map +1 -0
- package/lib/jupyter/lab/widget.d.ts +6 -0
- package/lib/jupyter/lab/widget.js +18 -0
- package/lib/jupyter/lab/widget.js.map +1 -0
- package/lib/nodes/EquationNode.d.ts +31 -0
- package/lib/nodes/EquationNode.js +118 -0
- package/lib/nodes/EquationNode.js.map +1 -0
- package/lib/nodes/ImageNode.css +50 -0
- package/lib/nodes/ImageNode.d.ts +58 -0
- package/lib/nodes/ImageNode.js +275 -0
- package/lib/nodes/ImageNode.js.map +1 -0
- package/lib/nodes/JupyterCodeHighlightNode.d.ts +49 -0
- package/lib/nodes/JupyterCodeHighlightNode.js +165 -0
- package/lib/nodes/JupyterCodeHighlightNode.js.map +1 -0
- package/lib/nodes/JupyterCodeHighlighter.d.ts +28 -0
- package/lib/nodes/JupyterCodeHighlighter.js +522 -0
- package/lib/nodes/JupyterCodeHighlighter.js.map +1 -0
- package/lib/nodes/JupyterCodeNode.d.ts +50 -0
- package/lib/nodes/JupyterCodeNode.js +277 -0
- package/lib/nodes/JupyterCodeNode.js.map +1 -0
- package/lib/nodes/JupyterOutputNode.d.ts +58 -0
- package/lib/nodes/JupyterOutputNode.js +144 -0
- package/lib/nodes/JupyterOutputNode.js.map +1 -0
- package/lib/nodes/YouTubeNode.d.ts +28 -0
- package/lib/nodes/YouTubeNode.js +56 -0
- package/lib/nodes/YouTubeNode.js.map +1 -0
- package/lib/plugins/AutoEmbedPlugin.d.ts +17 -0
- package/lib/plugins/AutoEmbedPlugin.js +110 -0
- package/lib/plugins/AutoEmbedPlugin.js.map +1 -0
- package/lib/plugins/AutoLinkPlugin.d.ts +2 -0
- package/lib/plugins/AutoLinkPlugin.js +34 -0
- package/lib/plugins/AutoLinkPlugin.js.map +1 -0
- package/lib/plugins/CodeActionMenuPlugin.css +52 -0
- package/lib/plugins/CodeActionMenuPlugin.d.ts +12 -0
- package/lib/plugins/CodeActionMenuPlugin.js +108 -0
- package/lib/plugins/CodeActionMenuPlugin.js.map +1 -0
- package/lib/plugins/ComponentPickerMenuPlugin.d.ts +2 -0
- package/lib/plugins/ComponentPickerMenuPlugin.js +244 -0
- package/lib/plugins/ComponentPickerMenuPlugin.js.map +1 -0
- package/lib/plugins/EquationsPlugin.d.ts +21 -0
- package/lib/plugins/EquationsPlugin.js +48 -0
- package/lib/plugins/EquationsPlugin.js.map +1 -0
- package/lib/plugins/HorizontalRulePlugin.d.ts +2 -0
- package/lib/plugins/HorizontalRulePlugin.js +40 -0
- package/lib/plugins/HorizontalRulePlugin.js.map +1 -0
- package/lib/plugins/ImagesPlugin.d.ts +25 -0
- package/lib/plugins/ImagesPlugin.js +212 -0
- package/lib/plugins/ImagesPlugin.js.map +1 -0
- package/lib/plugins/JupyterPlugin.css +13 -0
- package/lib/plugins/JupyterPlugin.d.ts +16 -0
- package/lib/plugins/JupyterPlugin.js +169 -0
- package/lib/plugins/JupyterPlugin.js.map +1 -0
- package/lib/plugins/ListMaxIndentLevelPlugin.d.ts +4 -0
- package/lib/plugins/ListMaxIndentLevelPlugin.js +49 -0
- package/lib/plugins/ListMaxIndentLevelPlugin.js.map +1 -0
- package/lib/plugins/MardownPlugin.d.ts +2 -0
- package/lib/plugins/MardownPlugin.js +20 -0
- package/lib/plugins/MardownPlugin.js.map +1 -0
- package/lib/plugins/NbformatContentPlugin.d.ts +6 -0
- package/lib/plugins/NbformatContentPlugin.js +20 -0
- package/lib/plugins/NbformatContentPlugin.js.map +1 -0
- package/lib/plugins/TableOfContentsPlugin.css +87 -0
- package/lib/plugins/TableOfContentsPlugin.d.ts +3 -0
- package/lib/plugins/TableOfContentsPlugin.js +115 -0
- package/lib/plugins/TableOfContentsPlugin.js.map +1 -0
- package/lib/plugins/YouTubePlugin.d.ts +4 -0
- package/lib/plugins/YouTubePlugin.js +34 -0
- package/lib/plugins/YouTubePlugin.js.map +1 -0
- package/lib/ui/Button.css +40 -0
- package/lib/ui/Button.d.ts +18 -0
- package/lib/ui/Button.js +8 -0
- package/lib/ui/Button.js.map +1 -0
- package/lib/ui/ContentEditable.css +24 -0
- package/lib/ui/ContentEditable.d.ts +5 -0
- package/lib/ui/ContentEditable.js +20 -0
- package/lib/ui/ContentEditable.js.map +1 -0
- package/lib/ui/CopyButton.d.ts +7 -0
- package/lib/ui/CopyButton.js +47 -0
- package/lib/ui/CopyButton.js.map +1 -0
- package/lib/ui/Dialog.css +23 -0
- package/lib/ui/Dialog.d.ts +16 -0
- package/lib/ui/Dialog.js +21 -0
- package/lib/ui/Dialog.js.map +1 -0
- package/lib/ui/DropDown.d.ts +23 -0
- package/lib/ui/DropDown.js +119 -0
- package/lib/ui/DropDown.js.map +1 -0
- package/lib/ui/EquationEditor.css +42 -0
- package/lib/ui/EquationEditor.d.ts +18 -0
- package/lib/ui/EquationEditor.js +31 -0
- package/lib/ui/EquationEditor.js.map +1 -0
- package/lib/ui/FileInput.d.ts +15 -0
- package/lib/ui/FileInput.js +18 -0
- package/lib/ui/FileInput.js.map +1 -0
- package/lib/ui/ImageResizer.d.ts +16 -0
- package/lib/ui/ImageResizer.js +166 -0
- package/lib/ui/ImageResizer.js.map +1 -0
- package/lib/ui/Input.css +37 -0
- package/lib/ui/KatexEquationAlterer.css +45 -0
- package/lib/ui/KatexEquationAlterer.d.ts +7 -0
- package/lib/ui/KatexEquationAlterer.js +33 -0
- package/lib/ui/KatexEquationAlterer.js.map +1 -0
- package/lib/ui/KatexRenderer.d.ts +6 -0
- package/lib/ui/KatexRenderer.js +36 -0
- package/lib/ui/KatexRenderer.js.map +1 -0
- package/lib/ui/Modal.css +67 -0
- package/lib/ui/Modal.d.ts +15 -0
- package/lib/ui/Modal.js +58 -0
- package/lib/ui/Modal.js.map +1 -0
- package/lib/ui/Placeholder.css +29 -0
- package/lib/ui/Placeholder.d.ts +14 -0
- package/lib/ui/Placeholder.js +7 -0
- package/lib/ui/Placeholder.js.map +1 -0
- package/lib/ui/PrettierButton.css +20 -0
- package/lib/ui/PrettierButton.tsx_tmp +133 -0
- package/lib/ui/TextInput.d.ts +16 -0
- package/lib/ui/TextInput.js +20 -0
- package/lib/ui/TextInput.js.map +1 -0
- package/lib/utils/canUseDOM.d.ts +8 -0
- package/lib/utils/canUseDOM.js +16 -0
- package/lib/utils/canUseDOM.js.map +1 -0
- package/lib/utils/debouncer.d.ts +1 -0
- package/lib/utils/debouncer.js +24 -0
- package/lib/utils/debouncer.js.map +1 -0
- package/lib/utils/invariant.d.ts +8 -0
- package/lib/utils/invariant.js +23 -0
- package/lib/utils/invariant.js.map +1 -0
- package/lib/utils/join.d.ts +8 -0
- package/lib/utils/join.js +16 -0
- package/lib/utils/join.js.map +1 -0
- package/lib/utils/selection.d.ts +8 -0
- package/lib/utils/selection.js +14 -0
- package/lib/utils/selection.js.map +1 -0
- package/lib/utils/useLayoutEffect.d.ts +10 -0
- package/lib/utils/useLayoutEffect.js +19 -0
- package/lib/utils/useLayoutEffect.js.map +1 -0
- package/package.json +166 -0
- package/style/base.css +16 -0
- package/style/index.css +7 -0
- package/style/index.js +7 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-2023 Datalayer, Inc.
|
|
3
|
+
*
|
|
4
|
+
* MIT License
|
|
5
|
+
*/
|
|
6
|
+
import { $createLineBreakNode, $createParagraphNode, $getSelection, $isRangeSelection, ElementNode, } from 'lexical';
|
|
7
|
+
import { addClassNamesToElement } from '@lexical/utils';
|
|
8
|
+
import { UUID } from '@lumino/coreutils';
|
|
9
|
+
import { $createJupyterCodeHighlightNode, getFirstJupyterCodeHighlightNodeOfLine } from './JupyterCodeHighlightNode';
|
|
10
|
+
import { CODE_UUID_TO_CODE_KEY } from "../plugins/JupyterPlugin";
|
|
11
|
+
import * as Prism from 'prismjs';
|
|
12
|
+
import 'prismjs/components/prism-clike';
|
|
13
|
+
import 'prismjs/components/prism-javascript';
|
|
14
|
+
import 'prismjs/components/prism-markup';
|
|
15
|
+
import 'prismjs/components/prism-markdown';
|
|
16
|
+
import 'prismjs/components/prism-c';
|
|
17
|
+
import 'prismjs/components/prism-css';
|
|
18
|
+
import 'prismjs/components/prism-objectivec';
|
|
19
|
+
import 'prismjs/components/prism-sql';
|
|
20
|
+
import 'prismjs/components/prism-python';
|
|
21
|
+
import 'prismjs/components/prism-rust';
|
|
22
|
+
import 'prismjs/components/prism-swift';
|
|
23
|
+
const mapToPrismLanguage = (language) => {
|
|
24
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
25
|
+
return language != null && Prism.languages.hasOwnProperty(language)
|
|
26
|
+
? language
|
|
27
|
+
: undefined;
|
|
28
|
+
};
|
|
29
|
+
const LANGUAGE_DATA_ATTRIBUTE = 'data-highlight-language';
|
|
30
|
+
export class JupyterCodeNode extends ElementNode {
|
|
31
|
+
/** @internal */
|
|
32
|
+
__language;
|
|
33
|
+
__codeNodeUuid;
|
|
34
|
+
static getType() {
|
|
35
|
+
return 'jupyter-code';
|
|
36
|
+
}
|
|
37
|
+
static clone(node) {
|
|
38
|
+
return new JupyterCodeNode(node.__language, node.__codeNodeUuid, node.__key);
|
|
39
|
+
}
|
|
40
|
+
constructor(language, codeNodeUuid, key) {
|
|
41
|
+
super(key);
|
|
42
|
+
this.__language = mapToPrismLanguage(language);
|
|
43
|
+
this.__codeNodeUuid = codeNodeUuid || UUID.uuid4();
|
|
44
|
+
CODE_UUID_TO_CODE_KEY.set(this.__codeNodeUuid, this.__key);
|
|
45
|
+
}
|
|
46
|
+
setCodeNodeUuid(codeNodeUuid) {
|
|
47
|
+
const self = this.getWritable();
|
|
48
|
+
self.__codeNodeUuid = codeNodeUuid;
|
|
49
|
+
}
|
|
50
|
+
getCodeNodeUuid() {
|
|
51
|
+
const self = this.getLatest();
|
|
52
|
+
return self.__codeNodeUuid;
|
|
53
|
+
}
|
|
54
|
+
// View
|
|
55
|
+
createDOM(config) {
|
|
56
|
+
const element = document.createElement('code');
|
|
57
|
+
addClassNamesToElement(element, config.theme.code);
|
|
58
|
+
element.setAttribute('spellcheck', 'false');
|
|
59
|
+
const language = this.getLanguage();
|
|
60
|
+
if (language) {
|
|
61
|
+
element.setAttribute(LANGUAGE_DATA_ATTRIBUTE, language);
|
|
62
|
+
}
|
|
63
|
+
return element;
|
|
64
|
+
}
|
|
65
|
+
updateDOM(prevNode, dom) {
|
|
66
|
+
const language = this.__language;
|
|
67
|
+
const prevLanguage = prevNode.__language;
|
|
68
|
+
if (language) {
|
|
69
|
+
if (language !== prevLanguage) {
|
|
70
|
+
dom.setAttribute(LANGUAGE_DATA_ATTRIBUTE, language);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (prevLanguage) {
|
|
74
|
+
dom.removeAttribute(LANGUAGE_DATA_ATTRIBUTE);
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
static importDOM() {
|
|
79
|
+
return {
|
|
80
|
+
// Typically <pre> is used for code blocks, and <code> for inline code styles
|
|
81
|
+
// but if it's a multi line <code> we'll create a block. Pass through to
|
|
82
|
+
// inline format handled by TextNode otherwise
|
|
83
|
+
code: (node) => {
|
|
84
|
+
const isMultiLine = node.textContent != null && /\r?\n/.test(node.textContent);
|
|
85
|
+
return isMultiLine
|
|
86
|
+
? {
|
|
87
|
+
conversion: convertPreElement,
|
|
88
|
+
priority: 1,
|
|
89
|
+
}
|
|
90
|
+
: null;
|
|
91
|
+
},
|
|
92
|
+
div: (node) => ({
|
|
93
|
+
conversion: convertDivElement,
|
|
94
|
+
priority: 1,
|
|
95
|
+
}),
|
|
96
|
+
pre: (node) => ({
|
|
97
|
+
conversion: convertPreElement,
|
|
98
|
+
priority: 0,
|
|
99
|
+
}),
|
|
100
|
+
table: (node) => {
|
|
101
|
+
const table = node;
|
|
102
|
+
// domNode is a <table> since we matched it by nodeName
|
|
103
|
+
if (isGitHubCodeTable(table)) {
|
|
104
|
+
return {
|
|
105
|
+
conversion: convertTableElement,
|
|
106
|
+
priority: 4,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
},
|
|
111
|
+
td: (node) => {
|
|
112
|
+
// element is a <td> since we matched it by nodeName
|
|
113
|
+
const td = node;
|
|
114
|
+
const table = td.closest('table');
|
|
115
|
+
if (isGitHubCodeCell(td)) {
|
|
116
|
+
return {
|
|
117
|
+
conversion: convertTableCellElement,
|
|
118
|
+
priority: 4,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (table && isGitHubCodeTable(table)) {
|
|
122
|
+
// Return a no-op if it's a table cell in a code table, but not a code line.
|
|
123
|
+
// Otherwise it'll fall back to the T
|
|
124
|
+
return {
|
|
125
|
+
conversion: convertCodeNoop,
|
|
126
|
+
priority: 4,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
},
|
|
131
|
+
tr: (node) => {
|
|
132
|
+
// element is a <tr> since we matched it by nodeName
|
|
133
|
+
const tr = node;
|
|
134
|
+
const table = tr.closest('table');
|
|
135
|
+
if (table && isGitHubCodeTable(table)) {
|
|
136
|
+
return {
|
|
137
|
+
conversion: convertCodeNoop,
|
|
138
|
+
priority: 4,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
static importJSON(serializedNode) {
|
|
146
|
+
const node = $createJupyterCodeNode(serializedNode.language, serializedNode.codeNodeUuid);
|
|
147
|
+
node.setFormat(serializedNode.format);
|
|
148
|
+
node.setIndent(serializedNode.indent);
|
|
149
|
+
node.setDirection(serializedNode.direction);
|
|
150
|
+
return node;
|
|
151
|
+
}
|
|
152
|
+
exportJSON() {
|
|
153
|
+
return {
|
|
154
|
+
...super.exportJSON(),
|
|
155
|
+
type: 'jupyter-code',
|
|
156
|
+
language: this.getLanguage(),
|
|
157
|
+
codeNodeUuid: this.getCodeNodeUuid(),
|
|
158
|
+
version: 1,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// Mutation
|
|
162
|
+
insertNewAfter(selection) {
|
|
163
|
+
const children = this.getChildren();
|
|
164
|
+
const childrenLength = children.length;
|
|
165
|
+
if (childrenLength >= 2 &&
|
|
166
|
+
children[childrenLength - 1].getTextContent() === '\n' &&
|
|
167
|
+
children[childrenLength - 2].getTextContent() === '\n' &&
|
|
168
|
+
selection.isCollapsed() &&
|
|
169
|
+
selection.anchor.key === this.__key &&
|
|
170
|
+
selection.anchor.offset === childrenLength) {
|
|
171
|
+
children[childrenLength - 1].remove();
|
|
172
|
+
children[childrenLength - 2].remove();
|
|
173
|
+
const newElement = $createParagraphNode();
|
|
174
|
+
this.insertAfter(newElement);
|
|
175
|
+
return newElement;
|
|
176
|
+
}
|
|
177
|
+
// If the selection is within the codeblock, find all leading tabs and
|
|
178
|
+
// spaces of the current line. Create a new line that has all those
|
|
179
|
+
// tabs and spaces, such that leading indentation is preserved.
|
|
180
|
+
const anchor = selection.anchor.getNode();
|
|
181
|
+
const firstNode = getFirstJupyterCodeHighlightNodeOfLine(anchor);
|
|
182
|
+
if (firstNode != null) {
|
|
183
|
+
let leadingWhitespace = 0;
|
|
184
|
+
const firstNodeText = firstNode.getTextContent();
|
|
185
|
+
while (leadingWhitespace < firstNodeText.length &&
|
|
186
|
+
/[\t ]/.test(firstNodeText[leadingWhitespace])) {
|
|
187
|
+
leadingWhitespace += 1;
|
|
188
|
+
}
|
|
189
|
+
if (leadingWhitespace > 0) {
|
|
190
|
+
const whitespace = firstNodeText.substring(0, leadingWhitespace);
|
|
191
|
+
const indentedChild = $createJupyterCodeHighlightNode(whitespace);
|
|
192
|
+
anchor.insertAfter(indentedChild);
|
|
193
|
+
selection.insertNodes([$createLineBreakNode()]);
|
|
194
|
+
indentedChild.select();
|
|
195
|
+
return indentedChild;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
canInsertTab() {
|
|
201
|
+
const selection = $getSelection();
|
|
202
|
+
if (!$isRangeSelection(selection) || !selection.isCollapsed()) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
canIndent() {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
collapseAtStart() {
|
|
211
|
+
const paragraph = $createParagraphNode();
|
|
212
|
+
const children = this.getChildren();
|
|
213
|
+
children.forEach((child) => paragraph.append(child));
|
|
214
|
+
this.replace(paragraph);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
setLanguage(language) {
|
|
218
|
+
const writable = this.getWritable();
|
|
219
|
+
writable.__language = mapToPrismLanguage(language);
|
|
220
|
+
}
|
|
221
|
+
getLanguage() {
|
|
222
|
+
return this.getLatest().__language;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
export function $createJupyterCodeNode(language, codeNodeUuid) {
|
|
226
|
+
return new JupyterCodeNode(language, codeNodeUuid);
|
|
227
|
+
}
|
|
228
|
+
export function $isJupyterCodeNode(node) {
|
|
229
|
+
return node instanceof JupyterCodeNode;
|
|
230
|
+
}
|
|
231
|
+
function convertPreElement(domNode) {
|
|
232
|
+
return { node: $createJupyterCodeNode("python") };
|
|
233
|
+
}
|
|
234
|
+
function convertDivElement(domNode) {
|
|
235
|
+
// domNode is a <div> since we matched it by nodeName
|
|
236
|
+
const div = domNode;
|
|
237
|
+
return {
|
|
238
|
+
after: (childLexicalNodes) => {
|
|
239
|
+
const domParent = domNode.parentNode;
|
|
240
|
+
if (domParent != null && domNode !== domParent.lastChild) {
|
|
241
|
+
childLexicalNodes.push($createLineBreakNode());
|
|
242
|
+
}
|
|
243
|
+
return childLexicalNodes;
|
|
244
|
+
},
|
|
245
|
+
node: isCodeElement(div) ? $createJupyterCodeNode("python") : null,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function convertTableElement() {
|
|
249
|
+
return { node: $createJupyterCodeNode("python") };
|
|
250
|
+
}
|
|
251
|
+
function convertCodeNoop() {
|
|
252
|
+
return { node: null };
|
|
253
|
+
}
|
|
254
|
+
function convertTableCellElement(domNode) {
|
|
255
|
+
// domNode is a <td> since we matched it by nodeName
|
|
256
|
+
const cell = domNode;
|
|
257
|
+
return {
|
|
258
|
+
after: (childLexicalNodes) => {
|
|
259
|
+
if (cell.parentNode && cell.parentNode.nextSibling) {
|
|
260
|
+
// Append newline between code lines
|
|
261
|
+
childLexicalNodes.push($createLineBreakNode());
|
|
262
|
+
}
|
|
263
|
+
return childLexicalNodes;
|
|
264
|
+
},
|
|
265
|
+
node: null,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function isCodeElement(div) {
|
|
269
|
+
return div.style.fontFamily.match('monospace') !== null;
|
|
270
|
+
}
|
|
271
|
+
function isGitHubCodeCell(cell) {
|
|
272
|
+
return cell.classList.contains('js-file-line');
|
|
273
|
+
}
|
|
274
|
+
function isGitHubCodeTable(table) {
|
|
275
|
+
return table.classList.contains('js-file-line-container');
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=JupyterCodeNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JupyterCodeNode.js","sourceRoot":"","sources":["../../src/nodes/JupyterCodeNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { LexicalEditor, EditorConfig, DecoratorNode, LexicalNode, NodeKey, Spread, SerializedLexicalNode } from "lexical";
|
|
3
|
+
import { IOutput } from '@jupyterlab/nbformat';
|
|
4
|
+
import { OutputAdapter } from "@datalayer/jupyter-react";
|
|
5
|
+
export type SerializedJupyterOutputNode = Spread<{
|
|
6
|
+
type: "jupyter-output";
|
|
7
|
+
source: string;
|
|
8
|
+
outputs: IOutput[];
|
|
9
|
+
codeNodeUuid: string;
|
|
10
|
+
outputNodeUuid: string;
|
|
11
|
+
version: 1;
|
|
12
|
+
}, SerializedLexicalNode>;
|
|
13
|
+
export declare class JupyterOutputNode extends DecoratorNode<JSX.Element> {
|
|
14
|
+
__code: string;
|
|
15
|
+
__outputs: IOutput[];
|
|
16
|
+
__outputAdapter: OutputAdapter;
|
|
17
|
+
__codeNodeUuid: string;
|
|
18
|
+
__outputNodeUuid: string;
|
|
19
|
+
__executeTrigger: number;
|
|
20
|
+
/** @override */
|
|
21
|
+
static getType(): string;
|
|
22
|
+
/** @override */
|
|
23
|
+
static clone(node: JupyterOutputNode): JupyterOutputNode;
|
|
24
|
+
/** @override */
|
|
25
|
+
static importJSON(serializedNode: SerializedJupyterOutputNode): JupyterOutputNode;
|
|
26
|
+
/** @override */
|
|
27
|
+
constructor(source: string, outputAdapter: OutputAdapter, outputs: IOutput[], autoRun: boolean, codeNodeUuid?: string, outputNodeUuid?: string, key?: NodeKey);
|
|
28
|
+
setCode(code: string): void;
|
|
29
|
+
getCode(): string;
|
|
30
|
+
setCodeNodeUuid(codeNodeUuid: string): void;
|
|
31
|
+
getCodeNodeUuid(): string;
|
|
32
|
+
setOutputNodeUuid(outputNodeUuid: string): void;
|
|
33
|
+
getOutputNodeUuid(): string;
|
|
34
|
+
setExecuteTrigger(executeTrigger: number): void;
|
|
35
|
+
getExecuteTrigger(): number;
|
|
36
|
+
setAutoRun(autoRun: boolean): void;
|
|
37
|
+
getAutoRun(): boolean;
|
|
38
|
+
setOutputs(outputs: IOutput[]): void;
|
|
39
|
+
getOutputs(): IOutput[];
|
|
40
|
+
/** @override */
|
|
41
|
+
createDOM(): HTMLElement;
|
|
42
|
+
/** @override */
|
|
43
|
+
updateDOM(): false;
|
|
44
|
+
/** @override */
|
|
45
|
+
isTopLevel(): boolean;
|
|
46
|
+
/** @override */
|
|
47
|
+
isIsolated(): boolean;
|
|
48
|
+
/** @override */
|
|
49
|
+
decorate(_editor: LexicalEditor, _config: EditorConfig): import("react/jsx-runtime").JSX.Element;
|
|
50
|
+
/** @override */
|
|
51
|
+
exportJSON(): SerializedJupyterOutputNode;
|
|
52
|
+
/** @override */
|
|
53
|
+
remove(_preserveEmptyParent?: boolean): void;
|
|
54
|
+
removeForce(): void;
|
|
55
|
+
executeCode(code: string): void;
|
|
56
|
+
}
|
|
57
|
+
export declare function $createJupyterOutputNode(code: string, outputAdapter: OutputAdapter, outputs: IOutput[], autoRun: boolean, codeNodeUuid: string, outputNodeUuid: string): JupyterOutputNode;
|
|
58
|
+
export declare function $isJupyterOutputNode(node: LexicalNode): boolean;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2021-2023 Datalayer, Inc.
|
|
4
|
+
*
|
|
5
|
+
* MIT License
|
|
6
|
+
*/
|
|
7
|
+
import { DecoratorNode } from "lexical";
|
|
8
|
+
import { UUID } from '@lumino/coreutils';
|
|
9
|
+
import { OUTPUT_UUID_TO_CODE_UUID, CODE_UUID_TO_OUTPUT_KEY, CODE_UUID_TO_OUTPUT_UUID, OUTPUT_UUID_TO_OUTPUT_KEY } from "../plugins/JupyterPlugin";
|
|
10
|
+
import { OutputAdapter } from "@datalayer/jupyter-react";
|
|
11
|
+
import JupyterOutputComponent from "../components/JupyterOutputComponent";
|
|
12
|
+
export class JupyterOutputNode extends DecoratorNode {
|
|
13
|
+
__code;
|
|
14
|
+
__outputs;
|
|
15
|
+
__outputAdapter;
|
|
16
|
+
__codeNodeUuid;
|
|
17
|
+
__outputNodeUuid;
|
|
18
|
+
__executeTrigger;
|
|
19
|
+
/** @override */
|
|
20
|
+
static getType() {
|
|
21
|
+
return "jupyter-output";
|
|
22
|
+
}
|
|
23
|
+
/** @override */
|
|
24
|
+
static clone(node) {
|
|
25
|
+
return new JupyterOutputNode(node.getCode(), node.__outputAdapter, node.__outputs, node.__autoRun, node.__codeNodeUuid, node.__outputNodeUuid, node.__key);
|
|
26
|
+
}
|
|
27
|
+
/** @override */
|
|
28
|
+
static importJSON(serializedNode) {
|
|
29
|
+
return $createJupyterOutputNode(serializedNode.source, new OutputAdapter(undefined, []), serializedNode.outputs, false, serializedNode.codeNodeUuid, serializedNode.outputNodeUuid);
|
|
30
|
+
}
|
|
31
|
+
/** @override */
|
|
32
|
+
constructor(source, outputAdapter, outputs, autoRun, codeNodeUuid, outputNodeUuid, key) {
|
|
33
|
+
super(key);
|
|
34
|
+
this.__codeNodeUuid = codeNodeUuid || UUID.uuid4();
|
|
35
|
+
this.__outputNodeUuid = outputNodeUuid || UUID.uuid4();
|
|
36
|
+
this.__code = source;
|
|
37
|
+
this.__outputs = outputs;
|
|
38
|
+
this.__outputAdapter = outputAdapter;
|
|
39
|
+
this.__executeTrigger = 0;
|
|
40
|
+
this.__autoRun = autoRun;
|
|
41
|
+
OUTPUT_UUID_TO_CODE_UUID.set(this.__outputNodeUuid, codeNodeUuid);
|
|
42
|
+
CODE_UUID_TO_OUTPUT_KEY.set(this.__codeNodeUuid, this.__key);
|
|
43
|
+
CODE_UUID_TO_OUTPUT_UUID.set(this.__codeNodeUuid, this.__outputNodeUuid);
|
|
44
|
+
OUTPUT_UUID_TO_OUTPUT_KEY.set(this.__outputNodeUuid, this.__key);
|
|
45
|
+
}
|
|
46
|
+
setCode(code) {
|
|
47
|
+
const self = this.getWritable();
|
|
48
|
+
self.__code = code;
|
|
49
|
+
}
|
|
50
|
+
getCode() {
|
|
51
|
+
const self = this.getLatest();
|
|
52
|
+
return self.__code;
|
|
53
|
+
}
|
|
54
|
+
setCodeNodeUuid(codeNodeUuid) {
|
|
55
|
+
const self = this.getWritable();
|
|
56
|
+
self.__codeNodeUuid = codeNodeUuid;
|
|
57
|
+
}
|
|
58
|
+
getCodeNodeUuid() {
|
|
59
|
+
const self = this.getLatest();
|
|
60
|
+
return self.__codeNodeUuid;
|
|
61
|
+
}
|
|
62
|
+
setOutputNodeUuid(outputNodeUuid) {
|
|
63
|
+
const self = this.getWritable();
|
|
64
|
+
self.__outputNodeUuid = outputNodeUuid;
|
|
65
|
+
}
|
|
66
|
+
getOutputNodeUuid() {
|
|
67
|
+
const self = this.getLatest();
|
|
68
|
+
return self.__outputNodeUuid;
|
|
69
|
+
}
|
|
70
|
+
setExecuteTrigger(executeTrigger) {
|
|
71
|
+
const self = this.getWritable();
|
|
72
|
+
self.__executeTrigger = executeTrigger;
|
|
73
|
+
}
|
|
74
|
+
getExecuteTrigger() {
|
|
75
|
+
const self = this.getLatest();
|
|
76
|
+
return self.__executeTrigger;
|
|
77
|
+
}
|
|
78
|
+
setAutoRun(autoRun) {
|
|
79
|
+
const self = this.getWritable();
|
|
80
|
+
self.__autoRun = autoRun;
|
|
81
|
+
}
|
|
82
|
+
getAutoRun() {
|
|
83
|
+
const self = this.getLatest();
|
|
84
|
+
return self.__autoRun;
|
|
85
|
+
}
|
|
86
|
+
setOutputs(outputs) {
|
|
87
|
+
const self = this.getWritable();
|
|
88
|
+
self.__outputs = outputs;
|
|
89
|
+
}
|
|
90
|
+
getOutputs() {
|
|
91
|
+
const self = this.getLatest();
|
|
92
|
+
return self.__outputs;
|
|
93
|
+
}
|
|
94
|
+
/** @override */
|
|
95
|
+
createDOM() {
|
|
96
|
+
return document.createElement('span');
|
|
97
|
+
}
|
|
98
|
+
/** @override */
|
|
99
|
+
updateDOM() {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
/** @override */
|
|
103
|
+
isTopLevel() {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
/** @override */
|
|
107
|
+
isIsolated() {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
/** @override */
|
|
111
|
+
decorate(_editor, _config) {
|
|
112
|
+
return _jsx(JupyterOutputComponent, { code: this.getCode(), outputs: this.__outputs, outputAdapter: this.__outputAdapter, codeNodeUuid: this.__codeNodeUuid, outputNodeUuid: this.__outputNodeUuid, executeTrigger: this.getExecuteTrigger(), autoRun: this.__autoRun });
|
|
113
|
+
}
|
|
114
|
+
/** @override */
|
|
115
|
+
exportJSON() {
|
|
116
|
+
return {
|
|
117
|
+
type: "jupyter-output",
|
|
118
|
+
source: this.getCode(),
|
|
119
|
+
outputs: this.__outputAdapter.outputArea.model.toJSON(),
|
|
120
|
+
codeNodeUuid: this.getCodeNodeUuid(),
|
|
121
|
+
outputNodeUuid: this.getOutputNodeUuid(),
|
|
122
|
+
version: 1,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/** @override */
|
|
126
|
+
remove(_preserveEmptyParent) {
|
|
127
|
+
// Do not delete JupyterOutputNode.
|
|
128
|
+
}
|
|
129
|
+
removeForce() {
|
|
130
|
+
super.remove(false);
|
|
131
|
+
}
|
|
132
|
+
executeCode(code) {
|
|
133
|
+
this.setCode(code);
|
|
134
|
+
this.__outputAdapter.execute(code);
|
|
135
|
+
// this.setExecuteTrigger(this.getExecuteTrigger() + 1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export function $createJupyterOutputNode(code, outputAdapter, outputs, autoRun, codeNodeUuid, outputNodeUuid) {
|
|
139
|
+
return new JupyterOutputNode(code, outputAdapter, outputs, autoRun, codeNodeUuid, outputNodeUuid);
|
|
140
|
+
}
|
|
141
|
+
export function $isJupyterOutputNode(node) {
|
|
142
|
+
return node instanceof JupyterOutputNode;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=JupyterOutputNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JupyterOutputNode.js","sourceRoot":"","sources":["../../src/nodes/JupyterOutputNode.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import type { EditorConfig, ElementFormatType, LexicalEditor, LexicalNode, NodeKey, Spread } from 'lexical';
|
|
9
|
+
import { DecoratorBlockNode, SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode';
|
|
10
|
+
export type SerializedYouTubeNode = Spread<{
|
|
11
|
+
videoID: string;
|
|
12
|
+
type: 'youtube';
|
|
13
|
+
version: 1;
|
|
14
|
+
}, SerializedDecoratorBlockNode>;
|
|
15
|
+
export declare class YouTubeNode extends DecoratorBlockNode {
|
|
16
|
+
__id: string;
|
|
17
|
+
static getType(): string;
|
|
18
|
+
static clone(node: YouTubeNode): YouTubeNode;
|
|
19
|
+
static importJSON(serializedNode: SerializedYouTubeNode): YouTubeNode;
|
|
20
|
+
exportJSON(): SerializedYouTubeNode;
|
|
21
|
+
constructor(id: string, format?: ElementFormatType, key?: NodeKey);
|
|
22
|
+
updateDOM(): false;
|
|
23
|
+
getId(): string;
|
|
24
|
+
decorate(_editor: LexicalEditor, config: EditorConfig): JSX.Element;
|
|
25
|
+
isTopLevel(): true;
|
|
26
|
+
}
|
|
27
|
+
export declare function $createYouTubeNode(videoID: string): YouTubeNode;
|
|
28
|
+
export declare function $isYouTubeNode(node: YouTubeNode | LexicalNode | null | undefined): node is YouTubeNode;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BlockWithAlignableContents } from '@lexical/react/LexicalBlockWithAlignableContents';
|
|
3
|
+
import { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode';
|
|
4
|
+
function YouTubeComponent({ className, format, nodeKey, videoID, }) {
|
|
5
|
+
return (_jsx(BlockWithAlignableContents, { className: className, format: format, nodeKey: nodeKey, children: _jsx("iframe", { width: "560", height: "315", src: `https://www.youtube.com/embed/${videoID}`, frameBorder: "0", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: true, title: "YouTube video" }) }));
|
|
6
|
+
}
|
|
7
|
+
export class YouTubeNode extends DecoratorBlockNode {
|
|
8
|
+
__id;
|
|
9
|
+
static getType() {
|
|
10
|
+
return 'youtube';
|
|
11
|
+
}
|
|
12
|
+
static clone(node) {
|
|
13
|
+
return new YouTubeNode(node.__id, node.__format, node.__key);
|
|
14
|
+
}
|
|
15
|
+
static importJSON(serializedNode) {
|
|
16
|
+
const node = $createYouTubeNode(serializedNode.videoID);
|
|
17
|
+
node.setFormat(serializedNode.format);
|
|
18
|
+
return node;
|
|
19
|
+
}
|
|
20
|
+
exportJSON() {
|
|
21
|
+
return {
|
|
22
|
+
...super.exportJSON(),
|
|
23
|
+
type: 'youtube',
|
|
24
|
+
version: 1,
|
|
25
|
+
videoID: this.__id,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
constructor(id, format, key) {
|
|
29
|
+
super(format, key);
|
|
30
|
+
this.__id = id;
|
|
31
|
+
}
|
|
32
|
+
updateDOM() {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
getId() {
|
|
36
|
+
return this.__id;
|
|
37
|
+
}
|
|
38
|
+
decorate(_editor, config) {
|
|
39
|
+
const embedBlockTheme = config.theme.embedBlock || {};
|
|
40
|
+
const className = {
|
|
41
|
+
base: embedBlockTheme.base || '',
|
|
42
|
+
focus: embedBlockTheme.focus || '',
|
|
43
|
+
};
|
|
44
|
+
return (_jsx(YouTubeComponent, { className: className, format: this.__format, nodeKey: this.getKey(), videoID: this.__id }));
|
|
45
|
+
}
|
|
46
|
+
isTopLevel() {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function $createYouTubeNode(videoID) {
|
|
51
|
+
return new YouTubeNode(videoID);
|
|
52
|
+
}
|
|
53
|
+
export function $isYouTubeNode(node) {
|
|
54
|
+
return node instanceof YouTubeNode;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=YouTubeNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"YouTubeNode.js","sourceRoot":"","sources":["../../src/nodes/YouTubeNode.tsx"],"names":[],"mappings":";AAqBA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAgC,MAAM,0CAA0C,CAAC;AAY5G,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,GACe;IACtB,OAAO,CACL,KAAC,0BAA0B,IACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,YAChB,iBACE,KAAK,EAAC,KAAK,EACX,MAAM,EAAC,KAAK,EACZ,GAAG,EAAE,iCAAiC,OAAO,EAAE,EAC/C,WAAW,EAAC,GAAG,EACf,KAAK,EAAC,0FAA0F,EAChG,eAAe,EAAE,IAAI,EACrB,KAAK,EAAC,eAAe,GACrB,GACyB,CAC9B,CAAC;AACJ,CAAC;AAWD,MAAM,OAAO,WAAY,SAAQ,kBAAkB;IACjD,IAAI,CAAS;IAEb,MAAM,CAAC,OAAO;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAiB;QAC5B,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,cAAqC;QACrD,MAAM,IAAI,GAAG,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,OAAO;YACL,GAAG,KAAK,CAAC,UAAU,EAAE;YACrB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,YAAY,EAAU,EAAE,MAA0B,EAAE,GAAa;QAC/D,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,OAAsB,EAAE,MAAoB;QACnD,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,eAAe,CAAC,IAAI,IAAI,EAAE;YAChC,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,EAAE;SACnC,CAAC;QACF,OAAO,CACL,KAAC,gBAAgB,IACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,IAAI,CAAC,QAAQ,EACrB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EACtB,OAAO,EAAE,IAAI,CAAC,IAAI,GAClB,CACH,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAkD;IAElD,OAAO,IAAI,YAAY,WAAW,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { EmbedConfig } from '@lexical/react/LexicalAutoEmbedPlugin';
|
|
3
|
+
interface PlaygroundEmbedConfig extends EmbedConfig {
|
|
4
|
+
contentName: string;
|
|
5
|
+
icon?: JSX.Element;
|
|
6
|
+
exampleUrl: string;
|
|
7
|
+
keywords: Array<string>;
|
|
8
|
+
description?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const YoutubeEmbedConfig: PlaygroundEmbedConfig;
|
|
11
|
+
export declare const EmbedConfigs: PlaygroundEmbedConfig[];
|
|
12
|
+
export declare function AutoEmbedDialog({ embedConfig, onClose, }: {
|
|
13
|
+
embedConfig: PlaygroundEmbedConfig;
|
|
14
|
+
onClose: () => void;
|
|
15
|
+
}): JSX.Element;
|
|
16
|
+
export declare const AutoEmbedPlugin: () => JSX.Element;
|
|
17
|
+
export default AutoEmbedPlugin;
|