hlerenow / chameleon

Web visual programming engine. (lowcode)
https://hlerenow.github.io/chameleon/
Apache License 2.0
177 stars 19 forks source link

feat: auto detect toolbox dir #13

Closed StringKe closed 1 year ago

StringKe commented 1 year ago

当 toolbox 不可见时候,修改显示位置。

https://github.com/users/hlerenow/projects/1/views/1?pane=issue&itemId=27702095

hlerenow commented 1 year ago

pnpm i 报错:

image

pnpm: 8.0.0 node: v16.14.0 npm: 8.3.1

StringKe commented 1 year ago

删除 pnpm-lock.yaml 重新构建一下?,我是加了一个 ahooks 的依赖。

hlerenow commented 1 year ago

删除之后,安装通过,但是 build 报错,之前的就没问题,可能需要排查下。你本地node, npm, pnpm用的什么版本?

StringKe commented 1 year ago

pnpm: 8.6.1 node 18.16.0 npm 9.5.1

hlerenow commented 1 year ago
image

更新后pnpm-lock 后 build 会报错,你本地 build 不会报错吗?

hlerenow commented 1 year ago

image 有的情况没有适配,依然被遮挡

hlerenow commented 1 year ago

commit 的时候在项目根目录使用 pnpm run cz 提交代码,会有 commit 模版,合并下最新的 master

StringKe commented 1 year ago

image 有的情况没有适配,依然被遮挡

画布滚动的事件有办法在 iframe 中监听到么?

hlerenow commented 1 year ago

https://github.com/hlerenow/chameleon/blob/b7ebb595e1ebdc529c5da975ae34e6b1100444aa/packages/layout/src/components/HighlightBox/index.tsx#LL64C1-L64C1

在 updatePos 中添加 toolBox 位置样式计算即可,不需要 ahooks 的钩子。updatePos 会定时自动调用

StringKe commented 1 year ago

我在 updatePos 中加入了这部份代码,目前较为奇怪的是当选中页面最顶的那个元素的时候会导致闪烁。

是因为计算的 toolBoxAbsRect 发生了变化,我没找到是因为什么引起变化。

        if (toolBoxRef.current) {
            const toolBoxRect = toolBoxRef.current?.getBoundingClientRect()

            const parentElement = toolBoxRef.current?.parentElement?.parentElement
            const parentRect = parentElement?.getBoundingClientRect()

            const toolBoxAbsRect = {
                top: (toolBoxRect?.top || 0) - (parentRect?.top || 0),
                left: (toolBoxRect?.left || 0) - (parentRect?.left || 0),
                width: toolBoxRect?.width || 0,
                height: toolBoxRect?.height || 0,
            } as DOMRect

             检查工具箱是否在视口之外
            const isOutsideViewport = toolBoxAbsRect.top < 0

             如果工具箱在视口之外,就移动它到父元素的下方
            if (isOutsideViewport) {
                toolBoxRef.current.style.top = `calc(100% + ${toolBoxAbsRect.height}px)`
            } else {
                toolBoxRef.current.style.top = '0'
            }
        }
hlerenow commented 1 year ago

你做一下 优化,不要每次都去 修改 dom 如果和上次位置一样就不要去去修改 dom

StringKe commented 1 year ago

build 的时候会出现错误,似乎是 eslint 规则引起的?

hlerenow commented 1 year ago

具体什么错误?

StringKe commented 1 year ago

具体什么错误?

eslint 配置中使用 plugin:react/recommended ,我看依赖里没有 eslint-plugin-react 的依赖。

hlerenow commented 1 year ago

贴一下 terminal 报错截图,有合并最新的 master吗?

StringKe commented 1 year ago

CleanShot 2023-06-15 at 11 33 28@2x

已经合并最新的 master 了

hlerenow commented 1 year ago

pnpm-lock 有冲突, 我本地用用 pr 分支,构建没有报错,这个错误可能需要你排查下。试试试 删除 nodeModules 重新安装

StringKe commented 1 year ago

pnpm-lock 有冲突, 我本地用用 pr 分支,构建没有报错,这个错误可能需要你排查下。试试试 删除 nodeModules 重新安装

重建之后正常了。能通过编译。