@logicflow/extension 1.2.26 → 2.0.0-beta.0
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/.turbo/turbo-build.log +734 -0
- package/CHANGELOG.md +1916 -0
- package/LICENSE +206 -0
- package/README.md +1 -2
- package/__test__/bpmn-adapter.test.js +227 -0
- package/dist/index.css +215 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/es/NodeResize/BasicShape/Ellipse.d.ts +3 -0
- package/es/NodeResize/BasicShape/Ellipse.js +19 -0
- package/es/NodeResize/BasicShape/Ellipse.js.map +1 -0
- package/es/NodeResize/BasicShape/Polygon.d.ts +1 -9
- package/es/NodeResize/BasicShape/Polygon.js +3 -2
- package/es/NodeResize/BasicShape/Polygon.js.map +1 -0
- package/es/NodeResize/BasicShape/Rect.d.ts +6 -4
- package/es/NodeResize/BasicShape/Rect.js +5 -5
- package/es/NodeResize/BasicShape/Rect.js.map +1 -0
- package/es/NodeResize/control/Control.d.ts +47 -0
- package/es/NodeResize/{Control → control}/Control.js +139 -67
- package/es/NodeResize/control/Control.js.map +1 -0
- package/es/NodeResize/{Control → control}/ControlGroup.d.ts +3 -4
- package/es/NodeResize/{Control → control}/ControlGroup.js +9 -8
- package/es/NodeResize/control/ControlGroup.js.map +1 -0
- package/es/NodeResize/{Control → control}/Util.js +18 -9
- package/es/NodeResize/control/Util.js.map +1 -0
- package/es/NodeResize/index.d.ts +4 -7
- package/es/NodeResize/index.js +11 -26
- package/es/NodeResize/index.js.map +1 -0
- package/es/NodeResize/node/DiamondResize.d.ts +44 -0
- package/es/NodeResize/{Node → node}/DiamondResize.js +28 -16
- package/es/NodeResize/node/DiamondResize.js.map +1 -0
- package/es/NodeResize/node/EllipseResize.d.ts +44 -0
- package/es/NodeResize/{Node → node}/EllipseResize.js +26 -12
- package/es/NodeResize/node/EllipseResize.js.map +1 -0
- package/es/NodeResize/node/HtmlResize.d.ts +35 -0
- package/es/NodeResize/{Node → node}/HtmlResize.js +26 -12
- package/es/NodeResize/node/HtmlResize.js.map +1 -0
- package/es/NodeResize/node/RectResize.d.ts +58 -0
- package/es/NodeResize/{Node → node}/RectResize.js +27 -16
- package/es/NodeResize/node/RectResize.js.map +1 -0
- package/es/NodeResize/node/index.d.ts +4 -0
- package/es/NodeResize/node/index.js +5 -0
- package/es/NodeResize/node/index.js.map +1 -0
- package/es/bpmn/constant.d.ts +2 -26
- package/es/bpmn/constant.js +1 -0
- package/es/bpmn/constant.js.map +1 -0
- package/es/bpmn/events/EndEvent.d.ts +6 -7
- package/es/bpmn/events/EndEvent.js +10 -8
- package/es/bpmn/events/EndEvent.js.map +1 -0
- package/es/bpmn/events/StartEvent.d.ts +2 -2
- package/es/bpmn/events/StartEvent.js +7 -6
- package/es/bpmn/events/StartEvent.js.map +1 -0
- package/es/bpmn/events/index.d.ts +2 -0
- package/es/bpmn/events/index.js +3 -0
- package/es/bpmn/events/index.js.map +1 -0
- package/es/bpmn/flow/SequenceFlow.d.ts +3 -4
- package/es/bpmn/flow/SequenceFlow.js +9 -7
- package/es/bpmn/flow/SequenceFlow.js.map +1 -0
- package/es/bpmn/flow/index.d.ts +1 -0
- package/es/bpmn/flow/index.js +2 -0
- package/es/bpmn/flow/index.js.map +1 -0
- package/es/bpmn/gateways/ExclusiveGateway.d.ts +7 -7
- package/es/bpmn/gateways/ExclusiveGateway.js +14 -10
- package/es/bpmn/gateways/ExclusiveGateway.js.map +1 -0
- package/es/bpmn/gateways/index.d.ts +1 -0
- package/es/bpmn/gateways/index.js +2 -0
- package/es/bpmn/gateways/index.js.map +1 -0
- package/es/bpmn/getBpmnId.js +2 -3
- package/es/bpmn/getBpmnId.js.map +1 -0
- package/es/bpmn/index.d.ts +4 -6
- package/es/bpmn/index.js +5 -8
- package/es/bpmn/index.js.map +1 -0
- package/es/bpmn/tasks/ServiceTask.d.ts +6 -7
- package/es/bpmn/tasks/ServiceTask.js +10 -9
- package/es/bpmn/tasks/ServiceTask.js.map +1 -0
- package/es/bpmn/tasks/UserTask.d.ts +6 -7
- package/es/bpmn/tasks/UserTask.js +10 -9
- package/es/bpmn/tasks/UserTask.js.map +1 -0
- package/es/bpmn/tasks/index.d.ts +2 -0
- package/es/bpmn/tasks/index.js +3 -0
- package/es/bpmn/tasks/index.js.map +1 -0
- package/es/bpmn-adapter/bpmnIds.d.ts +6 -0
- package/es/bpmn-adapter/bpmnIds.js +9 -9
- package/es/bpmn-adapter/bpmnIds.js.map +1 -0
- package/es/bpmn-adapter/index.d.ts +44 -7
- package/es/bpmn-adapter/index.js +27 -16
- package/es/bpmn-adapter/index.js.map +1 -0
- package/es/bpmn-adapter/json2xml.js +22 -22
- package/es/bpmn-adapter/json2xml.js.map +1 -0
- package/es/bpmn-adapter/xml2json.js +1 -0
- package/es/bpmn-adapter/xml2json.js.map +1 -0
- package/es/bpmn-elements/index.js +2 -3
- package/es/bpmn-elements/index.js.map +1 -0
- package/es/bpmn-elements/presets/Event/EndEventFactory.js +25 -17
- package/es/bpmn-elements/presets/Event/EndEventFactory.js.map +1 -0
- package/es/bpmn-elements/presets/Event/IntermediateCatchEvent.js +23 -13
- package/es/bpmn-elements/presets/Event/IntermediateCatchEvent.js.map +1 -0
- package/es/bpmn-elements/presets/Event/IntermediateThrowEvent.js +23 -14
- package/es/bpmn-elements/presets/Event/IntermediateThrowEvent.js.map +1 -0
- package/es/bpmn-elements/presets/Event/StartEventFactory.js +23 -15
- package/es/bpmn-elements/presets/Event/StartEventFactory.js.map +1 -0
- package/es/bpmn-elements/presets/Event/boundaryEventFactory.js +22 -12
- package/es/bpmn-elements/presets/Event/boundaryEventFactory.js.map +1 -0
- package/es/bpmn-elements/presets/Event/index.js +1 -0
- package/es/bpmn-elements/presets/Event/index.js.map +1 -0
- package/es/bpmn-elements/presets/Flow/index.js +1 -0
- package/es/bpmn-elements/presets/Flow/index.js.map +1 -0
- package/es/bpmn-elements/presets/Flow/manhattan.d.ts +39 -0
- package/es/bpmn-elements/presets/Flow/manhattan.js +636 -0
- package/es/bpmn-elements/presets/Flow/manhattan.js.map +1 -0
- package/es/bpmn-elements/presets/Flow/sequenceFlow.js +7 -7
- package/es/bpmn-elements/presets/Flow/sequenceFlow.js.map +1 -0
- package/es/bpmn-elements/presets/Gateway/gateway.d.ts +5 -0
- package/es/bpmn-elements/presets/Gateway/gateway.js +10 -11
- package/es/bpmn-elements/presets/Gateway/gateway.js.map +1 -0
- package/es/bpmn-elements/presets/Gateway/index.js +1 -0
- package/es/bpmn-elements/presets/Gateway/index.js.map +1 -0
- package/es/bpmn-elements/presets/Pool/Lane.d.ts +31 -0
- package/es/bpmn-elements/presets/Pool/Lane.js +217 -0
- package/es/bpmn-elements/presets/Pool/Lane.js.map +1 -0
- package/es/bpmn-elements/presets/Pool/Pool.d.ts +32 -0
- package/es/bpmn-elements/presets/Pool/Pool.js +298 -0
- package/es/bpmn-elements/presets/Pool/Pool.js.map +1 -0
- package/es/bpmn-elements/presets/Pool/index.d.ts +4 -0
- package/es/bpmn-elements/presets/Pool/index.js +86 -0
- package/es/bpmn-elements/presets/Pool/index.js.map +1 -0
- package/es/bpmn-elements/presets/Task/index.js +12 -3
- package/es/bpmn-elements/presets/Task/index.js.map +1 -0
- package/es/bpmn-elements/presets/Task/subProcess.js +22 -16
- package/es/bpmn-elements/presets/Task/subProcess.js.map +1 -0
- package/es/bpmn-elements/presets/Task/task.js +28 -21
- package/es/bpmn-elements/presets/Task/task.js.map +1 -0
- package/es/bpmn-elements/presets/icons.d.ts +4 -3
- package/es/bpmn-elements/presets/icons.js +1 -0
- package/es/bpmn-elements/presets/icons.js.map +1 -0
- package/es/bpmn-elements/utils.d.ts +1 -1
- package/es/bpmn-elements/utils.js +8 -7
- package/es/bpmn-elements/utils.js.map +1 -0
- package/es/bpmn-elements-adapter/constant.js +1 -0
- package/es/bpmn-elements-adapter/constant.js.map +1 -0
- package/es/bpmn-elements-adapter/index.d.ts +6 -6
- package/es/bpmn-elements-adapter/index.js +52 -39
- package/es/bpmn-elements-adapter/index.js.map +1 -0
- package/es/bpmn-elements-adapter/json2xml.js +8 -7
- package/es/bpmn-elements-adapter/json2xml.js.map +1 -0
- package/es/bpmn-elements-adapter/xml2json.js +13 -11
- package/es/bpmn-elements-adapter/xml2json.js.map +1 -0
- package/es/components/context-menu/index.d.ts +9 -3
- package/es/components/context-menu/index.js +85 -70
- package/es/components/context-menu/index.js.map +1 -0
- package/es/components/control/index.d.ts +13 -15
- package/es/components/control/index.js +20 -10
- package/es/components/control/index.js.map +1 -0
- package/es/components/dnd-panel/index.d.ts +10 -9
- package/es/components/dnd-panel/index.js +15 -7
- package/es/components/dnd-panel/index.js.map +1 -0
- package/es/components/highlight/index.d.ts +4 -4
- package/es/components/highlight/index.js +23 -17
- package/es/components/highlight/index.js.map +1 -0
- package/es/components/menu/index.d.ts +7 -7
- package/es/components/menu/index.js +195 -155
- package/es/components/menu/index.js.map +1 -0
- package/es/components/mini-map/index.d.ts +196 -48
- package/es/components/mini-map/index.js +372 -290
- package/es/components/mini-map/index.js.map +1 -0
- package/es/components/selection-select/index.d.ts +17 -26
- package/es/components/selection-select/index.js +76 -64
- package/es/components/selection-select/index.js.map +1 -0
- package/es/index.css +215 -0
- package/es/index.js +1 -1
- package/es/index.js.map +1 -0
- package/es/index.less +1 -0
- package/es/insert-node-in-polyline/edge.d.ts +3 -2
- package/es/insert-node-in-polyline/edge.js +20 -8
- package/es/insert-node-in-polyline/edge.js.map +1 -0
- package/es/insert-node-in-polyline/index.d.ts +7 -7
- package/es/insert-node-in-polyline/index.js +18 -10
- package/es/insert-node-in-polyline/index.js.map +1 -0
- package/es/materials/curved-edge/__test__/curved-edge.test.d.ts +1 -0
- package/es/materials/curved-edge/__test__/curved-edge.test.js +19 -0
- package/es/materials/curved-edge/__test__/curved-edge.test.js.map +1 -0
- package/es/materials/curved-edge/index.d.ts +2 -2
- package/es/materials/curved-edge/index.js +12 -9
- package/es/materials/curved-edge/index.js.map +1 -0
- package/es/materials/group/GroupNode.d.ts +22 -20
- package/es/materials/group/GroupNode.js +90 -58
- package/es/materials/group/GroupNode.js.map +1 -0
- package/es/materials/group/index.d.ts +28 -30
- package/es/materials/group/index.js +153 -112
- package/es/materials/group/index.js.map +1 -0
- package/es/materials/node-selection/index.d.ts +28 -0
- package/es/materials/node-selection/index.js +297 -0
- package/es/materials/node-selection/index.js.map +1 -0
- package/es/mindmap/fakerRoot.d.ts +13 -0
- package/es/mindmap/fakerRoot.js +41 -0
- package/es/mindmap/fakerRoot.js.map +1 -0
- package/es/mindmap/index.d.ts +41 -0
- package/es/mindmap/index.js +314 -0
- package/es/mindmap/index.js.map +1 -0
- package/es/mindmap/markContent.d.ts +17 -0
- package/es/mindmap/markContent.js +91 -0
- package/es/mindmap/markContent.js.map +1 -0
- package/es/mindmap/markContentOption.d.ts +17 -0
- package/es/mindmap/markContentOption.js +92 -0
- package/es/mindmap/markContentOption.js.map +1 -0
- package/es/mindmap/markEntity.d.ts +17 -0
- package/es/mindmap/markEntity.js +92 -0
- package/es/mindmap/markEntity.js.map +1 -0
- package/es/mindmap/markRoot.d.ts +17 -0
- package/es/mindmap/markRoot.js +93 -0
- package/es/mindmap/markRoot.js.map +1 -0
- package/es/mindmap/theme.d.ts +10 -0
- package/es/mindmap/theme.js +12 -0
- package/es/mindmap/theme.js.map +1 -0
- package/es/rect-label-node/RectLabelNodeView.d.ts +5 -0
- package/es/rect-label-node/RectLabelNodeView.js +54 -0
- package/es/rect-label-node/RectLabelNodeView.js.map +1 -0
- package/es/rect-label-node/index.d.ts +5 -0
- package/es/rect-label-node/index.js +14 -0
- package/es/rect-label-node/index.js.map +1 -0
- package/es/style/index.css +53 -60
- package/es/style/index.less +255 -0
- package/es/style/raw.d.ts +4 -0
- package/es/style/raw.js +6 -0
- package/es/style/raw.js.map +1 -0
- package/es/tools/auto-layout/index.js +8 -4
- package/es/tools/auto-layout/index.js.map +1 -0
- package/es/tools/flow-path/index.d.ts +8 -8
- package/es/tools/flow-path/index.js +51 -36
- package/es/tools/flow-path/index.js.map +1 -0
- package/es/tools/snapshot/index.d.ts +4 -5
- package/es/tools/snapshot/index.js +41 -29
- package/es/tools/snapshot/index.js.map +1 -0
- package/es/turbo-adapter/index.d.ts +4 -14
- package/es/turbo-adapter/index.js +17 -14
- package/es/turbo-adapter/index.js.map +1 -0
- package/jest.config.js +198 -0
- package/lib/NodeResize/BasicShape/Ellipse.d.ts +3 -0
- package/lib/NodeResize/BasicShape/Ellipse.js +21 -0
- package/lib/NodeResize/BasicShape/Ellipse.js.map +1 -0
- package/lib/NodeResize/BasicShape/Polygon.d.ts +2 -0
- package/{cjs → lib}/NodeResize/BasicShape/Polygon.js +3 -2
- package/lib/NodeResize/BasicShape/Polygon.js.map +1 -0
- package/lib/NodeResize/BasicShape/Rect.d.ts +19 -0
- package/{cjs → lib}/NodeResize/BasicShape/Rect.js +5 -5
- package/lib/NodeResize/BasicShape/Rect.js.map +1 -0
- package/lib/NodeResize/control/Control.d.ts +47 -0
- package/{cjs/NodeResize/Control → lib/NodeResize/control}/Control.js +141 -69
- package/lib/NodeResize/control/Control.js.map +1 -0
- package/lib/NodeResize/control/ControlGroup.d.ts +12 -0
- package/{cjs/NodeResize/Control → lib/NodeResize/control}/ControlGroup.js +14 -10
- package/lib/NodeResize/control/ControlGroup.js.map +1 -0
- package/lib/NodeResize/control/Util.d.ts +33 -0
- package/{cjs/NodeResize/Control → lib/NodeResize/control}/Util.js +19 -10
- package/lib/NodeResize/control/Util.js.map +1 -0
- package/lib/NodeResize/index.d.ts +8 -0
- package/lib/NodeResize/index.js +38 -0
- package/lib/NodeResize/index.js.map +1 -0
- package/lib/NodeResize/node/DiamondResize.d.ts +44 -0
- package/{cjs/NodeResize/Node → lib/NodeResize/node}/DiamondResize.js +31 -15
- package/lib/NodeResize/node/DiamondResize.js.map +1 -0
- package/lib/NodeResize/node/EllipseResize.d.ts +44 -0
- package/{cjs/NodeResize/Node → lib/NodeResize/node}/EllipseResize.js +30 -12
- package/lib/NodeResize/node/EllipseResize.js.map +1 -0
- package/lib/NodeResize/node/HtmlResize.d.ts +35 -0
- package/{cjs/NodeResize/Node → lib/NodeResize/node}/HtmlResize.js +30 -12
- package/lib/NodeResize/node/HtmlResize.js.map +1 -0
- package/lib/NodeResize/node/RectResize.d.ts +58 -0
- package/{cjs/NodeResize/Node → lib/NodeResize/node}/RectResize.js +31 -16
- package/lib/NodeResize/node/RectResize.js.map +1 -0
- package/lib/NodeResize/node/index.d.ts +4 -0
- package/lib/NodeResize/node/index.js +21 -0
- package/lib/NodeResize/node/index.js.map +1 -0
- package/lib/bpmn/constant.d.ts +22 -0
- package/{cjs → lib}/bpmn/constant.js +1 -0
- package/lib/bpmn/constant.js.map +1 -0
- package/lib/bpmn/events/EndEvent.d.ts +20 -0
- package/{cjs → lib}/bpmn/events/EndEvent.js +11 -10
- package/lib/bpmn/events/EndEvent.js.map +1 -0
- package/lib/bpmn/events/StartEvent.d.ts +17 -0
- package/{cjs → lib}/bpmn/events/StartEvent.js +9 -8
- package/lib/bpmn/events/StartEvent.js.map +1 -0
- package/lib/bpmn/events/index.d.ts +2 -0
- package/lib/bpmn/events/index.js +19 -0
- package/lib/bpmn/events/index.js.map +1 -0
- package/lib/bpmn/flow/SequenceFlow.d.ts +14 -0
- package/{cjs → lib}/bpmn/flow/SequenceFlow.js +9 -8
- package/lib/bpmn/flow/SequenceFlow.js.map +1 -0
- package/lib/bpmn/flow/index.d.ts +1 -0
- package/lib/bpmn/flow/index.js +18 -0
- package/lib/bpmn/flow/index.js.map +1 -0
- package/lib/bpmn/gateways/ExclusiveGateway.d.ts +16 -0
- package/{cjs → lib}/bpmn/gateways/ExclusiveGateway.js +14 -11
- package/lib/bpmn/gateways/ExclusiveGateway.js.map +1 -0
- package/lib/bpmn/gateways/index.d.ts +1 -0
- package/lib/bpmn/gateways/index.js +18 -0
- package/lib/bpmn/gateways/index.js.map +1 -0
- package/lib/bpmn/getBpmnId.d.ts +1 -0
- package/{cjs → lib}/bpmn/getBpmnId.js +2 -3
- package/lib/bpmn/getBpmnId.js.map +1 -0
- package/lib/bpmn/index.d.ts +11 -0
- package/{cjs → lib}/bpmn/index.js +23 -26
- package/lib/bpmn/index.js.map +1 -0
- package/lib/bpmn/tasks/ServiceTask.d.ts +16 -0
- package/{cjs → lib}/bpmn/tasks/ServiceTask.js +13 -13
- package/lib/bpmn/tasks/ServiceTask.js.map +1 -0
- package/lib/bpmn/tasks/UserTask.d.ts +16 -0
- package/{cjs → lib}/bpmn/tasks/UserTask.js +13 -13
- package/lib/bpmn/tasks/UserTask.js.map +1 -0
- package/lib/bpmn/tasks/index.d.ts +2 -0
- package/lib/bpmn/tasks/index.js +19 -0
- package/lib/bpmn/tasks/index.js.map +1 -0
- package/lib/bpmn-adapter/bpmnIds.d.ts +7 -0
- package/{cjs → lib}/bpmn-adapter/bpmnIds.js +10 -10
- package/lib/bpmn-adapter/bpmnIds.js.map +1 -0
- package/lib/bpmn-adapter/index.d.ts +100 -0
- package/{cjs → lib}/bpmn-adapter/index.js +30 -19
- package/lib/bpmn-adapter/index.js.map +1 -0
- package/lib/bpmn-adapter/json2xml.d.ts +3 -0
- package/{cjs → lib}/bpmn-adapter/json2xml.js +22 -22
- package/lib/bpmn-adapter/json2xml.js.map +1 -0
- package/lib/bpmn-adapter/xml2json.d.ts +2 -0
- package/{cjs → lib}/bpmn-adapter/xml2json.js +1 -0
- package/lib/bpmn-adapter/xml2json.js.map +1 -0
- package/lib/bpmn-elements/index.d.ts +17 -0
- package/{cjs → lib}/bpmn-elements/index.js +26 -11
- package/lib/bpmn-elements/index.js.map +1 -0
- package/lib/bpmn-elements/presets/Event/EndEventFactory.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Event/EndEventFactory.js +25 -17
- package/lib/bpmn-elements/presets/Event/EndEventFactory.js.map +1 -0
- package/lib/bpmn-elements/presets/Event/IntermediateCatchEvent.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Event/IntermediateCatchEvent.js +23 -13
- package/lib/bpmn-elements/presets/Event/IntermediateCatchEvent.js.map +1 -0
- package/lib/bpmn-elements/presets/Event/IntermediateThrowEvent.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Event/IntermediateThrowEvent.js +23 -14
- package/lib/bpmn-elements/presets/Event/IntermediateThrowEvent.js.map +1 -0
- package/lib/bpmn-elements/presets/Event/StartEventFactory.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Event/StartEventFactory.js +23 -15
- package/lib/bpmn-elements/presets/Event/StartEventFactory.js.map +1 -0
- package/lib/bpmn-elements/presets/Event/boundaryEventFactory.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Event/boundaryEventFactory.js +23 -13
- package/lib/bpmn-elements/presets/Event/boundaryEventFactory.js.map +1 -0
- package/lib/bpmn-elements/presets/Event/index.d.ts +2 -0
- package/{cjs → lib}/bpmn-elements/presets/Event/index.js +6 -5
- package/lib/bpmn-elements/presets/Event/index.js.map +1 -0
- package/lib/bpmn-elements/presets/Flow/index.d.ts +7 -0
- package/{cjs → lib}/bpmn-elements/presets/Flow/index.js +2 -1
- package/lib/bpmn-elements/presets/Flow/index.js.map +1 -0
- package/lib/bpmn-elements/presets/Flow/manhattan.d.ts +39 -0
- package/lib/bpmn-elements/presets/Flow/manhattan.js +641 -0
- package/lib/bpmn-elements/presets/Flow/manhattan.js.map +1 -0
- package/lib/bpmn-elements/presets/Flow/sequenceFlow.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Flow/sequenceFlow.js +8 -8
- package/lib/bpmn-elements/presets/Flow/sequenceFlow.js.map +1 -0
- package/lib/bpmn-elements/presets/Gateway/gateway.d.ts +22 -0
- package/{cjs → lib}/bpmn-elements/presets/Gateway/gateway.js +12 -13
- package/lib/bpmn-elements/presets/Gateway/gateway.js.map +1 -0
- package/lib/bpmn-elements/presets/Gateway/index.d.ts +2 -0
- package/{cjs → lib}/bpmn-elements/presets/Gateway/index.js +4 -3
- package/lib/bpmn-elements/presets/Gateway/index.js.map +1 -0
- package/lib/bpmn-elements/presets/Pool/Lane.d.ts +31 -0
- package/lib/bpmn-elements/presets/Pool/Lane.js +219 -0
- package/lib/bpmn-elements/presets/Pool/Lane.js.map +1 -0
- package/lib/bpmn-elements/presets/Pool/Pool.d.ts +32 -0
- package/lib/bpmn-elements/presets/Pool/Pool.js +301 -0
- package/lib/bpmn-elements/presets/Pool/Pool.js.map +1 -0
- package/lib/bpmn-elements/presets/Pool/index.d.ts +4 -0
- package/lib/bpmn-elements/presets/Pool/index.js +95 -0
- package/lib/bpmn-elements/presets/Pool/index.js.map +1 -0
- package/lib/bpmn-elements/presets/Task/index.d.ts +2 -0
- package/{cjs → lib}/bpmn-elements/presets/Task/index.js +15 -6
- package/lib/bpmn-elements/presets/Task/index.js.map +1 -0
- package/lib/bpmn-elements/presets/Task/subProcess.d.ts +5 -0
- package/{cjs → lib}/bpmn-elements/presets/Task/subProcess.js +27 -21
- package/lib/bpmn-elements/presets/Task/subProcess.js.map +1 -0
- package/lib/bpmn-elements/presets/Task/task.d.ts +12 -0
- package/{cjs → lib}/bpmn-elements/presets/Task/task.js +31 -24
- package/lib/bpmn-elements/presets/Task/task.js.map +1 -0
- package/lib/bpmn-elements/presets/icons.d.ts +26 -0
- package/{cjs → lib}/bpmn-elements/presets/icons.js +17 -16
- package/lib/bpmn-elements/presets/icons.js.map +1 -0
- package/lib/bpmn-elements/utils.d.ts +2 -0
- package/{cjs → lib}/bpmn-elements/utils.js +8 -7
- package/lib/bpmn-elements/utils.js.map +1 -0
- package/lib/bpmn-elements-adapter/constant.d.ts +66 -0
- package/{cjs → lib}/bpmn-elements-adapter/constant.js +1 -0
- package/lib/bpmn-elements-adapter/constant.js.map +1 -0
- package/lib/bpmn-elements-adapter/index.d.ts +103 -0
- package/{cjs → lib}/bpmn-elements-adapter/index.js +59 -43
- package/lib/bpmn-elements-adapter/index.js.map +1 -0
- package/lib/bpmn-elements-adapter/json2xml.d.ts +3 -0
- package/{cjs → lib}/bpmn-elements-adapter/json2xml.js +8 -7
- package/lib/bpmn-elements-adapter/json2xml.js.map +1 -0
- package/lib/bpmn-elements-adapter/xml2json.d.ts +2 -0
- package/{cjs → lib}/bpmn-elements-adapter/xml2json.js +13 -11
- package/lib/bpmn-elements-adapter/xml2json.js.map +1 -0
- package/lib/components/context-menu/index.d.ts +40 -0
- package/{cjs → lib}/components/context-menu/index.js +84 -69
- package/lib/components/context-menu/index.js.map +1 -0
- package/lib/components/control/index.d.ts +24 -0
- package/{cjs → lib}/components/control/index.js +19 -9
- package/lib/components/control/index.js.map +1 -0
- package/lib/components/dnd-panel/index.d.ts +27 -0
- package/{cjs → lib}/components/dnd-panel/index.js +14 -6
- package/lib/components/dnd-panel/index.js.map +1 -0
- package/lib/components/highlight/index.d.ts +21 -0
- package/{cjs → lib}/components/highlight/index.js +23 -17
- package/lib/components/highlight/index.js.map +1 -0
- package/lib/components/menu/index.d.ts +50 -0
- package/lib/components/menu/index.js +417 -0
- package/lib/components/menu/index.js.map +1 -0
- package/lib/components/mini-map/index.d.ts +236 -0
- package/lib/components/mini-map/index.js +519 -0
- package/lib/components/mini-map/index.js.map +1 -0
- package/lib/components/selection-select/index.d.ts +34 -0
- package/{cjs → lib}/components/selection-select/index.js +76 -64
- package/lib/components/selection-select/index.js.map +1 -0
- package/lib/index.css +215 -0
- package/lib/index.d.ts +21 -0
- package/{cjs → lib}/index.js +7 -3
- package/lib/index.js.map +1 -0
- package/lib/index.less +1 -0
- package/lib/insert-node-in-polyline/edge.d.ts +32 -0
- package/{cjs → lib}/insert-node-in-polyline/edge.js +31 -14
- package/lib/insert-node-in-polyline/edge.js.map +1 -0
- package/lib/insert-node-in-polyline/index.d.ts +28 -0
- package/{cjs → lib}/insert-node-in-polyline/index.js +24 -16
- package/lib/insert-node-in-polyline/index.js.map +1 -0
- package/lib/materials/curved-edge/__test__/curved-edge.test.d.ts +1 -0
- package/lib/materials/curved-edge/__test__/curved-edge.test.js +21 -0
- package/lib/materials/curved-edge/__test__/curved-edge.test.js.map +1 -0
- package/lib/materials/curved-edge/index.d.ts +14 -0
- package/{cjs → lib}/materials/curved-edge/index.js +12 -9
- package/lib/materials/curved-edge/index.js.map +1 -0
- package/lib/materials/group/GroupNode.d.ts +127 -0
- package/{cjs → lib}/materials/group/GroupNode.js +95 -62
- package/lib/materials/group/GroupNode.js.map +1 -0
- package/lib/materials/group/index.d.ts +65 -0
- package/{cjs → lib}/materials/group/index.js +171 -114
- package/lib/materials/group/index.js.map +1 -0
- package/lib/materials/node-selection/index.d.ts +28 -0
- package/lib/materials/node-selection/index.js +300 -0
- package/lib/materials/node-selection/index.js.map +1 -0
- package/lib/mindmap/fakerRoot.d.ts +13 -0
- package/lib/mindmap/fakerRoot.js +43 -0
- package/lib/mindmap/fakerRoot.js.map +1 -0
- package/lib/mindmap/index.d.ts +41 -0
- package/lib/mindmap/index.js +320 -0
- package/lib/mindmap/index.js.map +1 -0
- package/lib/mindmap/markContent.d.ts +17 -0
- package/lib/mindmap/markContent.js +93 -0
- package/lib/mindmap/markContent.js.map +1 -0
- package/lib/mindmap/markContentOption.d.ts +17 -0
- package/lib/mindmap/markContentOption.js +95 -0
- package/lib/mindmap/markContentOption.js.map +1 -0
- package/lib/mindmap/markEntity.d.ts +17 -0
- package/lib/mindmap/markEntity.js +94 -0
- package/lib/mindmap/markEntity.js.map +1 -0
- package/lib/mindmap/markRoot.d.ts +17 -0
- package/lib/mindmap/markRoot.js +95 -0
- package/lib/mindmap/markRoot.js.map +1 -0
- package/lib/mindmap/theme.d.ts +10 -0
- package/lib/mindmap/theme.js +15 -0
- package/lib/mindmap/theme.js.map +1 -0
- package/lib/rect-label-node/RectLabelNodeView.d.ts +5 -0
- package/lib/rect-label-node/RectLabelNodeView.js +57 -0
- package/lib/rect-label-node/RectLabelNodeView.js.map +1 -0
- package/lib/rect-label-node/index.d.ts +5 -0
- package/lib/rect-label-node/index.js +17 -0
- package/lib/rect-label-node/index.js.map +1 -0
- package/lib/style/index.css +53 -60
- package/lib/style/index.less +255 -0
- package/lib/style/raw.d.ts +4 -0
- package/lib/style/raw.js +9 -0
- package/lib/style/raw.js.map +1 -0
- package/lib/tools/auto-layout/index.d.ts +40 -0
- package/{cjs → lib}/tools/auto-layout/index.js +8 -4
- package/lib/tools/auto-layout/index.js.map +1 -0
- package/lib/tools/flow-path/index.d.ts +47 -0
- package/{cjs → lib}/tools/flow-path/index.js +50 -35
- package/lib/tools/flow-path/index.js.map +1 -0
- package/lib/tools/snapshot/index.d.ts +25 -0
- package/{cjs → lib}/tools/snapshot/index.js +42 -30
- package/lib/tools/snapshot/index.js.map +1 -0
- package/lib/turbo-adapter/index.d.ts +11 -0
- package/{cjs → lib}/turbo-adapter/index.js +17 -14
- package/lib/turbo-adapter/index.js.map +1 -0
- package/package.json +29 -83
- package/rollup.config.js +3 -0
- package/src/NodeResize/BasicShape/Ellipse.tsx +22 -0
- package/src/NodeResize/BasicShape/Polygon.tsx +24 -0
- package/src/NodeResize/BasicShape/Rect.tsx +44 -0
- package/src/NodeResize/control/Control.tsx +527 -0
- package/src/NodeResize/control/ControlGroup.tsx +76 -0
- package/src/NodeResize/control/Util.ts +206 -0
- package/src/NodeResize/index.ts +22 -0
- package/src/NodeResize/node/DiamondResize.tsx +148 -0
- package/src/NodeResize/node/EllipseResize.tsx +139 -0
- package/src/NodeResize/node/HtmlResize.tsx +124 -0
- package/src/NodeResize/node/RectResize.tsx +146 -0
- package/src/NodeResize/node/index.ts +4 -0
- package/src/bpmn/constant.ts +53 -0
- package/src/bpmn/events/EndEvent.ts +73 -0
- package/src/bpmn/events/StartEvent.ts +52 -0
- package/src/bpmn/events/index.ts +2 -0
- package/src/bpmn/flow/SequenceFlow.ts +25 -0
- package/src/bpmn/flow/index.ts +1 -0
- package/src/bpmn/gateways/ExclusiveGateway.ts +71 -0
- package/src/bpmn/gateways/index.ts +1 -0
- package/src/bpmn/getBpmnId.ts +31 -0
- package/src/bpmn/index.ts +57 -0
- package/src/bpmn/tasks/ServiceTask.ts +63 -0
- package/src/bpmn/tasks/UserTask.ts +64 -0
- package/src/bpmn/tasks/index.ts +2 -0
- package/src/bpmn-adapter/bpmnIds.ts +31 -0
- package/src/bpmn-adapter/index.ts +596 -0
- package/src/bpmn-adapter/json2xml.ts +90 -0
- package/src/bpmn-adapter/xml2json.ts +544 -0
- package/src/bpmn-elements/README.md +223 -0
- package/src/bpmn-elements/__tests__/definition.test.js +72 -0
- package/src/bpmn-elements/index.d.ts +26 -0
- package/src/bpmn-elements/index.ts +107 -0
- package/src/bpmn-elements/presets/Event/EndEventFactory.ts +114 -0
- package/src/bpmn-elements/presets/Event/IntermediateCatchEvent.ts +108 -0
- package/src/bpmn-elements/presets/Event/IntermediateThrowEvent.ts +109 -0
- package/src/bpmn-elements/presets/Event/StartEventFactory.ts +114 -0
- package/src/bpmn-elements/presets/Event/boundaryEventFactory.ts +117 -0
- package/src/bpmn-elements/presets/Event/index.ts +14 -0
- package/src/bpmn-elements/presets/Flow/flow.d.ts +6 -0
- package/src/bpmn-elements/presets/Flow/index.ts +8 -0
- package/src/bpmn-elements/presets/Flow/manhattan.ts +691 -0
- package/src/bpmn-elements/presets/Flow/sequenceFlow.ts +65 -0
- package/src/bpmn-elements/presets/Gateway/gateway.ts +107 -0
- package/src/bpmn-elements/presets/Gateway/index.ts +23 -0
- package/src/bpmn-elements/presets/Pool/Lane.ts +211 -0
- package/src/bpmn-elements/presets/Pool/Pool.ts +284 -0
- package/src/bpmn-elements/presets/Pool/index.ts +89 -0
- package/src/bpmn-elements/presets/Task/index.ts +122 -0
- package/src/bpmn-elements/presets/Task/subProcess.ts +190 -0
- package/src/bpmn-elements/presets/Task/task.ts +193 -0
- package/src/bpmn-elements/presets/icons.ts +155 -0
- package/src/bpmn-elements/utils.ts +52 -0
- package/src/bpmn-elements-adapter/README.md +295 -0
- package/src/bpmn-elements-adapter/__tests__/adapter_in.test.js +526 -0
- package/src/bpmn-elements-adapter/__tests__/adapter_out.test.js +569 -0
- package/src/bpmn-elements-adapter/constant.ts +76 -0
- package/src/bpmn-elements-adapter/index.ts +1134 -0
- package/src/bpmn-elements-adapter/json2xml.ts +91 -0
- package/src/bpmn-elements-adapter/xml2json.ts +548 -0
- package/src/components/context-menu/index.ts +253 -0
- package/src/components/control/index.ts +141 -0
- package/src/components/dnd-panel/index.ts +129 -0
- package/src/components/highlight/index.ts +173 -0
- package/src/components/menu/index.ts +435 -0
- package/src/components/mini-map/index.ts +666 -0
- package/src/components/selection-select/index.ts +184 -0
- package/src/index.less +1 -0
- package/src/index.ts +22 -0
- package/src/insert-node-in-polyline/edge.ts +175 -0
- package/src/insert-node-in-polyline/index.ts +187 -0
- package/src/materials/curved-edge/__test__/curved-edge.test.ts +43 -0
- package/src/materials/curved-edge/index.ts +185 -0
- package/src/materials/group/GroupNode.ts +443 -0
- package/src/materials/group/index.ts +542 -0
- package/src/materials/node-selection/index.ts +271 -0
- package/src/mindmap/fakerRoot.ts +19 -0
- package/src/mindmap/index.ts +328 -0
- package/src/mindmap/markContent.ts +81 -0
- package/src/mindmap/markContentOption.ts +81 -0
- package/src/mindmap/markEntity.ts +82 -0
- package/src/mindmap/markRoot.ts +83 -0
- package/src/mindmap/theme.ts +11 -0
- package/src/rect-label-node/RectLabelNodeView.ts +33 -0
- package/src/rect-label-node/index.ts +15 -0
- package/src/style/index.less +255 -0
- package/src/style/raw.ts +222 -0
- package/src/tools/auto-layout/index.ts +282 -0
- package/src/tools/flow-path/index.ts +234 -0
- package/src/tools/snapshot/README.md +9 -0
- package/src/tools/snapshot/index.ts +275 -0
- package/src/turbo-adapter/index.ts +212 -0
- package/tsconfig.json +18 -0
- package/cjs/NodeResize/index.js +0 -40
- package/cjs/components/menu/index.js +0 -377
- package/cjs/components/mini-map/index.js +0 -437
- package/cjs/style/index.css +0 -222
- package/cjs/type/index.js +0 -2
- package/es/NodeResize/Control/Control.d.ts +0 -66
- package/es/NodeResize/Node/DiamondResize.d.ts +0 -30
- package/es/NodeResize/Node/EllipseResize.d.ts +0 -30
- package/es/NodeResize/Node/HtmlResize.d.ts +0 -30
- package/es/NodeResize/Node/RectResize.d.ts +0 -32
- package/es/type/index.d.ts +0 -6
- package/es/type/index.js +0 -0
- package/lib/AutoLayout.js +0 -1
- package/lib/BpmnAdapter.js +0 -1
- package/lib/BpmnElement.js +0 -1
- package/lib/ContextMenu.js +0 -1
- package/lib/Control.js +0 -1
- package/lib/CurvedEdge.js +0 -1
- package/lib/DndPanel.js +0 -1
- package/lib/FlowPath.js +0 -1
- package/lib/Group.js +0 -1
- package/lib/Highlight.js +0 -1
- package/lib/InsertNodeInPolyline.js +0 -1
- package/lib/Menu.js +0 -1
- package/lib/MiniMap.js +0 -1
- package/lib/NodeResize.js +0 -1
- package/lib/RectLabelNode.js +0 -1
- package/lib/SelectionSelect.js +0 -1
- package/lib/Snapshot.js +0 -1
- package/lib/TurboAdapter.js +0 -1
- package/lib/lfJson2Xml.js +0 -1
- package/lib/lfXml2Json.js +0 -1
- /package/es/NodeResize/{Control → control}/Util.d.ts +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import LogicFlow from '@logicflow/core'
|
|
2
|
+
|
|
3
|
+
import Position = LogicFlow.Position
|
|
4
|
+
import PointTuple = LogicFlow.PointTuple
|
|
5
|
+
|
|
6
|
+
export class SelectionSelect {
|
|
7
|
+
static pluginName = 'selectionSelect'
|
|
8
|
+
private container?: HTMLElement
|
|
9
|
+
private wrapper?: HTMLElement
|
|
10
|
+
private lf: LogicFlow
|
|
11
|
+
private startPoint?: Position
|
|
12
|
+
private endPoint?: Position
|
|
13
|
+
private disabled = true
|
|
14
|
+
private isDefaultStopMoveGraph = false
|
|
15
|
+
private isWholeNode = true
|
|
16
|
+
private isWholeEdge = true
|
|
17
|
+
|
|
18
|
+
constructor({ lf }: LogicFlow.ExtensionProps) {
|
|
19
|
+
this.lf = lf
|
|
20
|
+
// 初始化isDefaultStopMoveGraph取值
|
|
21
|
+
const { stopMoveGraph } = lf.getEditConfig()
|
|
22
|
+
this.isDefaultStopMoveGraph = stopMoveGraph!
|
|
23
|
+
// TODO: 有没有既能将方法挂载到lf上,又能提供类型提示的方法?
|
|
24
|
+
lf.openSelectionSelect = () => {
|
|
25
|
+
this.openSelectionSelect()
|
|
26
|
+
}
|
|
27
|
+
lf.closeSelectionSelect = () => {
|
|
28
|
+
this.closeSelectionSelect()
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
render(lf: LogicFlow, domContainer: HTMLElement) {
|
|
33
|
+
this.container = domContainer
|
|
34
|
+
lf.on('blank:mousedown', ({ e }: { e: MouseEvent }) => {
|
|
35
|
+
const config = lf.getEditConfig()
|
|
36
|
+
// 鼠标控制滚动移动画布的时候,不能选区。
|
|
37
|
+
if (!config.stopMoveGraph || this.disabled) {
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
|
+
// 禁用右键框选,修复可能导致画布出现多个框选框不消失的问题,见https://github.com/didi/LogicFlow/issues/985
|
|
41
|
+
const isRightClick = e.button === 2
|
|
42
|
+
if (isRightClick) {
|
|
43
|
+
return
|
|
44
|
+
}
|
|
45
|
+
const {
|
|
46
|
+
domOverlayPosition: { x, y },
|
|
47
|
+
} = lf.getPointByClient(e.clientX, e.clientY)
|
|
48
|
+
this.startPoint = {
|
|
49
|
+
x,
|
|
50
|
+
y,
|
|
51
|
+
}
|
|
52
|
+
this.endPoint = {
|
|
53
|
+
x,
|
|
54
|
+
y,
|
|
55
|
+
}
|
|
56
|
+
const wrapper = document.createElement('div')
|
|
57
|
+
wrapper.className = 'lf-selection-select'
|
|
58
|
+
wrapper.oncontextmenu = function prevent(ev: MouseEvent) {
|
|
59
|
+
ev.preventDefault()
|
|
60
|
+
}
|
|
61
|
+
wrapper.style.top = `${this.startPoint.y}px`
|
|
62
|
+
wrapper.style.left = `${this.startPoint.x}px`
|
|
63
|
+
domContainer.appendChild(wrapper)
|
|
64
|
+
this.wrapper = wrapper
|
|
65
|
+
document.addEventListener('mousemove', this.draw)
|
|
66
|
+
document.addEventListener('mouseup', this.drawOff)
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* 设置选中的灵敏度
|
|
72
|
+
* @param isWholeEdge 是否要边的起点终点都在选区范围才算选中。默认true
|
|
73
|
+
* @param isWholeNode 是否要节点的全部点都在选区范围才算选中。默认true
|
|
74
|
+
*/
|
|
75
|
+
setSelectionSense(isWholeEdge = true, isWholeNode = true) {
|
|
76
|
+
this.isWholeEdge = isWholeEdge
|
|
77
|
+
this.isWholeNode = isWholeNode
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 开启选区
|
|
82
|
+
*/
|
|
83
|
+
openSelectionSelect() {
|
|
84
|
+
const { stopMoveGraph } = this.lf.getEditConfig()
|
|
85
|
+
if (!stopMoveGraph) {
|
|
86
|
+
this.isDefaultStopMoveGraph = false
|
|
87
|
+
this.lf.updateEditConfig({
|
|
88
|
+
stopMoveGraph: true,
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
this.open()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* 关闭选区
|
|
96
|
+
*/
|
|
97
|
+
closeSelectionSelect() {
|
|
98
|
+
if (!this.isDefaultStopMoveGraph) {
|
|
99
|
+
this.lf.updateEditConfig({
|
|
100
|
+
stopMoveGraph: false,
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
this.close()
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
private draw = (ev: MouseEvent) => {
|
|
107
|
+
const {
|
|
108
|
+
domOverlayPosition: { x: x1, y: y1 },
|
|
109
|
+
} = this.lf.getPointByClient(ev.clientX, ev.clientY)
|
|
110
|
+
this.endPoint = {
|
|
111
|
+
x: x1,
|
|
112
|
+
y: y1,
|
|
113
|
+
}
|
|
114
|
+
if (this.startPoint) {
|
|
115
|
+
const { x, y } = this.startPoint
|
|
116
|
+
let left = x
|
|
117
|
+
let top = y
|
|
118
|
+
let width = x1 - x
|
|
119
|
+
let height = y1 - y
|
|
120
|
+
if (x1 < x) {
|
|
121
|
+
left = x1
|
|
122
|
+
width = x - x1
|
|
123
|
+
}
|
|
124
|
+
if (y1 < y) {
|
|
125
|
+
top = y1
|
|
126
|
+
height = y - y1
|
|
127
|
+
}
|
|
128
|
+
if (this.wrapper) {
|
|
129
|
+
this.wrapper.style.left = `${left}px`
|
|
130
|
+
this.wrapper.style.top = `${top}px`
|
|
131
|
+
this.wrapper.style.width = `${width}px`
|
|
132
|
+
this.wrapper.style.height = `${height}px`
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
private drawOff = () => {
|
|
137
|
+
document.removeEventListener('mousemove', this.draw)
|
|
138
|
+
document.removeEventListener('mouseup', this.drawOff)
|
|
139
|
+
if (this.wrapper) {
|
|
140
|
+
this.wrapper.oncontextmenu = null
|
|
141
|
+
this.container?.removeChild(this.wrapper)
|
|
142
|
+
}
|
|
143
|
+
if (this.startPoint && this.endPoint) {
|
|
144
|
+
const { x, y } = this.startPoint
|
|
145
|
+
const { x: x1, y: y1 } = this.endPoint
|
|
146
|
+
// 返回框选范围,左上角和右下角的坐标
|
|
147
|
+
const lt: PointTuple = [Math.min(x, x1), Math.min(y, y1)]
|
|
148
|
+
const rt: PointTuple = [Math.max(x, x1), Math.max(y, y1)]
|
|
149
|
+
this.lf.emit('selection:selected-area', {
|
|
150
|
+
topLeft: lt,
|
|
151
|
+
bottomRight: rt,
|
|
152
|
+
})
|
|
153
|
+
// 选区太小的情况就忽略
|
|
154
|
+
if (Math.abs(x1 - x) < 10 && Math.abs(y1 - y) < 10) {
|
|
155
|
+
return
|
|
156
|
+
}
|
|
157
|
+
const elements = this.lf.graphModel.getAreaElement(
|
|
158
|
+
lt,
|
|
159
|
+
rt,
|
|
160
|
+
this.isWholeEdge,
|
|
161
|
+
this.isWholeNode,
|
|
162
|
+
true,
|
|
163
|
+
)
|
|
164
|
+
const { group } = this.lf.graphModel
|
|
165
|
+
elements.forEach((element) => {
|
|
166
|
+
// 如果节点属于分组,则不不选中节点
|
|
167
|
+
if (!group || !group.getNodeGroup(element.id)) {
|
|
168
|
+
this.lf.selectElementById(element.id, true)
|
|
169
|
+
}
|
|
170
|
+
})
|
|
171
|
+
this.lf.emit('selection:selected', elements)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
private open() {
|
|
176
|
+
this.disabled = false
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
private close() {
|
|
180
|
+
this.disabled = true
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export default SelectionSelect
|
package/src/index.less
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import url('./style/index');
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './bpmn'
|
|
2
|
+
export * from './bpmn-adapter'
|
|
3
|
+
export * from './bpmn-elements'
|
|
4
|
+
export * from './bpmn-elements-adapter'
|
|
5
|
+
|
|
6
|
+
export * from './tools/snapshot'
|
|
7
|
+
export * from './turbo-adapter'
|
|
8
|
+
export * from './insert-node-in-polyline'
|
|
9
|
+
export * from './components/control'
|
|
10
|
+
export * from './components/menu'
|
|
11
|
+
export * from './components/context-menu'
|
|
12
|
+
export * from './components/dnd-panel'
|
|
13
|
+
export * from './components/selection-select'
|
|
14
|
+
export * from './components/mini-map'
|
|
15
|
+
export * from './materials/curved-edge'
|
|
16
|
+
export * from './materials/group'
|
|
17
|
+
export * from './NodeResize'
|
|
18
|
+
export * from './tools/flow-path'
|
|
19
|
+
export * from './tools/auto-layout'
|
|
20
|
+
export * from './bpmn-adapter/xml2json'
|
|
21
|
+
export * from './bpmn-adapter/json2xml'
|
|
22
|
+
export * from './components/highlight'
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import LogicFlow, { PolylineEdgeModel, BaseNodeModel } from '@logicflow/core'
|
|
2
|
+
|
|
3
|
+
import Point = LogicFlow.Point
|
|
4
|
+
|
|
5
|
+
// 这个里面的函数有些在core中已经存在,为了解耦关系,没有引用
|
|
6
|
+
|
|
7
|
+
enum SegmentDirection {
|
|
8
|
+
HORIZONTAL = 'horizontal',
|
|
9
|
+
VERTICAL = 'vertical',
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 判断一个点是否在线段中
|
|
14
|
+
* @param point 判断的点
|
|
15
|
+
* @param start 线段的起点
|
|
16
|
+
* @param end 线段的终点
|
|
17
|
+
* @param deviation 误差范围
|
|
18
|
+
* @returns boolean
|
|
19
|
+
*/
|
|
20
|
+
export const isInSegment = (point, start, end, deviation = 0) => {
|
|
21
|
+
const distance = distToSegment(point, start, end)
|
|
22
|
+
return distance <= deviation
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function sqr(x) {
|
|
26
|
+
return x * x
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function dist2(v, w) {
|
|
30
|
+
return sqr(v.x - w.x) + sqr(v.y - w.y)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const distToSegmentSquared = (p, v, w) => {
|
|
34
|
+
const l2 = dist2(v, w)
|
|
35
|
+
if (l2 === 0) return dist2(p, v)
|
|
36
|
+
let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2
|
|
37
|
+
t = Math.max(0, Math.min(1, t))
|
|
38
|
+
return dist2(p, {
|
|
39
|
+
x: v.x + t * (w.x - v.x),
|
|
40
|
+
y: v.y + t * (w.y - v.y),
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const distToSegment = (point: Point, start: Point, end: Point) =>
|
|
45
|
+
Math.sqrt(distToSegmentSquared(point, start, end))
|
|
46
|
+
|
|
47
|
+
/* 获取节点bbox */
|
|
48
|
+
const getNodeBBox = (node: BaseNodeModel) => {
|
|
49
|
+
const { x, y, width, height } = node
|
|
50
|
+
const bBox = {
|
|
51
|
+
minX: x - width / 2,
|
|
52
|
+
minY: y - height / 2,
|
|
53
|
+
maxX: x + width / 2,
|
|
54
|
+
maxY: y + height / 2,
|
|
55
|
+
x,
|
|
56
|
+
y,
|
|
57
|
+
width,
|
|
58
|
+
height,
|
|
59
|
+
centerX: x,
|
|
60
|
+
centerY: y,
|
|
61
|
+
}
|
|
62
|
+
return bBox
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* 判断线段的方向 */
|
|
66
|
+
const segmentDirection = (start: Point, end: Point) => {
|
|
67
|
+
let direction
|
|
68
|
+
if (start.x === end.x) {
|
|
69
|
+
direction = SegmentDirection.VERTICAL
|
|
70
|
+
} else if (start.y === end.y) {
|
|
71
|
+
direction = SegmentDirection.HORIZONTAL
|
|
72
|
+
}
|
|
73
|
+
return direction
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// 节点是够在线段内,求出节点与线段的交点
|
|
77
|
+
export const crossPointInSegment = (
|
|
78
|
+
node: BaseNodeModel,
|
|
79
|
+
start: Point,
|
|
80
|
+
end: Point,
|
|
81
|
+
) => {
|
|
82
|
+
const bBox = getNodeBBox(node)
|
|
83
|
+
const direction = segmentDirection(start, end)
|
|
84
|
+
const maxX = Math.max(start.x, end.x)
|
|
85
|
+
const minX = Math.min(start.x, end.x)
|
|
86
|
+
const maxY = Math.max(start.y, end.y)
|
|
87
|
+
const minY = Math.min(start.y, end.y)
|
|
88
|
+
const { x, y, width, height } = node
|
|
89
|
+
if (direction === SegmentDirection.HORIZONTAL) {
|
|
90
|
+
// 同一水平线
|
|
91
|
+
if (maxX >= bBox.maxX && minX <= bBox.minX) {
|
|
92
|
+
return {
|
|
93
|
+
startCrossPoint: {
|
|
94
|
+
x: start.x > end.x ? x + width / 2 : x - width / 2,
|
|
95
|
+
y: start.y,
|
|
96
|
+
},
|
|
97
|
+
endCrossPoint: {
|
|
98
|
+
x: start.x > end.x ? x - width / 2 : x + width / 2,
|
|
99
|
+
y: start.y,
|
|
100
|
+
},
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
} else if (direction === SegmentDirection.VERTICAL) {
|
|
104
|
+
// 同一垂直线
|
|
105
|
+
if (maxY >= bBox.maxY && minY <= bBox.minY) {
|
|
106
|
+
return {
|
|
107
|
+
startCrossPoint: {
|
|
108
|
+
x: start.x,
|
|
109
|
+
y: start.y > end.y ? y + height / 2 : y - height / 2,
|
|
110
|
+
},
|
|
111
|
+
endCrossPoint: {
|
|
112
|
+
x: start.x,
|
|
113
|
+
y: start.y > end.y ? y - height / 2 : y + height / 2,
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
interface SegmentCross {
|
|
121
|
+
crossIndex: number
|
|
122
|
+
crossPoints: {
|
|
123
|
+
startCrossPoint: Point
|
|
124
|
+
endCrossPoint: Point
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// 节点是否在线段内
|
|
129
|
+
// eslint-disable-next-line max-len
|
|
130
|
+
export const isNodeInSegment = (
|
|
131
|
+
node: BaseNodeModel,
|
|
132
|
+
polyline: PolylineEdgeModel,
|
|
133
|
+
deviation = 0,
|
|
134
|
+
): SegmentCross => {
|
|
135
|
+
const { x, y } = node
|
|
136
|
+
const { pointsList } = polyline
|
|
137
|
+
for (let i = 0; i < pointsList.length - 1; i++) {
|
|
138
|
+
if (
|
|
139
|
+
isInSegment(
|
|
140
|
+
{
|
|
141
|
+
x,
|
|
142
|
+
y,
|
|
143
|
+
},
|
|
144
|
+
pointsList[i],
|
|
145
|
+
pointsList[i + 1],
|
|
146
|
+
deviation,
|
|
147
|
+
)
|
|
148
|
+
) {
|
|
149
|
+
const bBoxCross = crossPointInSegment(
|
|
150
|
+
node,
|
|
151
|
+
pointsList[i],
|
|
152
|
+
pointsList[i + 1],
|
|
153
|
+
)
|
|
154
|
+
if (bBoxCross) {
|
|
155
|
+
return {
|
|
156
|
+
crossIndex: i + 1,
|
|
157
|
+
crossPoints: bBoxCross,
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
crossIndex: -1,
|
|
164
|
+
crossPoints: {
|
|
165
|
+
startCrossPoint: {
|
|
166
|
+
x: 0,
|
|
167
|
+
y: 0,
|
|
168
|
+
},
|
|
169
|
+
endCrossPoint: {
|
|
170
|
+
x: 0,
|
|
171
|
+
y: 0,
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import LogicFlow, {
|
|
2
|
+
BaseNodeModel,
|
|
3
|
+
PolylineEdgeModel,
|
|
4
|
+
EventType,
|
|
5
|
+
formateAnchorConnectValidateData,
|
|
6
|
+
} from '@logicflow/core'
|
|
7
|
+
import { cloneDeep } from 'lodash-es'
|
|
8
|
+
import { isNodeInSegment } from './edge'
|
|
9
|
+
|
|
10
|
+
import NodeData = LogicFlow.NodeData
|
|
11
|
+
|
|
12
|
+
export class InsertNodeInPolyline {
|
|
13
|
+
static pluginName = 'insertNodeInPolyline'
|
|
14
|
+
_lf: LogicFlow
|
|
15
|
+
dndAdd: boolean // dnd 添加节点到折线上的开关
|
|
16
|
+
dropAdd: boolean // 移动节点到折线上的开关
|
|
17
|
+
deviation: number // 节点中心距离直接距离小于该值时,认为节点在折线上
|
|
18
|
+
constructor({ lf }) {
|
|
19
|
+
this._lf = lf
|
|
20
|
+
// fix https://github.com/didi/LogicFlow/issues/754
|
|
21
|
+
this.deviation = 20
|
|
22
|
+
this.dndAdd = true
|
|
23
|
+
this.dropAdd = true
|
|
24
|
+
this.eventHandler()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
eventHandler() {
|
|
28
|
+
// 监听事件
|
|
29
|
+
if (this.dndAdd) {
|
|
30
|
+
this._lf.on('node:dnd-add', ({ data }: { data: NodeData }) => {
|
|
31
|
+
this.insetNode(data)
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
if (this.dropAdd) {
|
|
35
|
+
this._lf.on('node:drop', ({ data }: { data: NodeData }) => {
|
|
36
|
+
const { edges } = this._lf.graphModel
|
|
37
|
+
const { id } = data
|
|
38
|
+
// 只有游离节点才能插入到连线上
|
|
39
|
+
let pureNode = true
|
|
40
|
+
for (let i = 0; i < edges.length; i++) {
|
|
41
|
+
if (edges[i].sourceNodeId === id || edges[i].targetNodeId === id) {
|
|
42
|
+
pureNode = false
|
|
43
|
+
break
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (pureNode) {
|
|
47
|
+
this.insetNode(data)
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 插入节点前校验规则
|
|
55
|
+
* @param sourceNodeId
|
|
56
|
+
* @param targetNodeId
|
|
57
|
+
* @param sourceAnchorId
|
|
58
|
+
* @param targetAnchorId
|
|
59
|
+
* @param nodeData
|
|
60
|
+
*/
|
|
61
|
+
// fix: https://github.com/didi/LogicFlow/issues/1078
|
|
62
|
+
checkRuleBeforeInsetNode(
|
|
63
|
+
sourceNodeId: string,
|
|
64
|
+
targetNodeId: string,
|
|
65
|
+
sourceAnchorId: string,
|
|
66
|
+
targetAnchorId: string,
|
|
67
|
+
nodeData: NodeData,
|
|
68
|
+
) {
|
|
69
|
+
const sourceNodeModel = this._lf.getNodeModelById(sourceNodeId)!
|
|
70
|
+
const targetNodeModel = this._lf.getNodeModelById(targetNodeId)!
|
|
71
|
+
|
|
72
|
+
const sourceAnchorInfo = sourceNodeModel.getAnchorInfo(sourceAnchorId)!
|
|
73
|
+
const targetAnchorInfo = targetNodeModel.getAnchorInfo(targetAnchorId)!
|
|
74
|
+
|
|
75
|
+
// TODO: nodeData 与 isAllowConnectedAsSource 方法需要的类型 BaseNodeModel 不一致,少了 target 属性等,需要验证是否可用。
|
|
76
|
+
const sourceRuleResultData = sourceNodeModel.isAllowConnectedAsSource(
|
|
77
|
+
nodeData as BaseNodeModel,
|
|
78
|
+
sourceAnchorInfo,
|
|
79
|
+
targetAnchorInfo,
|
|
80
|
+
)
|
|
81
|
+
const targetRuleResultData = targetNodeModel.isAllowConnectedAsTarget(
|
|
82
|
+
nodeData as BaseNodeModel,
|
|
83
|
+
sourceAnchorInfo,
|
|
84
|
+
targetAnchorInfo,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
const { isAllPass: isSourcePass, msg: sourceMsg } =
|
|
88
|
+
formateAnchorConnectValidateData(sourceRuleResultData)
|
|
89
|
+
const { isAllPass: isTargetPass, msg: targetMsg } =
|
|
90
|
+
formateAnchorConnectValidateData(targetRuleResultData)
|
|
91
|
+
|
|
92
|
+
return {
|
|
93
|
+
isPass: isSourcePass && isTargetPass,
|
|
94
|
+
sourceMsg,
|
|
95
|
+
targetMsg,
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
insetNode(nodeData: NodeData): void {
|
|
100
|
+
const { edges } = this._lf.graphModel
|
|
101
|
+
const nodeModel = this._lf.getNodeModelById(nodeData.id)
|
|
102
|
+
|
|
103
|
+
// fix: https://github.com/didi/LogicFlow/issues/1077
|
|
104
|
+
// 参照https://github.com/didi/LogicFlow/issues/454=>当getDefaultAnchor(){return []}表示:不显示锚点,也不允许其他节点连接到此节点
|
|
105
|
+
// 当getDefaultAnchor=[],直接阻止下面进行edges的截断插入node相关逻辑
|
|
106
|
+
const anchorArray = nodeModel?.getDefaultAnchor()
|
|
107
|
+
const isNotAllowConnect = !anchorArray || anchorArray.length === 0
|
|
108
|
+
if (isNotAllowConnect) {
|
|
109
|
+
this._lf.graphModel.eventCenter.emit(EventType.CONNECTION_NOT_ALLOWED, {
|
|
110
|
+
data: nodeData,
|
|
111
|
+
msg: '自定义类型节点不显示锚点,也不允许其他节点连接到此节点',
|
|
112
|
+
})
|
|
113
|
+
return
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (!nodeModel) return
|
|
117
|
+
for (let i = 0; i < edges.length; i++) {
|
|
118
|
+
const { crossIndex, crossPoints } = isNodeInSegment(
|
|
119
|
+
nodeModel,
|
|
120
|
+
edges[i] as PolylineEdgeModel,
|
|
121
|
+
this.deviation,
|
|
122
|
+
)
|
|
123
|
+
if (crossIndex >= 0) {
|
|
124
|
+
const {
|
|
125
|
+
sourceNodeId,
|
|
126
|
+
targetNodeId,
|
|
127
|
+
id,
|
|
128
|
+
type,
|
|
129
|
+
pointsList,
|
|
130
|
+
sourceAnchorId,
|
|
131
|
+
targetAnchorId,
|
|
132
|
+
} = edges[i]
|
|
133
|
+
// fix https://github.com/didi/LogicFlow/issues/996
|
|
134
|
+
const startPoint = cloneDeep(pointsList[0])
|
|
135
|
+
const endPoint = cloneDeep(crossPoints.startCrossPoint)
|
|
136
|
+
this._lf.deleteEdge(id)
|
|
137
|
+
const checkResult = this.checkRuleBeforeInsetNode(
|
|
138
|
+
sourceNodeId,
|
|
139
|
+
targetNodeId,
|
|
140
|
+
sourceAnchorId!,
|
|
141
|
+
targetAnchorId!,
|
|
142
|
+
nodeData,
|
|
143
|
+
)
|
|
144
|
+
this._lf.addEdge({
|
|
145
|
+
type,
|
|
146
|
+
sourceNodeId,
|
|
147
|
+
targetNodeId: nodeData.id,
|
|
148
|
+
startPoint,
|
|
149
|
+
endPoint,
|
|
150
|
+
pointsList: [
|
|
151
|
+
...pointsList.slice(0, crossIndex),
|
|
152
|
+
crossPoints.startCrossPoint,
|
|
153
|
+
],
|
|
154
|
+
})
|
|
155
|
+
this._lf.addEdge({
|
|
156
|
+
type,
|
|
157
|
+
sourceNodeId: nodeData.id,
|
|
158
|
+
targetNodeId,
|
|
159
|
+
startPoint: cloneDeep(crossPoints.endCrossPoint),
|
|
160
|
+
endPoint: cloneDeep(pointsList[pointsList.length - 1]),
|
|
161
|
+
pointsList: [
|
|
162
|
+
crossPoints.endCrossPoint,
|
|
163
|
+
...pointsList.slice(crossIndex),
|
|
164
|
+
],
|
|
165
|
+
})
|
|
166
|
+
if (!checkResult.isPass) {
|
|
167
|
+
this._lf.graphModel.eventCenter.emit(
|
|
168
|
+
EventType.CONNECTION_NOT_ALLOWED,
|
|
169
|
+
{
|
|
170
|
+
data: nodeData,
|
|
171
|
+
msg: checkResult.targetMsg || checkResult.sourceMsg,
|
|
172
|
+
},
|
|
173
|
+
)
|
|
174
|
+
// FIXME:在关闭了历史记录的情况下,撤销操作会不生效。
|
|
175
|
+
setTimeout(() => {
|
|
176
|
+
this._lf.undo()
|
|
177
|
+
}, 200)
|
|
178
|
+
break
|
|
179
|
+
} else {
|
|
180
|
+
break
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export default InsertNodeInPolyline
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getCurvedEdgePath } from '../index';
|
|
2
|
+
|
|
3
|
+
describe('test curved edge ', () => {
|
|
4
|
+
test('path calculation', () => {
|
|
5
|
+
const radius = 5;
|
|
6
|
+
|
|
7
|
+
const points1 = '460,150 670,150';
|
|
8
|
+
const path1 = 'M460 150 L 670 150';
|
|
9
|
+
expect(
|
|
10
|
+
getCurvedEdgePath(
|
|
11
|
+
points1.split(' ').map((p) => p.split(',').map((a) => +a)),
|
|
12
|
+
radius,
|
|
13
|
+
),
|
|
14
|
+
).toBe(path1);
|
|
15
|
+
|
|
16
|
+
const points2 = '510,250 540,250 540,175 490,175 490,100 520,100';
|
|
17
|
+
const path2 = 'M510 250L 510 250L 535 250 Q 540 250 540 245L 540 245L 540 180 Q 540 175 535 175L 535 175L 495 175 Q 490 175 490 170L 490 170L 490 105 Q 490 100 495 100L 520 100';
|
|
18
|
+
expect(
|
|
19
|
+
getCurvedEdgePath(
|
|
20
|
+
points2.split(' ').map((p) => p.split(',').map((a) => +a)),
|
|
21
|
+
radius,
|
|
22
|
+
),
|
|
23
|
+
).toBe(path2);
|
|
24
|
+
|
|
25
|
+
const points3 = '690,120 720,120 720,50 560,50 560,260 690,260';
|
|
26
|
+
const path3 = 'M690 120L 690 120L 715 120 Q 720 120 720 115L 720 115L 720 55 Q 720 50 715 50L 715 50L 565 50 Q 560 50 560 55L 560 55L 560 255 Q 560 260 565 260L 690 260';
|
|
27
|
+
expect(
|
|
28
|
+
getCurvedEdgePath(
|
|
29
|
+
points3.split(' ').map((p) => p.split(',').map((a) => +a)),
|
|
30
|
+
radius,
|
|
31
|
+
),
|
|
32
|
+
).toBe(path3);
|
|
33
|
+
|
|
34
|
+
const point4 = '690,180 690,210 660,210 660,190 630,190 630,220';
|
|
35
|
+
const path4 = 'M690 180L 690 180L 690 205 Q 690 210 685 210L 685 210L 665 210 Q 660 210 660 205L 660 205L 660 195 Q 660 190 655 190L 655 190L 635 190 Q 630 190 630 195L 630 220';
|
|
36
|
+
expect(
|
|
37
|
+
getCurvedEdgePath(
|
|
38
|
+
point4.split(' ').map((p) => p.split(',').map((a) => +a)),
|
|
39
|
+
radius,
|
|
40
|
+
),
|
|
41
|
+
).toBe(path4);
|
|
42
|
+
});
|
|
43
|
+
});
|