@flowgram.ai/free-container-plugin 0.1.8 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +178 -361
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +23 -40
- package/dist/index.d.ts +23 -40
- package/dist/index.js +188 -378
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/container-node-render/constant.ts","../../src/container-node-render/render.tsx","../../src/container-node-render/components/header/index.tsx","../../src/container-node-render/components/header/style.ts","../../src/container-node-render/components/background/index.tsx","../../src/container-node-render/components/background/style.ts","../../src/container-node-render/components/container/index.tsx","../../src/container-node-render/hooks/use-render-props.ts","../../src/container-node-render/components/container/style.ts","../../src/container-node-render/components/border/index.tsx","../../src/container-node-render/components/border/style.ts","../../src/container-node-render/components/ports/index.tsx","../../src/container-node-render/components/form/index.tsx","../../src/container-node-render/components/form/style.ts","../../src/node-into-container/constant.ts","../../src/node-into-container/service.ts","../../src/plugin.tsx"],"sourcesContent":["export const ContainerNodeRenderKey = 'container-node-render-key';\n","import React, { type FC } from 'react';\n\nimport type { ContainerNodeRenderProps } from './type';\nimport {\n ContainerNodeBackground,\n ContainerNodeHeader,\n ContainerNodePorts,\n ContainerNodeBorder,\n ContainerNodeContainer,\n} from './components';\n\nexport const ContainerNodeRender: FC<ContainerNodeRenderProps> = ({ content }) => (\n <ContainerNodeContainer>\n <ContainerNodeBackground />\n <ContainerNodeBorder />\n <ContainerNodeHeader>{content}</ContainerNodeHeader>\n <ContainerNodePorts />\n </ContainerNodeContainer>\n);\n","import React, { ReactNode, type FC } from 'react';\n\nimport { useNodeRender } from '@flowgram.ai/free-layout-core';\n\nimport { ContainerNodeHeaderStyle } from './style';\n\ninterface IContainerNodeHeader {\n children?: ReactNode | ReactNode[];\n}\n\nexport const ContainerNodeHeader: FC<IContainerNodeHeader> = ({ children }) => {\n const { startDrag, onFocus, onBlur } = useNodeRender();\n\n return (\n <ContainerNodeHeaderStyle\n className=\"container-node-header\"\n draggable={true}\n onMouseDown={(e) => {\n startDrag(e);\n }}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {children}\n </ContainerNodeHeaderStyle>\n );\n};\n","import styled from 'styled-components';\n\nexport const ContainerNodeHeaderStyle = styled.div`\n z-index: 0;\n\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: flex-start;\n\n width: 100%;\n height: auto;\n\n border-radius: 8px 8px 0 0;\n\n .container-node-logo {\n position: relative;\n\n flex-shrink: 0;\n\n width: 24px;\n height: 24px;\n\n border-radius: 4px;\n\n &::after {\n content: '';\n\n position: absolute;\n top: 0;\n left: 0;\n\n display: block;\n\n width: 100%;\n height: 100%;\n\n border-radius: 4px;\n box-shadow: inset 0 0 0 1px var(--coz-stroke-plus);\n }\n\n > img {\n width: 24px;\n height: 24px;\n border-radius: 4px;\n }\n }\n\n .container-node-title {\n margin: 0;\n padding: 0;\n\n font-size: 16px;\n font-weight: 500;\n font-style: normal;\n line-height: 22px;\n color: var(--coz-fg-primary, rgba(6, 7, 9, 80%));\n text-overflow: ellipsis;\n }\n\n .container-node-tooltip {\n height: 100%;\n }\n\n .container-node-tooltip-icon {\n display: flex;\n align-items: center;\n\n width: 16px;\n height: 100%;\n\n color: #a7a9b0;\n }\n`;\n","import React, { type FC } from 'react';\n\nimport { useNodeRender } from '@flowgram.ai/free-layout-core';\n\nimport { ContainerNodeBackgroundStyle } from './style';\n\nexport const ContainerNodeBackground: FC = () => {\n const { node } = useNodeRender();\n return (\n <ContainerNodeBackgroundStyle\n className=\"container-node-background\"\n data-flow-editor-selectable=\"true\"\n >\n <svg width=\"100%\" height=\"100%\">\n <pattern\n id=\"container-node-dot-pattern\"\n width=\"20\"\n height=\"20\"\n patternUnits=\"userSpaceOnUse\"\n >\n <circle cx=\"1\" cy=\"1\" r=\"1\" stroke=\"#eceeef\" fillOpacity=\"0.5\" />\n </pattern>\n <rect\n width=\"100%\"\n height=\"100%\"\n fill=\"url(#container-node-dot-pattern)\"\n data-node-panel-container={node.id}\n />\n </svg>\n </ContainerNodeBackgroundStyle>\n );\n};\n","import styled from 'styled-components';\n\nexport const ContainerNodeBackgroundStyle = styled.div`\n position: absolute;\n inset: 56px 18px 18px;\n`;\n","import React, { useEffect, useState, type FC, type ReactNode } from 'react';\n\nimport { useNodeRender, WorkflowNodePortsData } from '@flowgram.ai/free-layout-core';\nimport { FlowNodeTransformData } from '@flowgram.ai/document';\n\nimport { useContainerNodeRenderProps } from '../../hooks';\nimport { ContainerNodeContainerStyle } from './style';\n\ninterface IContainerNodeContainer {\n children: ReactNode | ReactNode[];\n}\n\nexport const ContainerNodeContainer: FC<IContainerNodeContainer> = ({ children }) => {\n const { node, selected, selectNode, nodeRef } = useNodeRender();\n const nodeMeta = node.getNodeMeta();\n const { size = { width: 300, height: 200 } } = nodeMeta;\n const { style = {} } = useContainerNodeRenderProps();\n\n const transform = node.getData<FlowNodeTransformData>(FlowNodeTransformData);\n const [width, setWidth] = useState(size.width);\n const [height, setHeight] = useState(size.height);\n\n const updatePorts = () => {\n const portsData = node.getData<WorkflowNodePortsData>(WorkflowNodePortsData);\n portsData.updateDynamicPorts();\n };\n\n const updateSize = () => {\n // 无子节点时\n if (node.blocks.length === 0) {\n setWidth(size.width);\n setHeight(size.height);\n return;\n }\n // 存在子节点时,只监听宽高变化\n setWidth(transform.bounds.width);\n setHeight(transform.bounds.height);\n };\n\n useEffect(() => {\n const dispose = transform.onDataChange(() => {\n updateSize();\n updatePorts();\n });\n return () => dispose.dispose();\n }, [transform, width, height]);\n\n useEffect(() => {\n // 初始化触发一次\n updateSize();\n }, []);\n\n return (\n <ContainerNodeContainerStyle\n className=\"container-node-container\"\n style={{\n width,\n height,\n outline: selected ? '1px solid var(--coz-stroke-hglt, #4E40E5)' : '',\n ...style,\n }}\n ref={nodeRef}\n data-node-selected={String(selected)}\n onMouseDown={selectNode}\n onClick={(e) => {\n selectNode(e);\n }}\n >\n {children}\n </ContainerNodeContainerStyle>\n );\n};\n","import { useNodeRender } from '@flowgram.ai/free-layout-core';\n\nimport { type ContainerNodeMetaRenderProps } from '../type';\n\nexport const useContainerNodeRenderProps = (): ContainerNodeMetaRenderProps => {\n const { node } = useNodeRender();\n const nodeMeta = node.getNodeMeta();\n\n const {\n title = '',\n tooltip,\n renderPorts = [],\n style = {},\n } = (nodeMeta?.renderContainerNode?.() ?? {}) as Partial<ContainerNodeMetaRenderProps>;\n\n return {\n title,\n tooltip,\n renderPorts,\n style,\n };\n};\n","import styled from 'styled-components';\n\nexport const ContainerNodeContainerStyle = styled.div`\n display: flex;\n align-items: flex-start;\n\n box-sizing: border-box;\n min-width: 400px;\n min-height: 300px;\n\n background-color: #f2f3f5;\n border-radius: 8px;\n outline: 1px solid var(--coz-stroke-plus, rgba(6, 7, 9, 15%));\n\n .container-node-container-selected {\n outline: 1px solid var(--coz-stroke-hglt, #4e40e5);\n }\n`;\n","import React, { type FC } from 'react';\n\nimport { useNodeRender } from '@flowgram.ai/free-layout-core';\nimport { FlowNodeTransformData } from '@flowgram.ai/document';\n\nimport { ContainerNodeBorderStyle } from './style';\n\nexport const ContainerNodeBorder: FC = () => {\n const { node } = useNodeRender();\n const transformData = node.getData(FlowNodeTransformData);\n const topWidth = Math.max(transformData.padding.top - 50, 50);\n\n return (\n <ContainerNodeBorderStyle\n className=\"container-node-border\"\n style={{\n borderTopWidth: topWidth,\n }}\n />\n );\n};\n","import styled from 'styled-components';\n\nexport const ContainerNodeBorderStyle = styled.div`\n pointer-events: none;\n\n position: absolute;\n\n display: flex;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n background-color: transparent;\n border: 1px solid var(--coz-stroke-plus, rgba(6, 7, 9, 15%));\n border-color: var(--coz-bg-plus, rgb(249, 249, 249));\n border-style: solid;\n border-width: 8px;\n border-radius: 8px;\n box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 4%), 0 4px 12px 0 rgba(0, 0, 0, 2%);\n\n &::before {\n content: '';\n\n position: absolute;\n z-index: 0;\n inset: -4px;\n\n background-color: transparent;\n border-color: var(--coz-bg-plus, rgb(249, 249, 249));\n border-style: solid;\n border-width: 4px;\n border-radius: 8px;\n }\n`;\n","import React, { useEffect, type FC } from 'react';\n\nimport { WorkflowPortRender } from '@flowgram.ai/free-lines-plugin';\nimport { WorkflowNodePortsData, useNodeRender } from '@flowgram.ai/free-layout-core';\n\nimport { useContainerNodeRenderProps } from '../../hooks';\n\nexport const ContainerNodePorts: FC = () => {\n const { node, ports } = useNodeRender();\n const { renderPorts } = useContainerNodeRenderProps();\n\n useEffect(() => {\n const portsData = node.getData<WorkflowNodePortsData>(WorkflowNodePortsData);\n portsData.updateDynamicPorts();\n }, [node]);\n\n return (\n <>\n {renderPorts.map((p) => (\n <div\n key={`canvas-port${p.id}`}\n className=\"container-node-port\"\n data-port-id={p.id}\n data-port-type={p.type}\n style={p.style}\n />\n ))}\n {ports.map((p) => (\n <WorkflowPortRender key={p.id} entity={p} />\n ))}\n </>\n );\n};\n","import React, { type FC } from 'react';\n\nimport { useNodeRender } from '@flowgram.ai/free-layout-core';\n\nimport { ContainerNodeFormStyle } from './style';\n\nexport const ContainerNodeForm: FC = () => {\n const { form } = useNodeRender();\n if (!form) {\n return null;\n }\n return <ContainerNodeFormStyle>{form.render()}</ContainerNodeFormStyle>;\n};\n","import styled from 'styled-components';\n\nexport const ContainerNodeFormStyle = styled.div`\n background-color: #fff;\n border-radius: 8px 8px 0 0;\n width: 100%;\n`;\n","export enum NodeIntoContainerType {\n In = 'in',\n Out = 'out',\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion -- no need */\nimport { throttle } from 'lodash';\nimport { inject, injectable } from 'inversify';\nimport {\n type PositionSchema,\n Rectangle,\n type Disposable,\n DisposableCollection,\n Emitter,\n} from '@flowgram.ai/utils';\nimport {\n type NodesDragEvent,\n WorkflowDocument,\n WorkflowDragService,\n WorkflowLinesManager,\n type WorkflowNodeEntity,\n WorkflowNodeMeta,\n WorkflowOperationBaseService,\n WorkflowSelectService,\n} from '@flowgram.ai/free-layout-core';\nimport { HistoryService } from '@flowgram.ai/free-history-plugin';\nimport { FlowNodeTransformData, FlowNodeRenderData } from '@flowgram.ai/document';\nimport { PlaygroundConfigEntity, TransformData } from '@flowgram.ai/core';\n\nimport type { NodeIntoContainerEvent, NodeIntoContainerState } from './type';\nimport { NodeIntoContainerType } from './constant';\n\n@injectable()\nexport class NodeIntoContainerService {\n public state: NodeIntoContainerState;\n\n @inject(WorkflowDragService)\n private dragService: WorkflowDragService;\n\n @inject(WorkflowDocument)\n private document: WorkflowDocument;\n\n @inject(PlaygroundConfigEntity)\n private playgroundConfig: PlaygroundConfigEntity;\n\n @inject(WorkflowOperationBaseService)\n private operationService: WorkflowOperationBaseService;\n\n @inject(WorkflowLinesManager)\n private linesManager: WorkflowLinesManager;\n\n @inject(HistoryService) private historyService: HistoryService;\n\n @inject(WorkflowSelectService) private selectService: WorkflowSelectService;\n\n private emitter = new Emitter<NodeIntoContainerEvent>();\n\n private toDispose = new DisposableCollection();\n\n public readonly on = this.emitter.event;\n\n public init(): void {\n this.initState();\n this.toDispose.push(this.emitter);\n }\n\n public ready(): void {\n this.toDispose.push(this.listenDragToContainer());\n }\n\n public dispose(): void {\n this.initState();\n this.toDispose.dispose();\n }\n\n /** 移除节点连线 */\n public async removeNodeLines(node: WorkflowNodeEntity): Promise<void> {\n const lines = this.linesManager.getAllLines();\n lines.forEach((line) => {\n if (line.from.id !== node.id && line.to?.id !== node.id) {\n return;\n }\n line.dispose();\n });\n await this.nextFrame();\n }\n\n /** 将节点移出容器 */\n public async moveOutContainer(params: { node: WorkflowNodeEntity }): Promise<void> {\n const { node } = params;\n const parentNode = node.parent;\n const containerNode = parentNode?.parent;\n const nodeJSON = await this.document.toNodeJSON(node);\n if (\n !parentNode ||\n !containerNode ||\n !this.isContainer(parentNode) ||\n !nodeJSON.meta?.position\n ) {\n return;\n }\n this.operationService.moveNode(node, {\n parent: containerNode,\n });\n const parentTransform = parentNode.getData<TransformData>(TransformData);\n this.operationService.updateNodePosition(node, {\n x: parentTransform.position.x + nodeJSON.meta!.position!.x,\n y: parentTransform.position.y + nodeJSON.meta!.position!.y,\n });\n parentTransform.fireChange();\n await this.nextFrame();\n parentTransform.fireChange();\n this.emitter.fire({\n type: NodeIntoContainerType.Out,\n node,\n sourceContainer: parentNode,\n targetContainer: containerNode,\n });\n }\n\n /** 能否将节点移出容器 */\n public canMoveOutContainer(node: WorkflowNodeEntity): boolean {\n const parentNode = node.parent;\n const containerNode = parentNode?.parent;\n if (!parentNode || !containerNode || !this.isContainer(parentNode)) {\n return false;\n }\n return true;\n }\n\n /** 初始化状态 */\n private initState(): void {\n this.state = {\n isDraggingNode: false,\n isSkipEvent: false,\n transforms: undefined,\n dragNode: undefined,\n dropNode: undefined,\n sourceParent: undefined,\n };\n }\n\n /** 监听节点拖拽 */\n private listenDragToContainer(): Disposable {\n const draggingNode = (e: NodesDragEvent) => this.draggingNode(e);\n const throttledDraggingNode = throttle(draggingNode, 200); // 200ms触发一次计算\n return this.dragService.onNodesDrag(async (event) => {\n if (this.selectService.selectedNodes.length !== 1) {\n return;\n }\n if (event.type === 'onDragStart') {\n if (this.state.isSkipEvent) {\n // 拖出容器后重新进入\n this.state.isSkipEvent = false;\n return;\n }\n this.historyService.startTransaction(); // 开始合并历史记录\n this.state.isDraggingNode = true;\n this.state.transforms = this.getContainerTransforms();\n this.state.dragNode = this.selectService.selectedNodes[0];\n this.state.dropNode = undefined;\n this.state.sourceParent = this.state.dragNode?.parent;\n await this.dragOutContainer(event); // 检查是否需拖出容器\n }\n if (event.type === 'onDragging') {\n throttledDraggingNode(event);\n }\n if (event.type === 'onDragEnd') {\n if (this.state.isSkipEvent) {\n // 拖出容器情况下需跳过本次事件\n return;\n }\n throttledDraggingNode.cancel();\n draggingNode(event); // 直接触发一次计算,防止延迟\n await this.dropNodeToContainer(); // 放置节点\n await this.clearInvalidLines(); // 清除非法线条\n this.setDropNode(undefined);\n this.initState(); // 重置状态\n this.historyService.endTransaction(); // 结束合并历史记录\n }\n });\n }\n\n /** 监听节点拖拽出容器 */\n private async dragOutContainer(event: NodesDragEvent): Promise<void> {\n const { dragNode } = this.state;\n const activated = event.triggerEvent.metaKey || event.triggerEvent.ctrlKey;\n if (\n !activated || // 必须按住指定按键\n !dragNode || // 必须有一个节点\n !this.canMoveOutContainer(dragNode) // 需要能被移出容器\n ) {\n return;\n }\n this.moveOutContainer({ node: dragNode });\n this.state.isSkipEvent = true;\n event.dragger.stop(event.dragEvent.clientX, event.dragEvent.clientY);\n await this.nextFrame();\n this.dragService.startDragSelectedNodes(event.triggerEvent);\n }\n\n /** 移除节点所有非法连线 */\n private async clearInvalidLines(): Promise<void> {\n const { dragNode, sourceParent } = this.state;\n if (!dragNode) {\n return;\n }\n if (dragNode.parent === sourceParent) {\n return;\n }\n const lines = this.linesManager.getAllLines();\n lines.forEach((line) => {\n if (line.from.id !== dragNode.id && line.to?.id !== dragNode.id) {\n return;\n }\n line.dispose();\n });\n await this.nextFrame();\n }\n\n /** 获取重叠位置 */\n private getCollisionTransform(params: {\n transforms: FlowNodeTransformData[];\n targetRect?: Rectangle;\n targetPoint?: PositionSchema;\n withPadding?: boolean;\n }): FlowNodeTransformData | undefined {\n const { targetRect, targetPoint, transforms, withPadding = false } = params;\n const collisionTransform = transforms.find((transform) => {\n const { bounds, entity } = transform;\n const padding = withPadding ? this.document.layout.getPadding(entity) : { left: 0, right: 0 };\n const transformRect = new Rectangle(\n bounds.x + padding.left + padding.right,\n bounds.y,\n bounds.width,\n bounds.height\n );\n // 检测两个正方形是否相互碰撞\n if (targetRect) {\n return this.isRectIntersects(targetRect, transformRect);\n }\n if (targetPoint) {\n return this.isPointInRect(targetPoint, transformRect);\n }\n return false;\n });\n return collisionTransform;\n }\n\n /** 设置放置节点高亮 */\n private setDropNode(dropNode?: WorkflowNodeEntity) {\n if (this.state.dropNode === dropNode) {\n return;\n }\n if (this.state.dropNode) {\n // 清除上一个节点高亮\n const renderData = this.state.dropNode.getData(FlowNodeRenderData);\n const renderDom = renderData.node?.children?.[0] as HTMLElement;\n if (renderDom) {\n renderDom.style.outline = '';\n }\n }\n this.state.dropNode = dropNode;\n if (!dropNode) {\n return;\n }\n // 设置当前节点高亮\n const renderData = dropNode.getData(FlowNodeRenderData);\n const renderDom = renderData.node?.children?.[0] as HTMLElement;\n if (renderDom) {\n renderDom.style.outline = '1px solid var(--coz-stroke-hglt,#4e40e5)';\n }\n }\n\n /** 获取容器节点transforms */\n private getContainerTransforms(): FlowNodeTransformData[] {\n return this.document\n .getRenderDatas(FlowNodeTransformData, false)\n .filter((transform) => {\n const { entity } = transform;\n if (entity.originParent) {\n return entity.getNodeMeta().selectable && entity.originParent.getNodeMeta().selectable;\n }\n return entity.getNodeMeta().selectable;\n })\n .filter((transform) => this.isContainer(transform.entity));\n }\n\n /** 放置节点到容器 */\n private async dropNodeToContainer(): Promise<void> {\n const { dropNode, dragNode, isDraggingNode } = this.state;\n if (!isDraggingNode || !dragNode || !dropNode) {\n return;\n }\n return await this.moveIntoContainer({\n node: dragNode,\n containerNode: dropNode,\n });\n }\n\n /** 拖拽节点 */\n private draggingNode(nodeDragEvent: NodesDragEvent): void {\n const { dragNode, isDraggingNode, transforms } = this.state;\n if (!isDraggingNode || !dragNode || this.isContainer(dragNode) || !transforms?.length) {\n return this.setDropNode(undefined);\n }\n const mousePos = this.playgroundConfig.getPosFromMouseEvent(nodeDragEvent.dragEvent);\n const collisionTransform = this.getCollisionTransform({\n targetPoint: mousePos,\n transforms: this.state.transforms ?? [],\n });\n const dropNode = collisionTransform?.entity;\n if (!dropNode || dragNode.parent?.id === dropNode.id) {\n return this.setDropNode(undefined);\n }\n const canDrop = this.dragService.canDropToNode({\n dragNodeType: dragNode.flowNodeType,\n dropNode,\n });\n if (!canDrop.allowDrop) {\n return this.setDropNode(undefined);\n }\n return this.setDropNode(canDrop.dropNode);\n }\n\n /** 将节点移入容器 */\n private async moveIntoContainer(params: {\n node: WorkflowNodeEntity;\n containerNode: WorkflowNodeEntity;\n }): Promise<void> {\n const { node, containerNode } = params;\n const parentNode = node.parent;\n const nodeJSON = await this.document.toNodeJSON(node);\n\n this.operationService.moveNode(node, {\n parent: containerNode,\n });\n\n this.operationService.updateNodePosition(\n node,\n this.dragService.adjustSubNodePosition(\n nodeJSON.type as string,\n containerNode,\n nodeJSON.meta!.position\n )\n );\n\n await this.nextFrame();\n\n this.emitter.fire({\n type: NodeIntoContainerType.In,\n node,\n sourceContainer: parentNode,\n targetContainer: containerNode,\n });\n }\n\n private isContainer(node?: WorkflowNodeEntity): boolean {\n return node?.getNodeMeta<WorkflowNodeMeta>().isContainer ?? false;\n }\n\n /** 判断点是否在矩形内 */\n private isPointInRect(point: PositionSchema, rect: Rectangle): boolean {\n return (\n point.x >= rect.left && point.x <= rect.right && point.y >= rect.top && point.y <= rect.bottom\n );\n }\n\n /** 判断两个矩形是否相交 */\n private isRectIntersects(rectA: Rectangle, rectB: Rectangle): boolean {\n // 检查水平方向是否有重叠\n const hasHorizontalOverlap = rectA.right > rectB.left && rectA.left < rectB.right;\n // 检查垂直方向是否有重叠\n const hasVerticalOverlap = rectA.bottom > rectB.top && rectA.top < rectB.bottom;\n // 只有当水平和垂直方向都有重叠时,两个矩形才相交\n return hasHorizontalOverlap && hasVerticalOverlap;\n }\n\n private async nextFrame(): Promise<void> {\n await new Promise((resolve) => requestAnimationFrame(resolve));\n }\n}\n","import React from 'react';\n\nimport { FlowRendererRegistry } from '@flowgram.ai/renderer';\nimport { definePluginCreator } from '@flowgram.ai/core';\n\nimport type { WorkflowContainerPluginOptions } from './type';\nimport { NodeIntoContainerService } from './node-into-container';\nimport {\n ContainerNodeRenderKey,\n ContainerNodeRender,\n ContainerNodeRenderProps,\n} from './container-node-render';\n\nexport const createContainerNodePlugin = definePluginCreator<WorkflowContainerPluginOptions>({\n onBind: ({ bind }) => {\n bind(NodeIntoContainerService).toSelf().inSingletonScope();\n },\n onInit(ctx, options) {\n ctx.get(NodeIntoContainerService).init();\n\n const registry = ctx.get<FlowRendererRegistry>(FlowRendererRegistry);\n registry.registerReactComponent(ContainerNodeRenderKey, (props: ContainerNodeRenderProps) => (\n <ContainerNodeRender {...props} content={options.renderContent} />\n ));\n },\n onReady(ctx, options) {\n if (options.disableNodeIntoContainer !== true) {\n ctx.get(NodeIntoContainerService).ready();\n }\n },\n onDispose(ctx) {\n ctx.get(NodeIntoContainerService).dispose();\n },\n});\n"],"mappings":"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","names":["React","React","useNodeRender","styled","useNodeRender","React","React","useNodeRender","useNodeRender","styled","useNodeRender","React","React","useNodeRender","FlowNodeTransformData","styled","useNodeRender","FlowNodeTransformData","React","React","useEffect","WorkflowNodePortsData","useNodeRender","useNodeRender","useEffect","WorkflowNodePortsData","React","React","useNodeRender","styled","useNodeRender","React","React","NodeIntoContainerType","FlowNodeTransformData","renderData","renderDom","FlowNodeTransformData","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../../src/node-into-container/constant.ts","../../src/node-into-container/service.ts","../../src/sub-canvas/hooks/use-node-size.ts","../../src/sub-canvas/components/background/index.tsx","../../src/sub-canvas/components/background/style.ts","../../src/sub-canvas/components/border/index.tsx","../../src/sub-canvas/components/border/style.ts","../../src/sub-canvas/components/render/index.tsx","../../src/sub-canvas/components/render/style.ts","../../src/plugin.tsx"],"sourcesContent":["export enum NodeIntoContainerType {\n In = 'in',\n Out = 'out',\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion -- no need */\nimport { throttle } from 'lodash';\nimport { inject, injectable } from 'inversify';\nimport {\n type PositionSchema,\n Rectangle,\n type Disposable,\n DisposableCollection,\n Emitter,\n} from '@flowgram.ai/utils';\nimport {\n type NodesDragEvent,\n WorkflowDocument,\n WorkflowDragService,\n WorkflowLinesManager,\n type WorkflowNodeEntity,\n WorkflowNodeMeta,\n WorkflowOperationBaseService,\n WorkflowSelectService,\n} from '@flowgram.ai/free-layout-core';\nimport { HistoryService } from '@flowgram.ai/free-history-plugin';\nimport { FlowNodeTransformData, FlowNodeRenderData } from '@flowgram.ai/document';\nimport { PlaygroundConfigEntity, TransformData } from '@flowgram.ai/core';\n\nimport type { NodeIntoContainerEvent, NodeIntoContainerState } from './type';\nimport { NodeIntoContainerType } from './constant';\n\n@injectable()\nexport class NodeIntoContainerService {\n public state: NodeIntoContainerState;\n\n @inject(WorkflowDragService)\n private dragService: WorkflowDragService;\n\n @inject(WorkflowDocument)\n private document: WorkflowDocument;\n\n @inject(PlaygroundConfigEntity)\n private playgroundConfig: PlaygroundConfigEntity;\n\n @inject(WorkflowOperationBaseService)\n private operationService: WorkflowOperationBaseService;\n\n @inject(WorkflowLinesManager)\n private linesManager: WorkflowLinesManager;\n\n @inject(HistoryService) private historyService: HistoryService;\n\n @inject(WorkflowSelectService) private selectService: WorkflowSelectService;\n\n private emitter = new Emitter<NodeIntoContainerEvent>();\n\n private toDispose = new DisposableCollection();\n\n public readonly on = this.emitter.event;\n\n public init(): void {\n this.initState();\n this.toDispose.push(this.emitter);\n }\n\n public ready(): void {\n this.toDispose.push(this.listenDragToContainer());\n }\n\n public dispose(): void {\n this.initState();\n this.toDispose.dispose();\n }\n\n /** 移除节点连线 */\n public async removeNodeLines(node: WorkflowNodeEntity): Promise<void> {\n const lines = this.linesManager.getAllLines();\n lines.forEach((line) => {\n if (line.from.id !== node.id && line.to?.id !== node.id) {\n return;\n }\n line.dispose();\n });\n await this.nextFrame();\n }\n\n /** 将节点移出容器 */\n public async moveOutContainer(params: { node: WorkflowNodeEntity }): Promise<void> {\n const { node } = params;\n const parentNode = node.parent;\n const containerNode = parentNode?.parent;\n const nodeJSON = await this.document.toNodeJSON(node);\n if (\n !parentNode ||\n !containerNode ||\n !this.isContainer(parentNode) ||\n !nodeJSON.meta?.position\n ) {\n return;\n }\n this.operationService.moveNode(node, {\n parent: containerNode,\n });\n const parentTransform = parentNode.getData<TransformData>(TransformData);\n this.operationService.updateNodePosition(node, {\n x: parentTransform.position.x + nodeJSON.meta!.position!.x,\n y: parentTransform.position.y + nodeJSON.meta!.position!.y,\n });\n parentTransform.fireChange();\n await this.nextFrame();\n parentTransform.fireChange();\n this.emitter.fire({\n type: NodeIntoContainerType.Out,\n node,\n sourceContainer: parentNode,\n targetContainer: containerNode,\n });\n }\n\n /** 能否将节点移出容器 */\n public canMoveOutContainer(node: WorkflowNodeEntity): boolean {\n const parentNode = node.parent;\n const containerNode = parentNode?.parent;\n if (!parentNode || !containerNode || !this.isContainer(parentNode)) {\n return false;\n }\n const canDrop = this.dragService.canDropToNode({\n dragNodeType: node.flowNodeType,\n dropNode: containerNode,\n });\n if (!canDrop.allowDrop) {\n return false;\n }\n return true;\n }\n\n /** 初始化状态 */\n private initState(): void {\n this.state = {\n isDraggingNode: false,\n isSkipEvent: false,\n transforms: undefined,\n dragNode: undefined,\n dropNode: undefined,\n sourceParent: undefined,\n };\n }\n\n /** 监听节点拖拽 */\n private listenDragToContainer(): Disposable {\n const draggingNode = (e: NodesDragEvent) => this.draggingNode(e);\n const throttledDraggingNode = throttle(draggingNode, 200); // 200ms触发一次计算\n return this.dragService.onNodesDrag(async (event) => {\n if (this.selectService.selectedNodes.length !== 1) {\n return;\n }\n if (event.type === 'onDragStart') {\n if (this.state.isSkipEvent) {\n // 拖出容器后重新进入\n this.state.isSkipEvent = false;\n return;\n }\n this.historyService.startTransaction(); // 开始合并历史记录\n this.state.isDraggingNode = true;\n this.state.transforms = this.getContainerTransforms();\n this.state.dragNode = this.selectService.selectedNodes[0];\n this.state.dropNode = undefined;\n this.state.sourceParent = this.state.dragNode?.parent;\n await this.dragOutContainer(event); // 检查是否需拖出容器\n }\n if (event.type === 'onDragging') {\n throttledDraggingNode(event);\n }\n if (event.type === 'onDragEnd') {\n if (this.state.isSkipEvent) {\n // 拖出容器情况下需跳过本次事件\n return;\n }\n throttledDraggingNode.cancel();\n draggingNode(event); // 直接触发一次计算,防止延迟\n await this.dropNodeToContainer(); // 放置节点\n await this.clearInvalidLines(); // 清除非法线条\n this.setDropNode(undefined);\n this.initState(); // 重置状态\n this.historyService.endTransaction(); // 结束合并历史记录\n }\n });\n }\n\n /** 监听节点拖拽出容器 */\n private async dragOutContainer(event: NodesDragEvent): Promise<void> {\n const { dragNode } = this.state;\n const activated = event.triggerEvent.metaKey || event.triggerEvent.ctrlKey;\n if (\n !activated || // 必须按住指定按键\n !dragNode || // 必须有一个节点\n !this.canMoveOutContainer(dragNode) // 需要能被移出容器\n ) {\n return;\n }\n this.moveOutContainer({ node: dragNode });\n this.state.isSkipEvent = true;\n event.dragger.stop(event.dragEvent.clientX, event.dragEvent.clientY);\n await this.nextFrame();\n this.dragService.startDragSelectedNodes(event.triggerEvent);\n }\n\n /** 移除节点所有非法连线 */\n private async clearInvalidLines(): Promise<void> {\n const { dragNode, sourceParent } = this.state;\n if (!dragNode) {\n return;\n }\n if (dragNode.parent === sourceParent) {\n return;\n }\n const lines = this.linesManager.getAllLines();\n lines.forEach((line) => {\n if (line.from.id !== dragNode.id && line.to?.id !== dragNode.id) {\n return;\n }\n line.dispose();\n });\n await this.nextFrame();\n }\n\n /** 获取重叠位置 */\n private getCollisionTransform(params: {\n transforms: FlowNodeTransformData[];\n targetRect?: Rectangle;\n targetPoint?: PositionSchema;\n withPadding?: boolean;\n }): FlowNodeTransformData | undefined {\n const { targetRect, targetPoint, transforms, withPadding = false } = params;\n const collisionTransform = transforms.find((transform) => {\n const { bounds, entity } = transform;\n const padding = withPadding ? this.document.layout.getPadding(entity) : { left: 0, right: 0 };\n const transformRect = new Rectangle(\n bounds.x + padding.left + padding.right,\n bounds.y,\n bounds.width,\n bounds.height\n );\n // 检测两个正方形是否相互碰撞\n if (targetRect) {\n return this.isRectIntersects(targetRect, transformRect);\n }\n if (targetPoint) {\n return this.isPointInRect(targetPoint, transformRect);\n }\n return false;\n });\n return collisionTransform;\n }\n\n /** 设置放置节点高亮 */\n private setDropNode(dropNode?: WorkflowNodeEntity) {\n if (this.state.dropNode === dropNode) {\n return;\n }\n if (this.state.dropNode) {\n // 清除上一个节点高亮\n const renderData = this.state.dropNode.getData(FlowNodeRenderData);\n const renderDom = renderData.node?.children?.[0] as HTMLElement;\n if (renderDom) {\n renderDom.classList.remove('selected');\n }\n }\n this.state.dropNode = dropNode;\n if (!dropNode) {\n return;\n }\n // 设置当前节点高亮\n const renderData = dropNode.getData(FlowNodeRenderData);\n const renderDom = renderData.node?.children?.[0] as HTMLElement;\n if (renderDom) {\n renderDom.classList.add('selected');\n }\n }\n\n /** 获取容器节点transforms */\n private getContainerTransforms(): FlowNodeTransformData[] {\n return this.document\n .getRenderDatas(FlowNodeTransformData, false)\n .filter((transform) => {\n const { entity } = transform;\n if (entity.originParent) {\n return entity.getNodeMeta().selectable && entity.originParent.getNodeMeta().selectable;\n }\n return entity.getNodeMeta().selectable;\n })\n .filter((transform) => this.isContainer(transform.entity));\n }\n\n /** 放置节点到容器 */\n private async dropNodeToContainer(): Promise<void> {\n const { dropNode, dragNode, isDraggingNode } = this.state;\n if (!isDraggingNode || !dragNode || !dropNode) {\n return;\n }\n return await this.moveIntoContainer({\n node: dragNode,\n containerNode: dropNode,\n });\n }\n\n /** 拖拽节点 */\n private draggingNode(nodeDragEvent: NodesDragEvent): void {\n const { dragNode, isDraggingNode, transforms } = this.state;\n if (!isDraggingNode || !dragNode || this.isContainer(dragNode) || !transforms?.length) {\n return this.setDropNode(undefined);\n }\n const mousePos = this.playgroundConfig.getPosFromMouseEvent(nodeDragEvent.dragEvent);\n const collisionTransform = this.getCollisionTransform({\n targetPoint: mousePos,\n transforms: this.state.transforms ?? [],\n });\n const dropNode = collisionTransform?.entity;\n if (!dropNode || dragNode.parent?.id === dropNode.id) {\n return this.setDropNode(undefined);\n }\n const canDrop = this.dragService.canDropToNode({\n dragNodeType: dragNode.flowNodeType,\n dropNode,\n });\n if (!canDrop.allowDrop) {\n return this.setDropNode(undefined);\n }\n return this.setDropNode(canDrop.dropNode);\n }\n\n /** 将节点移入容器 */\n private async moveIntoContainer(params: {\n node: WorkflowNodeEntity;\n containerNode: WorkflowNodeEntity;\n }): Promise<void> {\n const { node, containerNode } = params;\n const parentNode = node.parent;\n const nodeJSON = await this.document.toNodeJSON(node);\n\n this.operationService.moveNode(node, {\n parent: containerNode,\n });\n\n this.operationService.updateNodePosition(\n node,\n this.dragService.adjustSubNodePosition(\n nodeJSON.type as string,\n containerNode,\n nodeJSON.meta!.position\n )\n );\n\n await this.nextFrame();\n\n this.emitter.fire({\n type: NodeIntoContainerType.In,\n node,\n sourceContainer: parentNode,\n targetContainer: containerNode,\n });\n }\n\n private isContainer(node?: WorkflowNodeEntity): boolean {\n return node?.getNodeMeta<WorkflowNodeMeta>().isContainer ?? false;\n }\n\n /** 判断点是否在矩形内 */\n private isPointInRect(point: PositionSchema, rect: Rectangle): boolean {\n return (\n point.x >= rect.left && point.x <= rect.right && point.y >= rect.top && point.y <= rect.bottom\n );\n }\n\n /** 判断两个矩形是否相交 */\n private isRectIntersects(rectA: Rectangle, rectB: Rectangle): boolean {\n // 检查水平方向是否有重叠\n const hasHorizontalOverlap = rectA.right > rectB.left && rectA.left < rectB.right;\n // 检查垂直方向是否有重叠\n const hasVerticalOverlap = rectA.bottom > rectB.top && rectA.top < rectB.bottom;\n // 只有当水平和垂直方向都有重叠时,两个矩形才相交\n return hasHorizontalOverlap && hasVerticalOverlap;\n }\n\n private async nextFrame(): Promise<void> {\n await new Promise((resolve) => requestAnimationFrame(resolve));\n }\n}\n","import { useState, useEffect } from 'react';\n\nimport {\n useCurrentEntity,\n WorkflowNodeMeta,\n WorkflowNodePortsData,\n} from '@flowgram.ai/free-layout-core';\nimport { FlowNodeTransformData } from '@flowgram.ai/document';\n\ninterface NodeSize {\n width: number;\n height: number;\n}\n\nexport const useNodeSize = (): NodeSize | undefined => {\n const node = useCurrentEntity();\n const nodeMeta = node.getNodeMeta<WorkflowNodeMeta>();\n const { size = { width: 300, height: 200 }, isContainer } = nodeMeta;\n\n const transform = node.getData<FlowNodeTransformData>(FlowNodeTransformData);\n const [width, setWidth] = useState(size.width);\n const [height, setHeight] = useState(size.height);\n\n const updatePorts = () => {\n const portsData = node.getData<WorkflowNodePortsData>(WorkflowNodePortsData);\n portsData.updateDynamicPorts();\n };\n\n const updateSize = () => {\n // 无子节点时\n if (node.blocks.length === 0) {\n setWidth(size.width);\n setHeight(size.height);\n return;\n }\n // 存在子节点时,只监听宽高变化\n setWidth(transform.bounds.width);\n setHeight(transform.bounds.height);\n };\n\n useEffect(() => {\n const dispose = transform.onDataChange(() => {\n updateSize();\n updatePorts();\n });\n return () => dispose.dispose();\n }, [transform, width, height]);\n\n useEffect(() => {\n // 初始化触发一次\n updateSize();\n }, []);\n\n if (!isContainer) {\n return;\n }\n\n return {\n width,\n height,\n };\n};\n","import React, { type FC } from 'react';\n\nimport { useCurrentEntity } from '@flowgram.ai/free-layout-core';\n\nimport { SubCanvasBackgroundStyle } from './style';\n\nexport const SubCanvasBackground: FC = () => {\n const node = useCurrentEntity();\n return (\n <SubCanvasBackgroundStyle className=\"sub-canvas-background\" data-flow-editor-selectable=\"true\">\n <svg width=\"100%\" height=\"100%\">\n <pattern id=\"sub-canvas-dot-pattern\" width=\"20\" height=\"20\" patternUnits=\"userSpaceOnUse\">\n <circle cx=\"1\" cy=\"1\" r=\"1\" stroke=\"#eceeef\" fillOpacity=\"0.5\" />\n </pattern>\n <rect\n width=\"100%\"\n height=\"100%\"\n fill=\"url(#sub-canvas-dot-pattern)\"\n data-node-panel-container={node.id}\n />\n </svg>\n </SubCanvasBackgroundStyle>\n );\n};\n","import styled from 'styled-components';\n\nexport const SubCanvasBackgroundStyle = styled.div`\n width: 100%;\n height: 100%;\n inset: 56px 18px 18px;\n background-color: #f2f3f5;\n`;\n","import React, { CSSProperties, ReactNode, type FC } from 'react';\n\nimport { SubCanvasBorderStyle } from './style';\n\ninterface ISubCanvasBorder {\n style?: CSSProperties;\n children?: ReactNode | ReactNode[];\n}\n\nexport const SubCanvasBorder: FC<ISubCanvasBorder> = ({ style, children }) => (\n <SubCanvasBorderStyle\n className=\"sub-canvas-border\"\n style={{\n ...style,\n }}\n >\n {children}\n </SubCanvasBorderStyle>\n);\n","import styled from 'styled-components';\n\nexport const SubCanvasBorderStyle = styled.div`\n pointer-events: none;\n\n position: relative;\n\n display: flex;\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n background-color: transparent;\n border: 1px solid var(--coz-stroke-plus, rgba(6, 7, 9, 15%));\n border-color: var(--coz-bg-plus, rgb(249, 249, 249));\n border-style: solid;\n border-width: 8px;\n border-radius: 8px;\n\n &::before {\n content: '';\n\n position: absolute;\n z-index: 0;\n inset: -4px;\n\n background-color: transparent;\n border-color: var(--coz-bg-plus, rgb(249, 249, 249));\n border-style: solid;\n border-width: 4px;\n border-radius: 8px;\n }\n`;\n","import React, { CSSProperties, useLayoutEffect, type FC } from 'react';\n\nimport { useCurrentEntity } from '@flowgram.ai/free-layout-core';\n\nimport { SubCanvasRenderStyle } from './style';\nimport { SubCanvasBorder } from '../border';\nimport { SubCanvasBackground } from '../background';\nimport { useNodeSize } from '../../hooks';\n\ninterface ISubCanvasBorder {\n className?: string;\n style?: CSSProperties;\n}\n\nexport const SubCanvasRender: FC<ISubCanvasBorder> = ({ className, style }) => {\n const node = useCurrentEntity();\n const nodeSize = useNodeSize();\n const { height, width } = nodeSize ?? {};\n const nodeHeight = nodeSize?.height ?? 0;\n const { padding } = node.transform;\n\n useLayoutEffect(() => {\n node.renderData.node.style.width = width + 'px';\n node.renderData.node.style.height = height + 'px';\n }, [height, width]);\n\n return (\n <SubCanvasRenderStyle\n className={`sub-canvas-render ${className ?? ''}`}\n style={{\n height: nodeHeight - padding.top,\n ...style,\n }}\n data-flow-editor-selectable=\"true\"\n onDragStart={(e) => {\n e.stopPropagation();\n }}\n >\n <SubCanvasBorder>\n <SubCanvasBackground />\n </SubCanvasBorder>\n </SubCanvasRenderStyle>\n );\n};\n","import styled from 'styled-components';\n\nexport const SubCanvasRenderStyle = styled.div`\n width: 100%;\n height: 100%;\n`;\n","import { definePluginCreator } from '@flowgram.ai/core';\n\nimport type { WorkflowContainerPluginOptions } from './type';\nimport { NodeIntoContainerService } from './node-into-container';\n\nexport const createContainerNodePlugin = definePluginCreator<WorkflowContainerPluginOptions>({\n onBind: ({ bind }) => {\n bind(NodeIntoContainerService).toSelf().inSingletonScope();\n },\n onInit(ctx, options) {\n ctx.get(NodeIntoContainerService).init();\n },\n onReady(ctx, options) {\n if (options.disableNodeIntoContainer !== true) {\n ctx.get(NodeIntoContainerService).ready();\n }\n },\n onDispose(ctx) {\n ctx.get(NodeIntoContainerService).dispose();\n },\n});\n"],"mappings":"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","names":["NodeIntoContainerType","renderData","renderDom","FlowNodeTransformData","useCurrentEntity","useCurrentEntity","React","styled","React","React","useCurrentEntity","styled","useCurrentEntity","React"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,46 +1,9 @@
|
|
|
1
|
-
import { ReactNode, FC } from 'react';
|
|
2
|
-
import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
|
|
3
1
|
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
2
|
+
import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
|
|
4
3
|
import { FlowNodeTransformData } from '@flowgram.ai/document';
|
|
4
|
+
import { FC, CSSProperties, ReactNode } from 'react';
|
|
5
5
|
import * as _flowgram_ai_core from '@flowgram.ai/core';
|
|
6
6
|
|
|
7
|
-
declare const ContainerNodeRenderKey = "container-node-render-key";
|
|
8
|
-
|
|
9
|
-
interface ContainerNodeMetaRenderProps {
|
|
10
|
-
title: string;
|
|
11
|
-
tooltip?: string;
|
|
12
|
-
renderPorts: {
|
|
13
|
-
id: string;
|
|
14
|
-
type: 'input' | 'output';
|
|
15
|
-
style: React.CSSProperties;
|
|
16
|
-
}[];
|
|
17
|
-
style: React.CSSProperties;
|
|
18
|
-
}
|
|
19
|
-
interface ContainerNodeRenderProps {
|
|
20
|
-
node: WorkflowNodeEntity;
|
|
21
|
-
content?: ReactNode;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
declare const ContainerNodeRender: FC<ContainerNodeRenderProps>;
|
|
25
|
-
|
|
26
|
-
interface IContainerNodeHeader {
|
|
27
|
-
children?: ReactNode | ReactNode[];
|
|
28
|
-
}
|
|
29
|
-
declare const ContainerNodeHeader: FC<IContainerNodeHeader>;
|
|
30
|
-
|
|
31
|
-
declare const ContainerNodeBackground: FC;
|
|
32
|
-
|
|
33
|
-
interface IContainerNodeContainer {
|
|
34
|
-
children: ReactNode | ReactNode[];
|
|
35
|
-
}
|
|
36
|
-
declare const ContainerNodeContainer: FC<IContainerNodeContainer>;
|
|
37
|
-
|
|
38
|
-
declare const ContainerNodeBorder: FC;
|
|
39
|
-
|
|
40
|
-
declare const ContainerNodePorts: FC;
|
|
41
|
-
|
|
42
|
-
declare const ContainerNodeForm: FC;
|
|
43
|
-
|
|
44
7
|
declare enum NodeIntoContainerType {
|
|
45
8
|
In = "in",
|
|
46
9
|
Out = "out"
|
|
@@ -112,6 +75,26 @@ declare class NodeIntoContainerService {
|
|
|
112
75
|
private nextFrame;
|
|
113
76
|
}
|
|
114
77
|
|
|
78
|
+
interface NodeSize {
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
}
|
|
82
|
+
declare const useNodeSize: () => NodeSize | undefined;
|
|
83
|
+
|
|
84
|
+
declare const SubCanvasBackground: FC;
|
|
85
|
+
|
|
86
|
+
interface ISubCanvasBorder$1 {
|
|
87
|
+
style?: CSSProperties;
|
|
88
|
+
children?: ReactNode | ReactNode[];
|
|
89
|
+
}
|
|
90
|
+
declare const SubCanvasBorder: FC<ISubCanvasBorder$1>;
|
|
91
|
+
|
|
92
|
+
interface ISubCanvasBorder {
|
|
93
|
+
className?: string;
|
|
94
|
+
style?: CSSProperties;
|
|
95
|
+
}
|
|
96
|
+
declare const SubCanvasRender: FC<ISubCanvasBorder>;
|
|
97
|
+
|
|
115
98
|
interface WorkflowContainerPluginOptions {
|
|
116
99
|
disableNodeIntoContainer?: boolean;
|
|
117
100
|
renderContent?: ReactNode;
|
|
@@ -119,4 +102,4 @@ interface WorkflowContainerPluginOptions {
|
|
|
119
102
|
|
|
120
103
|
declare const createContainerNodePlugin: _flowgram_ai_core.PluginCreator<WorkflowContainerPluginOptions>;
|
|
121
104
|
|
|
122
|
-
export {
|
|
105
|
+
export { type NodeIntoContainerEvent, NodeIntoContainerService, type NodeIntoContainerState, NodeIntoContainerType, SubCanvasBackground, SubCanvasBorder, SubCanvasRender, type WorkflowContainerPluginOptions, createContainerNodePlugin, useNodeSize };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,46 +1,9 @@
|
|
|
1
|
-
import { ReactNode, FC } from 'react';
|
|
2
|
-
import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
|
|
3
1
|
import * as _flowgram_ai_utils from '@flowgram.ai/utils';
|
|
2
|
+
import { WorkflowNodeEntity } from '@flowgram.ai/free-layout-core';
|
|
4
3
|
import { FlowNodeTransformData } from '@flowgram.ai/document';
|
|
4
|
+
import { FC, CSSProperties, ReactNode } from 'react';
|
|
5
5
|
import * as _flowgram_ai_core from '@flowgram.ai/core';
|
|
6
6
|
|
|
7
|
-
declare const ContainerNodeRenderKey = "container-node-render-key";
|
|
8
|
-
|
|
9
|
-
interface ContainerNodeMetaRenderProps {
|
|
10
|
-
title: string;
|
|
11
|
-
tooltip?: string;
|
|
12
|
-
renderPorts: {
|
|
13
|
-
id: string;
|
|
14
|
-
type: 'input' | 'output';
|
|
15
|
-
style: React.CSSProperties;
|
|
16
|
-
}[];
|
|
17
|
-
style: React.CSSProperties;
|
|
18
|
-
}
|
|
19
|
-
interface ContainerNodeRenderProps {
|
|
20
|
-
node: WorkflowNodeEntity;
|
|
21
|
-
content?: ReactNode;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
declare const ContainerNodeRender: FC<ContainerNodeRenderProps>;
|
|
25
|
-
|
|
26
|
-
interface IContainerNodeHeader {
|
|
27
|
-
children?: ReactNode | ReactNode[];
|
|
28
|
-
}
|
|
29
|
-
declare const ContainerNodeHeader: FC<IContainerNodeHeader>;
|
|
30
|
-
|
|
31
|
-
declare const ContainerNodeBackground: FC;
|
|
32
|
-
|
|
33
|
-
interface IContainerNodeContainer {
|
|
34
|
-
children: ReactNode | ReactNode[];
|
|
35
|
-
}
|
|
36
|
-
declare const ContainerNodeContainer: FC<IContainerNodeContainer>;
|
|
37
|
-
|
|
38
|
-
declare const ContainerNodeBorder: FC;
|
|
39
|
-
|
|
40
|
-
declare const ContainerNodePorts: FC;
|
|
41
|
-
|
|
42
|
-
declare const ContainerNodeForm: FC;
|
|
43
|
-
|
|
44
7
|
declare enum NodeIntoContainerType {
|
|
45
8
|
In = "in",
|
|
46
9
|
Out = "out"
|
|
@@ -112,6 +75,26 @@ declare class NodeIntoContainerService {
|
|
|
112
75
|
private nextFrame;
|
|
113
76
|
}
|
|
114
77
|
|
|
78
|
+
interface NodeSize {
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
}
|
|
82
|
+
declare const useNodeSize: () => NodeSize | undefined;
|
|
83
|
+
|
|
84
|
+
declare const SubCanvasBackground: FC;
|
|
85
|
+
|
|
86
|
+
interface ISubCanvasBorder$1 {
|
|
87
|
+
style?: CSSProperties;
|
|
88
|
+
children?: ReactNode | ReactNode[];
|
|
89
|
+
}
|
|
90
|
+
declare const SubCanvasBorder: FC<ISubCanvasBorder$1>;
|
|
91
|
+
|
|
92
|
+
interface ISubCanvasBorder {
|
|
93
|
+
className?: string;
|
|
94
|
+
style?: CSSProperties;
|
|
95
|
+
}
|
|
96
|
+
declare const SubCanvasRender: FC<ISubCanvasBorder>;
|
|
97
|
+
|
|
115
98
|
interface WorkflowContainerPluginOptions {
|
|
116
99
|
disableNodeIntoContainer?: boolean;
|
|
117
100
|
renderContent?: ReactNode;
|
|
@@ -119,4 +102,4 @@ interface WorkflowContainerPluginOptions {
|
|
|
119
102
|
|
|
120
103
|
declare const createContainerNodePlugin: _flowgram_ai_core.PluginCreator<WorkflowContainerPluginOptions>;
|
|
121
104
|
|
|
122
|
-
export {
|
|
105
|
+
export { type NodeIntoContainerEvent, NodeIntoContainerService, type NodeIntoContainerState, NodeIntoContainerType, SubCanvasBackground, SubCanvasBorder, SubCanvasRender, type WorkflowContainerPluginOptions, createContainerNodePlugin, useNodeSize };
|