Skip to content

Commit c373709

Browse files
committed
lexical: initcode
1 parent 915af0f commit c373709

File tree

4 files changed

+110
-29
lines changed

4 files changed

+110
-29
lines changed

packages/lexical/src/plugins/ComponentPickerMenuPlugin.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,12 @@ function ComponentPickerMenuItem({
125125

126126
export interface ComponentPickerMenuPluginProps {
127127
kernel?: Kernel;
128+
initCode?: string;
128129
}
129130

130131
export const ComponentPickerMenuPlugin = ({
131132
kernel,
133+
initCode = "print('Hello Jupyter UI')",
132134
}: ComponentPickerMenuPluginProps = {}): JSX.Element => {
133135
const [editor] = useLexicalComposerContext();
134136
const [modal, showModal] = useModal();
@@ -198,7 +200,7 @@ export const ComponentPickerMenuPlugin = ({
198200
}
199201

200202
editor.dispatchCommand(INSERT_JUPYTER_INPUT_OUTPUT_COMMAND, {
201-
code: "print('Hello Jupyter UI')",
203+
code: initCode,
202204
outputs: DEFAULT_INITIAL_OUTPUTS,
203205
loading: 'Loading...',
204206
});
@@ -359,7 +361,7 @@ export const ComponentPickerMenuPlugin = ({
359361
}),
360362
]
361363
: baseOptions;
362-
}, [editor, getDynamicOptions, queryString, showModal, kernel]);
364+
}, [editor, getDynamicOptions, queryString, showModal, kernel, initCode]);
363365

