Skip to content

Commit 97ad678

Browse files
authored
Minor changes to dispatchers (action creators will dispatch multiple actions) (#9920)
* Fixes * Remove cyclic messages * Misc * Address code review comments * Oops * More oops * More fixes * Address code review comments * Address code review comments * Fix tests * Retry flaky test 3 times. * Fixes
1 parent 5c7b94e commit 97ad678

File tree

17 files changed

+199
-134
lines changed

17 files changed

+199
-134
lines changed

src/client/datascience/interactive-common/synchronization.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export type IInteractiveActionMapping = MessageMapping<IInteractiveWindowMapping
3030
// This way, if a new message is added, we'll make the decision early on whether it needs to be synchronized and how.
3131
// Rather than waiting for users to report issues related to new messages.
3232
const messageWithMessageTypes: MessageMapping<IInteractiveWindowMapping> & MessageMapping<CommonActionTypeMapping> = {
33+
[CommonActionType.ADD_AND_FOCUS_NEW_CELL]: MessageType.other,
3334
[CommonActionType.ADD_NEW_CELL]: MessageType.syncAcrossSameNotebooks | MessageType.syncWithLiveShare,
3435
[CommonActionType.ARROW_DOWN]: MessageType.syncWithLiveShare,
3536
[CommonActionType.ARROW_UP]: MessageType.syncWithLiveShare,
@@ -40,6 +41,7 @@ const messageWithMessageTypes: MessageMapping<IInteractiveWindowMapping> & Messa
4041
[CommonActionType.COPY_CELL_CODE]: MessageType.other,
4142
[CommonActionType.EDITOR_LOADED]: MessageType.other,
4243
[CommonActionType.EDIT_CELL]: MessageType.syncAcrossSameNotebooks | MessageType.syncWithLiveShare,
44+
[CommonActionType.EXECUTE_CELL_AND_ADVANCE]: MessageType.other,
4345
[CommonActionType.EXECUTE_ABOVE]: MessageType.other,
4446
[CommonActionType.EXECUTE_ALL_CELLS]: MessageType.other,
4547
[CommonActionType.EXECUTE_CELL]: MessageType.other,
@@ -49,9 +51,12 @@ const messageWithMessageTypes: MessageMapping<IInteractiveWindowMapping> & Messa
4951
[CommonActionType.GATHER_CELL]: MessageType.other,
5052
[CommonActionType.GET_VARIABLE_DATA]: MessageType.other,
5153
[CommonActionType.GOTO_CELL]: MessageType.syncWithLiveShare,
54+
[CommonActionType.INSERT_ABOVE_AND_FOCUS_NEW_CELL]: MessageType.other,
5255
[CommonActionType.INSERT_ABOVE]: MessageType.syncAcrossSameNotebooks | MessageType.syncWithLiveShare,
56+
[CommonActionType.INSERT_ABOVE_FIRST_AND_FOCUS_NEW_CELL]: MessageType.other,
5357
[CommonActionType.INSERT_ABOVE_FIRST]: MessageType.syncAcrossSameNotebooks | MessageType.syncWithLiveShare,
5458
[CommonActionType.INSERT_BELOW]: MessageType.syncAcrossSameNotebooks | MessageType.syncWithLiveShare,
59+
[CommonActionType.INSERT_BELOW_AND_FOCUS_NEW_CELL]: MessageType.other,
5560
[CommonActionType.INTERRUPT_KERNEL]: MessageType.other,
5661
[CommonActionType.LOADED_ALL_CELLS]: MessageType.other,
5762
[CommonActionType.LINK_CLICK]: MessageType.other,
@@ -71,6 +76,8 @@ const messageWithMessageTypes: MessageMapping<IInteractiveWindowMapping> & Messa
7176
[CommonActionType.TOGGLE_VARIABLE_EXPLORER]: MessageType.syncWithLiveShare,
7277
[CommonActionType.UNFOCUS_CELL]: MessageType.syncWithLiveShare,
7378
[CommonActionType.UNMOUNT]: MessageType.other,
79+
[CommonActionType.PostOutgoingMessage]: MessageType.other,
80+
[CommonActionType.REFRESH_VARIABLES]: MessageType.other,
7481

7582
// Types from InteractiveWindowMessages
7683
[InteractiveWindowMessages.Activate]: MessageType.other,

src/client/datascience/interactive-ipynb/nativeEditor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { inject, injectable, multiInject, named } from 'inversify';
77
import * as path from 'path';
88
import { Event, EventEmitter, Memento, Uri, ViewColumn, WebviewPanel } from 'vscode';
99

10+
import * as uuid from 'uuid/v4';
1011
import { createCodeCell, createErrorOutput } from '../../../datascience-ui/common/cellFactory';
1112
import { IApplicationShell, ICommandManager, IDocumentManager, ILiveShareApi, IWebPanelProvider, IWorkspaceService } from '../../common/application/types';
1213
import { ContextKey } from '../../common/contextKey';
@@ -242,7 +243,7 @@ export class NativeEditor extends InteractiveBase implements INotebookEditor {
242243
}
243244

244245
public addCellBelow() {
245-
this.postMessage(InteractiveWindowMessages.NotebookAddCellBelow).ignoreErrors();
246+
this.postMessage(InteractiveWindowMessages.NotebookAddCellBelow, { newCellId: uuid() }).ignoreErrors();
246247
}
247248

248249
protected addSysInfo(_reason: SysInfoReason): Promise<void> {

src/datascience-ui/history-react/redux/actions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const actionCreators = {
2727
undo: (): CommonAction => createIncomingAction(InteractiveWindowMessages.Undo),
2828
redo: (): CommonAction => createIncomingAction(InteractiveWindowMessages.Redo),
2929
linkClick: (href: string): CommonAction<ILinkClickAction> => createIncomingActionWithPayload(CommonActionType.LINK_CLICK, { href }),
30-
showPlot: (imageHtml: string): CommonAction<string> => createIncomingActionWithPayload(InteractiveWindowMessages.ShowPlot, imageHtml),
30+
showPlot: (imageHtml: string) => createIncomingActionWithPayload(InteractiveWindowMessages.ShowPlot, imageHtml),
3131
toggleInputBlock: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.TOGGLE_INPUT_BLOCK, { cellId }),
3232
gotoCell: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.GOTO_CELL, { cellId }),
3333
copyCellCode: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.COPY_CELL_CODE, { cellId }),

src/datascience-ui/interactive-common/redux/helpers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as Redux from 'redux';
77
import { IInteractiveWindowMapping, InteractiveWindowMessages } from '../../../client/datascience/interactive-common/interactiveWindowTypes';
88
import { BaseReduxActionPayload } from '../../../client/datascience/interactive-common/types';
99
import { CssMessages, SharedMessages } from '../../../client/datascience/messages';
10-
import { CommonAction, CommonActionType } from './reducers/types';
10+
import { CommonAction, CommonActionType, CommonActionTypeMapping } from './reducers/types';
1111

1212
const AllowedMessages = [...Object.values(InteractiveWindowMessages), ...Object.values(CssMessages), ...Object.values(SharedMessages), ...Object.values(CommonActionType)];
1313
export function isAllowedMessage(message: string) {
@@ -18,9 +18,9 @@ export function isAllowedAction(action: Redux.AnyAction) {
1818
return isAllowedMessage(action.type);
1919
}
2020

21-
export function createIncomingActionWithPayload<T>(type: CommonActionType | InteractiveWindowMessages, data: T): CommonAction<T> {
21+
export function createIncomingActionWithPayload<M extends IInteractiveWindowMapping & CommonActionTypeMapping, K extends keyof M>(type: K, data: M[K]): CommonAction<M[K]> {
2222
// tslint:disable-next-line: no-any
23-
return { type, payload: ({ data, messageDirection: 'incoming' } as any) as BaseReduxActionPayload<T> };
23+
return { type, payload: { data, messageDirection: 'incoming' } as any } as any;
2424
}
2525
export function createIncomingAction(type: CommonActionType | InteractiveWindowMessages): CommonAction {
2626
return { type, payload: { messageDirection: 'incoming', data: undefined } };

src/datascience-ui/interactive-common/redux/reducers/types.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ import { CursorPos, IMainState } from '../../mainState';
2121
*/
2222

2323
export enum CommonActionType {
24+
ADD_AND_FOCUS_NEW_CELL = 'action.add_new_cell_and_focus_cell',
25+
INSERT_ABOVE_AND_FOCUS_NEW_CELL = 'action.insert_above_and_focus_cell',
26+
INSERT_BELOW_AND_FOCUS_NEW_CELL = 'action.insert_below_and_focus_cell',
27+
INSERT_ABOVE_FIRST_AND_FOCUS_NEW_CELL = 'action.insert_above_first_and_focus_cell',
2428
ADD_NEW_CELL = 'action.add_new_cell',
2529
ARROW_DOWN = 'action.arrow_down',
2630
ARROW_UP = 'action.arrow_up',
@@ -34,6 +38,7 @@ export enum CommonActionType {
3438
EXECUTE_ABOVE = 'action.execute_above',
3539
EXECUTE_ALL_CELLS = 'action.execute_all_cells',
3640
EXECUTE_CELL = 'action.execute_cell',
41+
EXECUTE_CELL_AND_ADVANCE = 'action.execute_cell_and_advance',
3742
EXECUTE_CELL_AND_BELOW = 'action.execute_cell_and_below',
3843
EXPORT = 'action.export',
3944
FOCUS_CELL = 'action.focus_cell',
@@ -67,13 +72,18 @@ export enum CommonActionType {
6772
}
6873

6974
export type CommonActionTypeMapping = {
75+
[CommonActionType.ADD_AND_FOCUS_NEW_CELL]: IAddCellAction;
7076
[CommonActionType.INSERT_ABOVE]: ICellAction & IAddCellAction;
7177
[CommonActionType.INSERT_BELOW]: ICellAction & IAddCellAction;
7278
[CommonActionType.INSERT_ABOVE_FIRST]: IAddCellAction;
79+
[CommonActionType.INSERT_ABOVE_FIRST_AND_FOCUS_NEW_CELL]: IAddCellAction;
80+
[CommonActionType.INSERT_BELOW_AND_FOCUS_NEW_CELL]: ICellAction & IAddCellAction;
81+
[CommonActionType.INSERT_ABOVE_AND_FOCUS_NEW_CELL]: ICellAction & IAddCellAction;
7382
[CommonActionType.FOCUS_CELL]: ICellAndCursorAction;
74-
[CommonActionType.UNFOCUS_CELL]: ICodeAction;
83+
[CommonActionType.UNFOCUS_CELL]: ICellAction | ICodeAction;
7584
[CommonActionType.ADD_NEW_CELL]: IAddCellAction;
7685
[CommonActionType.EDIT_CELL]: IEditCellAction;
86+
[CommonActionType.EXECUTE_CELL_AND_ADVANCE]: IExecuteAction;
7787
[CommonActionType.EXECUTE_CELL]: IExecuteAction;
7888
[CommonActionType.EXECUTE_ALL_CELLS]: never | undefined;
7989
[CommonActionType.EXECUTE_ABOVE]: ICellAction;
@@ -108,6 +118,8 @@ export type CommonActionTypeMapping = {
108118
[CommonActionType.CODE_CREATED]: ICodeCreatedAction;
109119
[CommonActionType.GET_VARIABLE_DATA]: IJupyterVariablesRequest;
110120
[CommonActionType.TOGGLE_VARIABLE_EXPLORER]: never | undefined;
121+
[CommonActionType.PostOutgoingMessage]: never | undefined;
122+
[CommonActionType.REFRESH_VARIABLES]: never | undefined;
111123
};
112124

113125
export interface IShowDataViewerAction extends IShowDataViewer {}
@@ -149,14 +161,9 @@ export interface IEditCellAction extends ICodeAction {
149161

150162
// I.e. when using the operation `add`, we need the corresponding `IAddCellAction`.
151163
// They are mutually exclusive, if not `add`, then there's no `newCellId`.
152-
export type IExecuteAction =
153-
| (ICodeAction & {
154-
moveOp: 'select' | 'none';
155-
})
156-
| (ICodeAction &
157-
IAddCellAction & {
158-
moveOp: 'add';
159-
});
164+
export type IExecuteAction = ICodeAction & {
165+
moveOp: 'select' | 'none' | 'add';
166+
};
160167

161168
export interface ICodeCreatedAction extends ICellAction {
162169
modelId: string;

src/datascience-ui/interactive-common/redux/store.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ function createTestMiddleware(): Redux.Middleware<{}, IStore> {
167167
sendMessage(InteractiveWindowMessages.ExecutionRendered, { ids: diff });
168168
}
169169

170+
if (action.type !== 'action.postOutgoingMessage') {
171+
sendMessage(`DISPATCHED_ACTION_${action.type}`, {});
172+
}
170173
return res;
171174
};
172175
}

src/datascience-ui/native-editor/nativeCell.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,13 +271,15 @@ export class NativeCell extends React.Component<INativeCellProps> {
271271
case 'l':
272272
if (!this.isFocused() && this.isSelected()) {
273273
e.stopPropagation();
274+
e.preventDefault();
274275
this.props.toggleLineNumbers(cellId);
275276
this.props.sendCommand(NativeCommandType.ToggleLineNumbers, 'keyboard');
276277
}
277278
break;
278279
case 'o':
279280
if (!this.isFocused() && this.isSelected()) {
280281
e.stopPropagation();
282+
e.preventDefault();
281283
this.props.toggleOutput(cellId);
282284
this.props.sendCommand(NativeCommandType.ToggleOutput, 'keyboard');
283285
}
@@ -305,18 +307,19 @@ export class NativeCell extends React.Component<INativeCellProps> {
305307
case 'a':
306308
if (!this.isFocused()) {
307309
e.stopPropagation();
308-
this.props.insertAbove(cellId);
310+
e.preventDefault();
311+
setTimeout(() => this.props.insertAbove(cellId), 1);
309312
this.props.sendCommand(NativeCommandType.InsertAbove, 'keyboard');
310313
}
311314
break;
312315
case 'b':
313316
if (!this.isFocused()) {
314317
e.stopPropagation();
315-
this.props.insertBelow(cellId);
318+
e.preventDefault();
319+
setTimeout(() => this.props.insertBelow(cellId), 1);
316320
this.props.sendCommand(NativeCommandType.InsertBelow, 'keyboard');
317321
}
318322
break;
319-
320323
default:
321324
break;
322325
}
@@ -420,7 +423,7 @@ export class NativeCell extends React.Component<INativeCellProps> {
420423
};
421424

422425
private addNewCell = () => {
423-
this.props.insertBelow(this.cellId);
426+
setTimeout(() => this.props.insertBelow(this.cellId), 1);
424427
this.props.sendCommand(NativeCommandType.AddToEnd, 'mouse');
425428
};
426429

src/datascience-ui/native-editor/nativeEditor.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export class NativeEditor extends React.Component<INativeEditorProps> {
3737

3838
constructor(props: INativeEditorProps) {
3939
super(props);
40+
this.insertAboveFirst = this.insertAboveFirst.bind(this);
4041
}
4142

4243
public componentDidMount() {
@@ -83,7 +84,7 @@ export class NativeEditor extends React.Component<INativeEditorProps> {
8384
const progressBar = this.props.busy && !this.props.testMode ? <Progress /> : undefined;
8485
const addCellLine =
8586
this.props.cellVMs.length === 0 ? null : (
86-
<AddCellLine includePlus={true} className="add-cell-line-top" click={this.props.insertAboveFirst} baseTheme={this.props.baseTheme} />
87+
<AddCellLine includePlus={true} className="add-cell-line-top" click={this.insertAboveFirst} baseTheme={this.props.baseTheme} />
8788
);
8889

8990
return (
@@ -106,13 +107,16 @@ export class NativeEditor extends React.Component<INativeEditorProps> {
106107
);
107108
}
108109

110+
private insertAboveFirst() {
111+
setTimeout(() => this.props.insertAboveFirst(), 1);
112+
}
109113
// tslint:disable: react-this-binding-issue
110114
// tslint:disable-next-line: max-func-body-length
111115
private renderToolbarPanel() {
112116
const selectedInfo = getSelectedAndFocusedInfo(this.props);
113117

114118
const addCell = () => {
115-
this.props.addCell();
119+
setTimeout(() => this.props.addCell(), 1);
116120
this.props.sendCommand(NativeCommandType.AddToEnd, 'mouse');
117121
};
118122
const runAll = () => {
@@ -357,7 +361,7 @@ export class NativeEditor extends React.Component<INativeEditorProps> {
357361
}
358362

359363
const addNewCell = () => {
360-
this.props.insertBelow(cellVM.cell.id);
364+
setTimeout(() => this.props.insertBelow(cellVM.cell.id), 1);
361365
this.props.sendCommand(NativeCommandType.AddToEnd, 'mouse');
362366
};
363367
const firstLine = index === 0;

src/datascience-ui/native-editor/redux/actions.ts

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@ import { createIncomingAction, createIncomingActionWithPayload } from '../../int
99
import {
1010
CommonAction,
1111
CommonActionType,
12-
IAddCellAction,
1312
ICellAction,
1413
ICellAndCursorAction,
15-
IChangeCellTypeAction,
1614
ICodeAction,
1715
ICodeCreatedAction,
1816
IEditCellAction,
19-
IExecuteAction,
2017
ILinkClickAction,
2118
ISendCommandAction,
2219
IShowDataViewerAction
@@ -25,24 +22,17 @@ import { IMonacoModelContentChangeEvent } from '../../react-common/monacoHelpers
2522

2623
// See https://react-redux.js.org/using-react-redux/connect-mapdispatch#defining-mapdispatchtoprops-as-an-object
2724
export const actionCreators = {
28-
insertAbove: (cellId: string | undefined): CommonAction<ICellAction & IAddCellAction> =>
29-
createIncomingActionWithPayload(CommonActionType.INSERT_ABOVE, { cellId, newCellId: uuid() }),
30-
insertAboveFirst: (): CommonAction<IAddCellAction> => createIncomingActionWithPayload(CommonActionType.INSERT_ABOVE_FIRST, { newCellId: uuid() }),
31-
insertBelow: (cellId: string | undefined): CommonAction<ICellAction & IAddCellAction> =>
32-
createIncomingActionWithPayload(CommonActionType.INSERT_BELOW, { cellId, newCellId: uuid() }),
25+
addCell: () => createIncomingActionWithPayload(CommonActionType.ADD_AND_FOCUS_NEW_CELL, { newCellId: uuid() }),
26+
insertAboveFirst: () => createIncomingActionWithPayload(CommonActionType.INSERT_ABOVE_FIRST_AND_FOCUS_NEW_CELL, { newCellId: uuid() }),
27+
insertAbove: (cellId: string | undefined) => createIncomingActionWithPayload(CommonActionType.INSERT_ABOVE_AND_FOCUS_NEW_CELL, { cellId, newCellId: uuid() }),
28+
insertBelow: (cellId: string | undefined) => createIncomingActionWithPayload(CommonActionType.INSERT_BELOW_AND_FOCUS_NEW_CELL, { cellId, newCellId: uuid() }),
29+
executeCell: (cellId: string, code: string, moveOp: 'add' | 'select' | 'none') =>
30+
createIncomingActionWithPayload(CommonActionType.EXECUTE_CELL_AND_ADVANCE, { cellId, code, moveOp }),
3331
focusCell: (cellId: string, cursorPos: CursorPos = CursorPos.Current): CommonAction<ICellAndCursorAction> =>
3432
createIncomingActionWithPayload(CommonActionType.FOCUS_CELL, { cellId, cursorPos }),
35-
unfocusCell: (cellId: string, code: string): CommonAction<ICodeAction> => createIncomingActionWithPayload(CommonActionType.UNFOCUS_CELL, { cellId, code }),
33+
unfocusCell: (cellId: string, code: string) => createIncomingActionWithPayload(CommonActionType.UNFOCUS_CELL, { cellId, code }),
3634
selectCell: (cellId: string, cursorPos: CursorPos = CursorPos.Current): CommonAction<ICellAndCursorAction> =>
3735
createIncomingActionWithPayload(CommonActionType.SELECT_CELL, { cellId, cursorPos }),
38-
addCell: (): CommonAction<IAddCellAction> => createIncomingActionWithPayload(CommonActionType.ADD_NEW_CELL, { newCellId: uuid() }),
39-
executeCell: (cellId: string, code: string, moveOp: 'add' | 'select' | 'none'): CommonAction<IExecuteAction> => {
40-
if (moveOp === 'add') {
41-
return createIncomingActionWithPayload(CommonActionType.EXECUTE_CELL, { cellId, code, moveOp, newCellId: uuid() });
42-
} else {
43-
return createIncomingActionWithPayload(CommonActionType.EXECUTE_CELL, { cellId, code, moveOp });
44-
}
45-
},
4636
executeAllCells: (): CommonAction => createIncomingAction(CommonActionType.EXECUTE_ALL_CELLS),
4737
executeAbove: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.EXECUTE_ABOVE, { cellId }),
4838
executeCellAndBelow: (cellId: string, code: string): CommonAction<ICodeAction> => createIncomingActionWithPayload(CommonActionType.EXECUTE_CELL_AND_BELOW, { cellId, code }),
@@ -58,8 +48,7 @@ export const actionCreators = {
5848
createIncomingActionWithPayload(CommonActionType.SEND_COMMAND, { command, commandType }),
5949
moveCellUp: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.MOVE_CELL_UP, { cellId }),
6050
moveCellDown: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.MOVE_CELL_DOWN, { cellId }),
61-
changeCellType: (cellId: string, currentCode: string): CommonAction<IChangeCellTypeAction> =>
62-
createIncomingActionWithPayload(CommonActionType.CHANGE_CELL_TYPE, { cellId, currentCode }),
51+
changeCellType: (cellId: string, currentCode: string) => createIncomingActionWithPayload(CommonActionType.CHANGE_CELL_TYPE, { cellId, currentCode }),
6352
toggleLineNumbers: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.TOGGLE_LINE_NUMBERS, { cellId }),
6453
toggleOutput: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.TOGGLE_OUTPUT, { cellId }),
6554
deleteCell: (cellId: string): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.DELETE_CELL, { cellId }),
@@ -78,7 +67,7 @@ export const actionCreators = {
7867
code: e.model.getValue()
7968
}),
8069
linkClick: (href: string): CommonAction<ILinkClickAction> => createIncomingActionWithPayload(CommonActionType.LINK_CLICK, { href }),
81-
showPlot: (imageHtml: string): CommonAction<string> => createIncomingActionWithPayload(InteractiveWindowMessages.ShowPlot, imageHtml),
70+
showPlot: (imageHtml: string) => createIncomingActionWithPayload(InteractiveWindowMessages.ShowPlot, imageHtml),
8271
gatherCell: (cellId: string | undefined): CommonAction<ICellAction> => createIncomingActionWithPayload(CommonActionType.GATHER_CELL, { cellId }),
8372
editorLoaded: (): CommonAction => createIncomingAction(CommonActionType.EDITOR_LOADED),
8473
codeCreated: (cellId: string | undefined, modelId: string): CommonAction<ICodeCreatedAction> =>

0 commit comments

Comments
 (0)