diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-hovering.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-hovering.tsx index 63201f31c..fa0d3b1dc 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-hovering.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-hovering.tsx @@ -39,27 +39,25 @@ export class BorderHoveringInstance extends PureComponent<{ } @observer -export class BorderHovering extends Component { - static contextType = SimulatorContext; - +export class BorderHovering extends Component<{ host: BuiltinSimulatorHost }> { shouldComponentUpdate() { return false; } @computed get scale() { - return (this.context as BuiltinSimulatorHost).viewport.scale; + return this.props.host.viewport.scale; } @computed get scrollX() { - return (this.context as BuiltinSimulatorHost).viewport.scrollX; + return this.props.host.viewport.scrollX; } @computed get scrollY() { - return (this.context as BuiltinSimulatorHost).viewport.scrollY; + return this.props.host.viewport.scrollY; } @computed get current() { - const host = this.context as BuiltinSimulatorHost; + const host = this.props.host; const doc = host.document; const selection = doc.selection; const current = host.designer.hovering.current; @@ -70,7 +68,7 @@ export class BorderHovering extends Component { } render() { - const host = this.context as BuiltinSimulatorHost; + const host = this.props.host; const current = this.current; if (!current || host.viewport.scrolling) { return ; diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx index 5597e9382..53b051ca5 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx @@ -132,11 +132,9 @@ function createAction(content: ReactNode | ComponentType | ActionContentObj } @observer -export class BorderSelectingForNode extends Component<{ node: Node }> { - static contextType = SimulatorContext; - +export class BorderSelectingForNode extends Component<{ host: BuiltinSimulatorHost; node: Node }> { get host(): BuiltinSimulatorHost { - return this.context; + return this.props.host; } get dragging(): boolean { @@ -177,11 +175,9 @@ export class BorderSelectingForNode extends Component<{ node: Node }> { } @observer -export class BorderSelecting extends Component { - static contextType = SimulatorContext; - +export class BorderSelecting extends Component<{ host: BuiltinSimulatorHost }> { get host(): BuiltinSimulatorHost { - return this.context; + return this.props.host; } get dragging(): boolean { @@ -211,7 +207,7 @@ export class BorderSelecting extends Component { return ( {selecting.map((node) => ( - + ))} ); diff --git a/packages/designer/src/builtin-simulator/bem-tools/index.tsx b/packages/designer/src/builtin-simulator/bem-tools/index.tsx index 0ad81c8c4..99fbc57c9 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/index.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/index.tsx @@ -1,7 +1,6 @@ import { Component } from 'react'; import { observer } from '@ali/lowcode-editor-core'; import { BorderHovering } from './border-hovering'; -import { SimulatorContext } from '../context'; import { BuiltinSimulatorHost } from '../host'; import { BorderSelecting } from './border-selecting'; import { InsertionView } from './insertion'; @@ -9,21 +8,19 @@ import './bem-tools.less'; import './borders.less'; @observer -export class BemTools extends Component { - static contextType = SimulatorContext; - +export class BemTools extends Component<{ host: BuiltinSimulatorHost }> { shouldComponentUpdate() { return false; } render() { - const host = this.context as BuiltinSimulatorHost; + const host = this.props.host; const { scrollX, scrollY, scale } = host.viewport; return (
- - - + + +
); } diff --git a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx index f630e3547..f253d843b 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx @@ -112,24 +112,19 @@ function processDetail({ target, detail, document }: DropLocation): InsertionDat } @observer -export class InsertionView extends Component { - static contextType = SimulatorContext; - - @computed get host(): BuiltinSimulatorHost { - return this.context; - } - +export class InsertionView extends Component<{ host: BuiltinSimulatorHost }> { shouldComponentUpdate() { return false; } render() { - const loc = this.host.document.dropLocation; + const { host } = this.props; + const loc = host.document.dropLocation; if (!loc) { return null; } - const { scale, scrollX, scrollY } = this.host.viewport; + const { scale, scrollX, scrollY } = host.viewport; const { edge, insertType, coverRect, nearRect, vertical } = processDetail(loc); if (!edge) { diff --git a/packages/designer/src/builtin-simulator/host-view.tsx b/packages/designer/src/builtin-simulator/host-view.tsx index 6d71ce9e3..23a5895ec 100644 --- a/packages/designer/src/builtin-simulator/host-view.tsx +++ b/packages/designer/src/builtin-simulator/host-view.tsx @@ -41,20 +41,17 @@ export class BuiltinSimulatorHostView extends Component { const { Provider } = SimulatorContext; return (
- - {/*progressing.visible ? : null*/} - - + {/*progressing.visible ? : null*/} +
); } } @observer -class Canvas extends Component { - static contextType = SimulatorContext; +class Canvas extends Component<{ host: BuiltinSimulatorHost }> { render() { - const sim = this.context as BuiltinSimulatorHost; + const sim = this.props.host; let className = 'lc-simulator-canvas'; if (sim.deviceClassName) { className += ` ${sim.deviceClassName}`; @@ -65,8 +62,8 @@ class Canvas extends Component { return (
sim.mountViewport(elmt)} className="lc-simulator-canvas-viewport"> - - + +
); @@ -74,10 +71,9 @@ class Canvas extends Component { } @observer -class Content extends Component { - static contextType = SimulatorContext; +class Content extends Component<{ host: BuiltinSimulatorHost }> { render() { - const sim = this.context as BuiltinSimulatorHost; + const sim = this.props.host; const viewport = sim.viewport; let frameStyle = {}; if (viewport.scale < 1) { diff --git a/packages/designer/src/document/node/props/props.ts b/packages/designer/src/document/node/props/props.ts index c9d61056a..98ac7a765 100644 --- a/packages/designer/src/document/node/props/props.ts +++ b/packages/designer/src/document/node/props/props.ts @@ -309,4 +309,11 @@ export class Props implements IPropParent { getPropValue(path: string): any { return this.getProp(path, false)?.value; } + + /** + * 设置单个属性值 + */ + setPropValue(path: string, value: any) { + this.getProp(path, true)!.setValue(value); + } } diff --git a/packages/vision-preset/src/pages.ts b/packages/vision-preset/src/pages.ts index ff17f214c..54ee854d2 100644 --- a/packages/vision-preset/src/pages.ts +++ b/packages/vision-preset/src/pages.ts @@ -12,6 +12,11 @@ export interface OldPageData { const pages = Object.assign(project, { setPages(pages: OldPageData[]) { + // FIXME: upgrade schema + pages[0].componentsTree.forEach((item: any) => { + item.lifeCycles = {}; + item.methods = {}; + }); project.load({ version: '1.0.0', componentsMap: [],