364366
const onSelectOption = useCallback(
365367
(
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
* Copyright (c) 2021-2023 Datalayer, Inc.
3+
*
4+
* MIT License
5+
*/
6+
7+
import { useMemo, useState } from 'react';
8+
import { createRoot } from 'react-dom/client';
9+
import { Text } from '@primer/react';
10+
import { Box } from '@datalayer/primer-addons';
11+
import { INotebookContent } from '@jupyterlab/nbformat';
12+
import { JupyterReactTheme } from '../theme/JupyterReactTheme';
13+
import { useJupyter } from '../jupyter';
14+
import {
15+
Notebook2,
16+
CellSidebarExtension,
17+
CellSidebarButton,
18+
NotebookToolbar,
19+
KernelIndicator,
20+
} from '../components';
21+
import { CellToolbarExtension } from './extensions';
22+
23+
import nbformat from './notebooks/NotebookExample1.ipynb.json';
24+
import { Session } from '@jupyterlab/services';
25+
import { OnSessionConnection } from '../state';
26+
27+
const Notebook2Example = () => {
28+
const { serviceManager } = useJupyter({ lite: true });
29+
const [session, setSession] = useState<Session.ISessionConnection>();
30+
const onSessionConnection: OnSessionConnection = (
31+
session: Session.ISessionConnection | undefined
32+
) => {
33+
console.log(
34+
'Received a Kernel Session.',
35+
session?.id,
36+
session?.kernel?.clientId
37+
);
38+
setSession(session);
39+
};
40+
const extensions = useMemo(
41+
() => [
42+
new CellToolbarExtension(),
43+
new CellSidebarExtension({ factory: CellSidebarButton }),
44+
],
45+
[]
46+
);
47+
return serviceManager ? (
48+
<JupyterReactTheme>
49+
<Box display="flex">
50+
<Box>
51+
<Text>Kernel Indicator</Text>
52+
</Box>
53+
<Box ml={3}>
54+
<KernelIndicator kernel={session?.kernel} />
55+
</Box>
56+
</Box>
57+
<Notebook2
58+
nbformat={nbformat as INotebookContent}
59+
id="notebook-nbformat-id"
60+
startDefaultKernel
61+
serviceManager={serviceManager}
62+
height="calc(100vh - 2.6rem)" // (Height - Toolbar Height).
63+
extensions={extensions}
64+
onSessionConnection={onSessionConnection}
65+
Toolbar={NotebookToolbar}
66+
/>
67+
</JupyterReactTheme>
68+
) : (
69+
<></>
70+
);
71+
};
72+
73+
const div = document.createElement('div');
74+
document.body.appendChild(div);
75+
const root = createRoot(div);
76+
77+
root.render(<Notebook2Example />);

packages/react/src/examples/NotebookLite.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
import { INotebookContent } from '@jupyterlab/nbformat';
88
import { Session } from '@jupyterlab/services';
9-
import { Box, Text } from '@primer/react';
9+
import { Text } from '@primer/react';
10+
import { Box } from '@datalayer/primer-addons';
1011
import { useMemo, useState } from 'react';
1112
import { createRoot } from 'react-dom/client';
1213
import { CellSidebarExtension, KernelIndicator, Notebook } from '../components';

packages/react/webpack.config.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,32 +51,33 @@ const ENTRY =
5151
// './src/examples/NotebookColormode';
5252
// './src/examples/NotebookCollaborative';
5353
// './src/examples/Notebook2Collaborative';
54-
// './src/examples/NotebookExtension';
55-
// './src/examples/NotebookKernel';
56-
// './src/examples/NotebookKernelChange';
57-
// './src/examples/NotebookLess';
58-
// './src/examples/NotebookLite';
59-
// './src/examples/NotebookLiteContext';
60-
// './src/examples/NotebookLocalServer';
61-
// './src/examples/NotebookMutationsKernel';
62-
// './src/examples/NotebookMutationsServiceManager';
63-
// './src/examples/NotebookNbformat';
64-
// './src/examples/NotebookNbformatChange';
65-
// './src/examples/NotebookNoContext';
66-
// './src/examples/NotebookNoPrimer';
67-
// './src/examples/NotebookOnSessionConnection';
68-
// './src/examples/NotebookPathChange';
69-
// './src/examples/NotebookReadonly';
70-
// './src/examples/NotebookServiceManager';
71-
// './src/examples/NotebookSimple';
72-
// './src/examples/NotebookSkeleton';
73-
// './src/examples/NotebookTheme';
74-
// './src/examples/NotebookThemeColormode';
75-
// './src/examples/NotebookToc';
76-
// './src/examples/NotebookURL';
77-
// './src/examples/NotebookURL';
78-
// './src/examples/ObservableHQ';
79-
'./src/examples/Output';
54+
'./src/examples/Notebook2Lite';
55+
// './src/examples/NotebookExtension';
56+
// './src/examples/NotebookKernel';
57+
// './src/examples/NotebookKernelChange';
58+
// './src/examples/NotebookLess';
59+
// './src/examples/NotebookLite';
60+
// './src/examples/NotebookLiteContext';
61+
// './src/examples/NotebookLocalServer';
62+
// './src/examples/NotebookMutationsKernel';
63+
// './src/examples/NotebookMutationsServiceManager';
64+
// './src/examples/NotebookNbformat';
65+
// './src/examples/NotebookNbformatChange';
66+
// './src/examples/NotebookNoContext';
67+
// './src/examples/NotebookNoPrimer';
68+
// './src/examples/NotebookOnSessionConnection';
69+
// './src/examples/NotebookPathChange';
70+
// './src/examples/NotebookReadonly';
71+
// './src/examples/NotebookServiceManager';
72+
// './src/examples/NotebookSimple';
73+
// './src/examples/NotebookSkeleton';
74+
// './src/examples/NotebookTheme';
75+
// './src/examples/NotebookThemeColormode';
76+
// './src/examples/NotebookToc';
77+
// './src/examples/NotebookURL';
78+
// './src/examples/NotebookURL';
79+
// './src/examples/ObservableHQ';
80+
// './src/examples/Output';
8081
// './src/examples/OutputIpynb';
8182
// './src/examples/OutputWithMonitoring';
8283
// './src/examples/Plotly';

0 commit comments

Comments
 (0)