diff --git a/packages/demo/cloud-build.json b/packages/demo/cloud-build.json index 934ab050f..1d0afbef7 100644 --- a/packages/demo/cloud-build.json +++ b/packages/demo/cloud-build.json @@ -12,9 +12,9 @@ "@ali/lowcode-editor-preset-general": "window.LowcodeEditor", "@ali/lowcode-editor-core": "window.LowcodeEditor", "@ali/lowcode-editor-skeleton": "window.LowcodeEditor", - "@ali/lowcode-designer": "window.LowcodeEditor" + "@ali/lowcode-designer": "window.LowcodeEditor", + "rax": "var window.Rax" }, - "minify": false, "sourcemap": true, "outputAssetsPath": { "js": "", "css": "" diff --git a/packages/editor-core/src/hotkey.ts b/packages/editor-core/src/hotkey.ts index 50cca63ca..f991aaeab 100644 --- a/packages/editor-core/src/hotkey.ts +++ b/packages/editor-core/src/hotkey.ts @@ -328,23 +328,27 @@ function getKeyInfo(combination: string, action?: string): KeyInfo { * convention - prevent default and stop propogation on the event */ function fireCallback(callback: HotkeyCallback, e: KeyboardEvent, combo?: string, sequence?: string): void { - const editor = globalContext.get(Editor); - const designer = editor.get('designer'); - const node = designer?.currentSelection?.getNodes()?.[0]; - const npm = node?.componentMeta?.npm; - const selected = - [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; - if (callback(e, combo) === false) { - e.preventDefault(); - e.stopPropagation(); + try { + const editor = globalContext.get(Editor); + const designer = editor.get('designer'); + const node = designer?.currentSelection?.getNodes()?.[0]; + const npm = node?.componentMeta?.npm; + const selected = + [npm?.package, npm?.componentName].filter((item) => !!item).join('-') || node?.componentMeta?.componentName || ''; + if (callback(e, combo) === false) { + e.preventDefault(); + e.stopPropagation(); + } + editor?.emit('hotkey.callback.call', { + callback, + e, + combo, + sequence, + selected, + }); + } catch(err) { + console.error(err.message); } - editor?.emit('hotkey.callback.call', { - callback, - e, - combo, - sequence, - selected, - }); } export class Hotkey { diff --git a/packages/editor-preset-vision/build.json b/packages/editor-preset-vision/build.json index b9babfe67..8df991958 100644 --- a/packages/editor-preset-vision/build.json +++ b/packages/editor-preset-vision/build.json @@ -9,7 +9,8 @@ "externals": { "react": "var window.React", "react-dom": "var window.ReactDOM", - "prop-types": "var window.PropTypes" + "prop-types": "var window.PropTypes", + "rax": "var window.Rax" } } ], diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index efc0a895e..aecaa7410 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -56,7 +56,7 @@ function upgradePropsReducer(props: any) { type: 'JSSlot', title: (val.value.props as any)?.slotTitle, name: (val.value.props as any)?.slotName, - value: val.value.children + value: val.value.children, }; } else { val = val.value; @@ -130,7 +130,6 @@ designer.addPropsReducer((props, node) => { return props; }, TransformStage.Init); - function filterReducer(props: any, node: Node): any { const filters = node.componentMeta.getMetadata().experimental?.filters; if (filters && filters.length) { @@ -173,7 +172,7 @@ function compatiableReducer(props: any) { slotName: val.name, }, }, - } + }; } // 为了能降级到老版本,建议在后期版本去掉以下代码 if (isJSExpression(val) && !val.events) { @@ -268,7 +267,7 @@ skeleton.add({ props: { condition: () => { return designer.dragon.dragging && !getTreeMaster(designer).hasVisibleTreeBoard(); - } + }, }, content: OutlineBackupPane, }); diff --git a/packages/editor-skeleton/src/components/widget-views/index.less b/packages/editor-skeleton/src/components/widget-views/index.less new file mode 100644 index 000000000..1241b0dde --- /dev/null +++ b/packages/editor-skeleton/src/components/widget-views/index.less @@ -0,0 +1,8 @@ +.lc-widget-view-container { + height: 100%; + width: 100%; + + &.hidden { + display: none; + } +} diff --git a/packages/editor-skeleton/src/components/widget-views.tsx b/packages/editor-skeleton/src/components/widget-views/index.tsx similarity index 93% rename from packages/editor-skeleton/src/components/widget-views.tsx rename to packages/editor-skeleton/src/components/widget-views/index.tsx index e14b2e2df..cb29ce451 100644 --- a/packages/editor-skeleton/src/components/widget-views.tsx +++ b/packages/editor-skeleton/src/components/widget-views/index.tsx @@ -2,13 +2,15 @@ import { Component, ReactElement } from 'react'; import { Icon } from '@alifd/next'; import classNames from 'classnames'; import { Title, observer, Tip, globalContext, Editor } from '@ali/lowcode-editor-core'; -import { DockProps } from '../types'; -import PanelDock from '../widget/panel-dock'; -import { composeTitle } from '../widget/utils'; -import WidgetContainer from '../widget/widget-container'; -import Panel from '../widget/panel'; -import { IWidget } from '../widget/widget'; -import { SkeletonEvents } from '../skeleton'; +import { DockProps } from '../../types'; +import PanelDock from '../../widget/panel-dock'; +import { composeTitle } from '../../widget/utils'; +import WidgetContainer from '../../widget/widget-container'; +import Panel from '../../widget/panel'; +import { IWidget } from '../../widget/widget'; +import { SkeletonEvents } from '../../skeleton'; + +import './index.less'; export function DockView({ title, icon, description, size, className, onClick }: DockProps) { return ( @@ -262,9 +264,6 @@ export class WidgetView extends Component<{ widget: IWidget }> { } render() { const { widget } = this.props; - if (!widget.visible) { - return null; - } - return widget.body; + return
{widget.body}
; } } diff --git a/packages/rax-simulator-renderer/.babelrc b/packages/rax-simulator-renderer/.babelrc new file mode 100644 index 000000000..e0e2e5f34 --- /dev/null +++ b/packages/rax-simulator-renderer/.babelrc @@ -0,0 +1,9 @@ +{ + "plugins": [ + ["@babel/plugin-transform-react-jsx", { + "pragma": "createElement", // default pragma is React.createElement + "pragmaFrag": "createFragment", // default is React.Fragment + "throwIfNamespace": false // defaults to true + }] + ] +} diff --git a/packages/rax-simulator-renderer/build.json b/packages/rax-simulator-renderer/build.json index 703b8c7ce..70f118bdf 100644 --- a/packages/rax-simulator-renderer/build.json +++ b/packages/rax-simulator-renderer/build.json @@ -6,7 +6,13 @@ "filename": "rax-simulator-renderer", "library": "SimulatorRenderer", "libraryExport": "default", - "libraryTarget": "umd" + "libraryTarget": "umd", + "externals": { + "react": "var window.React", + "react-dom": "var window.ReactDOM", + "prop-types": "var window.PropTypes", + "rax": "var window.Rax" + } } ], "./build.plugin.js" diff --git a/packages/rax-simulator-renderer/package.json b/packages/rax-simulator-renderer/package.json index 1ffb2afd9..1c0dc63e3 100644 --- a/packages/rax-simulator-renderer/package.json +++ b/packages/rax-simulator-renderer/package.json @@ -30,6 +30,8 @@ }, "devDependencies": { "@alib/build-scripts": "^0.1.18", + "@babel/plugin-transform-react-jsx": "^7.10.4", + "@recore/obx": "^1.0.8", "@types/classnames": "^2.2.7", "@types/node": "^13.7.1", "@types/rax": "^1.0.0", diff --git a/packages/rax-simulator-renderer/src/renderer.ts b/packages/rax-simulator-renderer/src/renderer.ts index 67bb30b01..be68ca9ca 100644 --- a/packages/rax-simulator-renderer/src/renderer.ts +++ b/packages/rax-simulator-renderer/src/renderer.ts @@ -386,35 +386,34 @@ function getClosestNodeInstance(from: any, specId?: string): NodeInstance | return null; } -function matcher(parent: any) { - return parent.__isReactiveComponent && parent.props.componentId; +function isValidDesignModeRaxComponentInstance( + raxComponentInst: any, +): raxComponentInst is { + props: { + _leaf: Exclude['node'], null | undefined>; + }; +} { + const leaf = raxComponentInst?.props?._leaf; + return leaf && typeof leaf === 'object' && leaf.isNode; } function getNodeInstance(dom: HTMLElement): NodeInstance | null { const INTERNAL = '_internal'; + let instance = Instance.get(dom); - let node; while (instance && instance[INTERNAL]) { - if (matcher(instance)) { - node = instance; - break; + if (isValidDesignModeRaxComponentInstance(instance)) { + return { + nodeId: instance.props._leaf.getId(), + instance: instance, + node: instance.props._leaf, + }; } + instance = instance[INTERNAL].__parentInstance; } - if (!node) { - return null; - } - return { - nodeId: node.props.componentId, - instance: node - } - // return parent; - // const instance = fiberNode.stateNode; - // if (instance) { - // console.log(instance); - // } - // return getNodeInstance(fiberNode.return); - // return instance; + + return null; } function checkInstanceMounted(instance: any): boolean { diff --git a/scripts/deploy.sh b/scripts/deploy.sh index cf3729524..73f0973d3 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -30,8 +30,8 @@ lerna bootstrap lerna run cloud-build --stream cd $WORK_DIR -mv deploy-space/packages/demo/build $BUILD_DEST -mv deploy-space/packages/react-simulator-renderer/dist/* $BUILD_DEST +# mv deploy-space/packages/demo/build $BUILD_DEST +mv deploy-space/packages/react-simulator-renderer/dist $BUILD_DEST mv deploy-space/packages/rax-simulator-renderer/dist/* $BUILD_DEST mv deploy-space/packages/editor-preset-vision/dist/* $BUILD_DEST # mv deploy-space/packages/editor-preset-general/dist/* $BUILD_DEST