Skip to content

Commit 70120a0

Browse files
liujupingJackLian
authored andcommitted
feat: get editor from this or params
1 parent 9fd28ef commit 70120a0

File tree

11 files changed

+53
-62
lines changed

11 files changed

+53
-62
lines changed

packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React, { Component, Fragment } from 'react';
22
import DragResizeEngine from './drag-resize-engine';
3-
import { observer, computed, globalContext } from '@alilc/lowcode-editor-core';
3+
import { observer, computed } from '@alilc/lowcode-editor-core';
44
import classNames from 'classnames';
55
import { SimulatorContext } from '../context';
66
import { BuiltinSimulatorHost } from '../host';
7-
import { OffsetObserver, Designer } from '../../designer';
7+
import { OffsetObserver, Designer, INode } from '../../designer';
88
import { Node } from '../../document';
99
import { normalizeTriggers } from '../../utils/misc';
1010

@@ -135,7 +135,7 @@ export class BoxResizingInstance extends Component<{
135135
// this.hoveringCapture.setBoundary(this.outline);
136136
this.willBind();
137137

138-
const resize = (e: MouseEvent, direction: string, node: any, moveX: number, moveY: number) => {
138+
const resize = (e: MouseEvent, direction: string, node: INode, moveX: number, moveY: number) => {
139139
const { advanced } = node.componentMeta;
140140
if (
141141
advanced.callbacks &&
@@ -149,7 +149,7 @@ export class BoxResizingInstance extends Component<{
149149
}
150150
};
151151

152-
const resizeStart = (e: MouseEvent, direction: string, node: any) => {
152+
const resizeStart = (e: MouseEvent, direction: string, node: INode) => {
153153
const { advanced } = node.componentMeta;
154154
if (
155155
advanced.callbacks &&
@@ -161,7 +161,7 @@ export class BoxResizingInstance extends Component<{
161161
}
162162
};
163163

164-
const resizeEnd = (e: MouseEvent, direction: string, node: any) => {
164+
const resizeEnd = (e: MouseEvent, direction: string, node: INode) => {
165165
const { advanced } = node.componentMeta;
166166
if (
167167
advanced.callbacks &&
@@ -172,8 +172,7 @@ export class BoxResizingInstance extends Component<{
172172
advanced.callbacks.onResizeEnd(e, cbNode);
173173
}
174174

175-
const workspace = globalContext.get('workspace');
176-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
175+
const editor = node.document?.designer.editor;
177176
const npm = node?.componentMeta?.npm;
178177
const selected =
179178
[npm?.package, npm?.componentName].filter((item) => !!item).join('-') ||

packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
ComponentType,
1010
} from 'react';
1111
import classNames from 'classnames';
12-
import { observer, computed, Tip, globalContext } from '@alilc/lowcode-editor-core';
12+
import { observer, computed, Tip } from '@alilc/lowcode-editor-core';
1313
import { createIcon, isReactComponent, isActionContentObject } from '@alilc/lowcode-utils';
1414
import { IPublicTypeActionContentObject } from '@alilc/lowcode-types';
1515
import { BuiltinSimulatorHost } from '../host';
@@ -131,8 +131,7 @@ function createAction(content: ReactNode | ComponentType<any> | IPublicTypeActio
131131
className="lc-borders-action"
132132
onClick={() => {
133133
action && action(node.internalToShellNode()!);
134-
const workspace = globalContext.get('workspace');
135-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
134+
const editor = node.document?.designer.editor;
136135
const npm = node?.componentMeta?.npm;
137136
const selected =
138137
[npm?.package, npm?.componentName].filter((item) => !!item).join('-') ||

packages/designer/src/builtin-simulator/live-editing/live-editing.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { obx, globalContext } from '@alilc/lowcode-editor-core';
1+
import { obx } from '@alilc/lowcode-editor-core';
22
import { IPublicTypePluginConfig, IPublicTypeLiveTextEditingConfig } from '@alilc/lowcode-types';
3-
import { Node, Prop } from '../../document';
3+
import { INode, Prop } from '../../document';
44

55
const EDITOR_KEY = 'data-setter-prop';
66

@@ -17,7 +17,7 @@ function defaultSaveContent(content: string, prop: Prop) {
1717
}
1818

1919
export interface EditingTarget {
20-
node: Node;
20+
node: INode;
2121
rootElement: HTMLElement;
2222
event: MouseEvent;
2323
}
@@ -47,13 +47,16 @@ export class LiveEditing {
4747

4848
@obx.ref private _editing: Prop | null = null;
4949

50+
private _dispose?: () => void;
51+
52+
private _save?: () => void;
53+
5054
apply(target: EditingTarget) {
5155
const { node, event, rootElement } = target;
5256
const targetElement = event.target as HTMLElement;
5357
const { liveTextEditing } = node.componentMeta;
5458

55-
const workspace = globalContext.get('workspace');
56-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
59+
const editor = node.document?.designer.editor;
5760
const npm = node?.componentMeta?.npm;
5861
const selected =
5962
[npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || '';
@@ -166,10 +169,6 @@ export class LiveEditing {
166169
return this._editing;
167170
}
168171

169-
private _dispose?: () => void;
170-
171-
private _save?: () => void;
172-
173172
saveAndDispose() {
174173
if (this._save) {
175174
this._save();

packages/designer/src/builtin-simulator/node-selector/index.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Overlay } from '@alifd/next';
22
import React, { MouseEvent } from 'react';
3-
import { Title, globalContext } from '@alilc/lowcode-editor-core';
3+
import { Title } from '@alilc/lowcode-editor-core';
44
import { canClickNode } from '@alilc/lowcode-utils';
55
import './index.less';
66

@@ -66,8 +66,7 @@ export default class InstanceNodeSelector extends React.Component<IProps, IState
6666

6767
if (canClick && typeof node.select === 'function') {
6868
node.select();
69-
const workspace = globalContext.get('workspace');
70-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
69+
const editor = node.document?.designer.editor;
7170
const npm = node?.componentMeta?.npm;
7271
const selected =
7372
[npm?.package, npm?.componentName].filter((item) => !!item).join('-') ||

packages/designer/src/component-meta.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ export function buildFilter(rule?: string | string[] | RegExp | IPublicTypeNesti
6060
export interface IComponentMeta extends IPublicModelComponentMeta<INode> {
6161
prototype?: any;
6262

63+
liveTextEditing?: IPublicTypeLiveTextEditingConfig[];
64+
6365
get rootSelector(): string | undefined;
6466

6567
setMetadata(metadata: IPublicTypeComponentMetadata): void;

packages/designer/src/document/document-model.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ export interface IDocumentModel extends Omit<IPublicModelDocumentModel<
148148
suspense(): void;
149149

150150
close(): void;
151+
152+
unlinkNode(node: INode): void;
153+
154+
destroyNode(node: INode): void;
151155
}
152156

153157
export class DocumentModel implements IDocumentModel {
@@ -333,6 +337,7 @@ export class DocumentModel implements IDocumentModel {
333337
this.import(schema as IPublicTypeRootSchema, true);
334338
this.simulator?.rerender();
335339
},
340+
this,
336341
);
337342

338343
this.setupListenActiveNodes();

packages/designer/src/document/history.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { reaction, untracked, globalContext, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core';
1+
import { reaction, untracked, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core';
22
import { IPublicTypeNodeSchema, IPublicModelHistory, IPublicTypeDisposable } from '@alilc/lowcode-types';
33
import { Logger } from '@alilc/lowcode-utils';
4+
import { IDocumentModel } from '../designer';
45

56
const logger = new Logger({ level: 'warn', bizName: 'history' });
67

@@ -37,10 +38,12 @@ export class History<T = IPublicTypeNodeSchema> implements IHistory {
3738
return this.session.data;
3839
}
3940

41+
private timeGap: number = 1000;
42+
4043
constructor(
4144
dataFn: () => T | null,
4245
private redoer: (data: T) => void,
43-
private timeGap: number = 1000,
46+
private document?: IDocumentModel,
4447
) {
4548
this.session = new Session(0, null, this.timeGap);
4649
this.records = [this.session];
@@ -130,8 +133,7 @@ export class History<T = IPublicTypeNodeSchema> implements IHistory {
130133
}
131134
const cursor = this.session.cursor - 1;
132135
this.go(cursor);
133-
const workspace = globalContext.get('workspace');
134-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
136+
const editor = this.document?.designer.editor;
135137
if (!editor) {
136138
return;
137139
}
@@ -144,8 +146,7 @@ export class History<T = IPublicTypeNodeSchema> implements IHistory {
144146
}
145147
const cursor = this.session.cursor + 1;
146148
this.go(cursor);
147-
const workspace = globalContext.get('workspace');
148-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
149+
const editor = this.document?.designer.editor;
149150
if (!editor) {
150151
return;
151152
}

packages/designer/src/document/node/node-children.ts

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { obx, computed, globalContext, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core';
1+
import { obx, computed, makeObservable, IEventBus, createModuleEventBus } from '@alilc/lowcode-editor-core';
22
import { Node, INode } from './node';
33
import { IPublicTypeNodeData, IPublicModelNodeChildren, IPublicEnumTransformStage, IPublicTypeDisposable } from '@alilc/lowcode-types';
44
import { shallowEqual, compatStage, isNodeSchema } from '@alilc/lowcode-utils';
@@ -16,12 +16,12 @@ export interface INodeChildren extends Omit<IPublicModelNodeChildren<INode>,
1616
'isEmpty' |
1717
'notEmpty'
1818
> {
19+
children: INode[];
20+
1921
get owner(): INode;
2022

2123
get length(): number;
2224

23-
children: INode[];
24-
2525
unlinkChild(node: INode): void;
2626

2727
/**
@@ -239,11 +239,8 @@ export class NodeChildren implements INodeChildren {
239239
}
240240
const { document } = node;
241241
/* istanbul ignore next */
242-
if (globalContext.has('editor')) {
243-
const workspace = globalContext.get('workspace');
244-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
245-
editor.eventBus.emit('node.remove', { node, index: i });
246-
}
242+
const editor = node.document?.designer.editor;
243+
editor?.eventBus.emit('node.remove', { node, index: i });
247244
document?.unlinkNode(node);
248245
document?.selection.remove(node.id);
249246
document?.destroyNode(node);
@@ -281,14 +278,11 @@ export class NodeChildren implements INodeChildren {
281278
const i = children.map(d => d.id).indexOf(node.id);
282279

283280
if (node.parent) {
284-
if (globalContext.has('editor')) {
285-
const workspace = globalContext.get('workspace');
286-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
287-
editor.eventBus.emit('node.remove.topLevel', {
288-
node,
289-
index: node.index,
290-
});
291-
}
281+
const editor = node.document?.designer.editor;
282+
editor?.eventBus.emit('node.remove.topLevel', {
283+
node,
284+
index: node.index,
285+
});
292286
}
293287

294288
if (i < 0) {
@@ -317,11 +311,8 @@ export class NodeChildren implements INodeChildren {
317311
});
318312
this.emitter.emit('insert', node);
319313
/* istanbul ignore next */
320-
if (globalContext.has('editor')) {
321-
const workspace = globalContext.get('workspace');
322-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
323-
editor.eventBus.emit('node.add', { node });
324-
}
314+
const editor = node.document?.designer.editor;
315+
editor?.eventBus.emit('node.add', { node });
325316
if (useMutator) {
326317
this.reportModified(node, this.owner, { type: 'insert' });
327318
}

packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ export class SettingsPrimaryPane extends Component<ISettingsPrimaryPaneProps, {
5353
}
5454

5555
renderBreadcrumb() {
56-
const { settings } = this.main;
57-
const { config } = this.props;
56+
const { settings, editor } = this.main;
5857
// const shouldIgnoreRoot = config.props?.ignoreRoot;
5958
const { shouldIgnoreRoot } = this.state;
6059
if (!settings) {
@@ -73,8 +72,6 @@ export class SettingsPrimaryPane extends Component<ISettingsPrimaryPaneProps, {
7372
);
7473
}
7574

76-
const workspace = globalContext.get('workspace');
77-
const editor = this.props.engineEditor;
7875
const designer = editor.get('designer');
7976
const current = designer?.currentSelection?.getNodes()?.[0];
8077
let node: INode | null = settings.first;

packages/editor-skeleton/src/components/widget-views/index.tsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Component, ReactElement } from 'react';
22
import { Icon } from '@alifd/next';
33
import classNames from 'classnames';
4-
import { Title, observer, Tip, globalContext } from '@alilc/lowcode-editor-core';
4+
import { Title, observer, Tip } from '@alilc/lowcode-editor-core';
55
import { DockProps } from '../../types';
66
import { PanelDock } from '../../widget/panel-dock';
77
import { composeTitle } from '../../widget/utils';
@@ -116,14 +116,12 @@ export class DraggableLineView extends Component<{ panel: Panel }> {
116116
}
117117

118118
// 抛出事件,对于有些需要 panel 插件随着 度变化进行再次渲染的,由panel插件内部监听事件实现
119-
const workspace = globalContext.get('workspace');
120-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
119+
const editor = this.props.panel.skeleton.editor;
121120
editor?.eventBus.emit('dockpane.drag', width);
122121
}
123122

124123
onDragChange(type: 'start' | 'end') {
125-
const workspace = globalContext.get('workspace');
126-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
124+
const editor = this.props.panel.skeleton.editor;
127125
editor?.eventBus.emit('dockpane.dragchange', type);
128126
// builtinSimulator 屏蔽掉 鼠标事件
129127
editor?.eventBus.emit('designer.builtinSimulator.disabledEvents', type === 'start');
@@ -187,8 +185,7 @@ export class TitledPanelView extends Component<{ panel: Panel; area?: string }>
187185
if (!panel.inited) {
188186
return null;
189187
}
190-
const workspace = globalContext.get('workspace');
191-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
188+
const editor = panel.skeleton.editor;
192189
const panelName = area ? `${area}-${panel.name}` : panel.name;
193190
editor?.eventBus.emit('skeleton.panel.toggle', {
194191
name: panelName || '',
@@ -250,8 +247,7 @@ export class PanelView extends Component<{
250247
if (!panel.inited) {
251248
return null;
252249
}
253-
const workspace = globalContext.get('workspace');
254-
const editor = workspace.isActive ? workspace.window.editor : globalContext.get('editor');
250+
const editor = panel.skeleton.editor;
255251
const panelName = area ? `${area}-${panel.name}` : panel.name;
256252
editor?.eventBus.emit('skeleton.panel.toggle', {
257253
name: panelName || '',

0 commit comments

Comments
 (0)