@logicflow/extension 2.2.0-alpha.7 → 2.2.1

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.
Files changed (125) hide show
  1. package/README.md +16 -0
  2. package/package.json +10 -7
  3. package/.turbo/turbo-build.log +0 -38
  4. package/CHANGELOG.md +0 -1829
  5. package/__test__/bpmn-adapter.test.js +0 -227
  6. package/es/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
  7. package/es/materials/curved-edge/__test__/curved-edge.test.js +0 -18
  8. package/jest.config.js +0 -198
  9. package/lib/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
  10. package/lib/materials/curved-edge/__test__/curved-edge.test.js +0 -20
  11. package/rollup.config.js +0 -52
  12. package/src/NodeResize/BasicShape/Ellipse.tsx +0 -22
  13. package/src/NodeResize/BasicShape/Polygon.tsx +0 -24
  14. package/src/NodeResize/BasicShape/Rect.tsx +0 -44
  15. package/src/NodeResize/control/Control.tsx +0 -537
  16. package/src/NodeResize/control/ControlGroup.tsx +0 -76
  17. package/src/NodeResize/control/Util.ts +0 -206
  18. package/src/NodeResize/index.ts +0 -26
  19. package/src/NodeResize/node/DiamondResize.tsx +0 -149
  20. package/src/NodeResize/node/EllipseResize.tsx +0 -140
  21. package/src/NodeResize/node/HtmlResize.tsx +0 -125
  22. package/src/NodeResize/node/RectResize.tsx +0 -126
  23. package/src/NodeResize/node/index.ts +0 -4
  24. package/src/bpmn/constant.ts +0 -56
  25. package/src/bpmn/events/EndEvent.ts +0 -73
  26. package/src/bpmn/events/StartEvent.ts +0 -52
  27. package/src/bpmn/events/index.ts +0 -2
  28. package/src/bpmn/flow/SequenceFlow.ts +0 -25
  29. package/src/bpmn/flow/index.ts +0 -1
  30. package/src/bpmn/gateways/ExclusiveGateway.ts +0 -71
  31. package/src/bpmn/gateways/index.ts +0 -1
  32. package/src/bpmn/getBpmnId.ts +0 -31
  33. package/src/bpmn/index.ts +0 -60
  34. package/src/bpmn/tasks/ServiceTask.ts +0 -63
  35. package/src/bpmn/tasks/UserTask.ts +0 -64
  36. package/src/bpmn/tasks/index.ts +0 -2
  37. package/src/bpmn-adapter/bpmnIds.ts +0 -31
  38. package/src/bpmn-adapter/index.ts +0 -835
  39. package/src/bpmn-adapter/json2xml.ts +0 -127
  40. package/src/bpmn-adapter/xml2json.ts +0 -544
  41. package/src/bpmn-elements/README.md +0 -223
  42. package/src/bpmn-elements/__tests__/definition.test.js +0 -72
  43. package/src/bpmn-elements/index.d.ts +0 -26
  44. package/src/bpmn-elements/index.ts +0 -107
  45. package/src/bpmn-elements/presets/Event/EndEventFactory.ts +0 -114
  46. package/src/bpmn-elements/presets/Event/IntermediateCatchEvent.ts +0 -108
  47. package/src/bpmn-elements/presets/Event/IntermediateThrowEvent.ts +0 -109
  48. package/src/bpmn-elements/presets/Event/StartEventFactory.ts +0 -114
  49. package/src/bpmn-elements/presets/Event/boundaryEventFactory.ts +0 -117
  50. package/src/bpmn-elements/presets/Event/index.ts +0 -14
  51. package/src/bpmn-elements/presets/Flow/flow.d.ts +0 -6
  52. package/src/bpmn-elements/presets/Flow/index.ts +0 -8
  53. package/src/bpmn-elements/presets/Flow/manhattan.ts +0 -691
  54. package/src/bpmn-elements/presets/Flow/sequenceFlow.ts +0 -65
  55. package/src/bpmn-elements/presets/Gateway/gateway.ts +0 -107
  56. package/src/bpmn-elements/presets/Gateway/index.ts +0 -23
  57. package/src/bpmn-elements/presets/Pool/Lane.ts +0 -211
  58. package/src/bpmn-elements/presets/Pool/Pool.ts +0 -284
  59. package/src/bpmn-elements/presets/Pool/index.ts +0 -89
  60. package/src/bpmn-elements/presets/Task/index.ts +0 -122
  61. package/src/bpmn-elements/presets/Task/subProcess.ts +0 -189
  62. package/src/bpmn-elements/presets/Task/task.ts +0 -193
  63. package/src/bpmn-elements/presets/icons.ts +0 -155
  64. package/src/bpmn-elements/utils.ts +0 -52
  65. package/src/bpmn-elements-adapter/README.md +0 -293
  66. package/src/bpmn-elements-adapter/__tests__/adapter_in.test.js +0 -528
  67. package/src/bpmn-elements-adapter/__tests__/adapter_out.test.js +0 -569
  68. package/src/bpmn-elements-adapter/constant.ts +0 -76
  69. package/src/bpmn-elements-adapter/index.ts +0 -1134
  70. package/src/bpmn-elements-adapter/json2xml.ts +0 -105
  71. package/src/bpmn-elements-adapter/xml2json.ts +0 -542
  72. package/src/components/context-menu/index.ts +0 -253
  73. package/src/components/control/index.ts +0 -155
  74. package/src/components/dnd-panel/index.ts +0 -137
  75. package/src/components/highlight/index.ts +0 -227
  76. package/src/components/menu/index.ts +0 -748
  77. package/src/components/mini-map/index.ts +0 -686
  78. package/src/components/selection-select/index.ts +0 -387
  79. package/src/dynamic-group/index.ts +0 -774
  80. package/src/dynamic-group/model.ts +0 -580
  81. package/src/dynamic-group/node.ts +0 -288
  82. package/src/dynamic-group/utils.ts +0 -46
  83. package/src/index.less +0 -1
  84. package/src/index.ts +0 -47
  85. package/src/insert-node-in-polyline/edge.ts +0 -175
  86. package/src/insert-node-in-polyline/index.ts +0 -193
  87. package/src/materials/curved-edge/__test__/curved-edge.test.ts +0 -46
  88. package/src/materials/curved-edge/index.ts +0 -217
  89. package/src/materials/group/GroupNode.ts +0 -437
  90. package/src/materials/group/index.ts +0 -542
  91. package/src/materials/node-selection/index.ts +0 -380
  92. package/src/mindmap/fakerRoot.ts +0 -19
  93. package/src/mindmap/index.ts +0 -328
  94. package/src/mindmap/markContent.ts +0 -81
  95. package/src/mindmap/markContentOption.ts +0 -81
  96. package/src/mindmap/markEntity.ts +0 -82
  97. package/src/mindmap/markRoot.ts +0 -83
  98. package/src/mindmap/theme.ts +0 -11
  99. package/src/pool/LaneModel.ts +0 -226
  100. package/src/pool/LaneView.ts +0 -220
  101. package/src/pool/PoolModel.ts +0 -631
  102. package/src/pool/PoolView.ts +0 -75
  103. package/src/pool/constant.ts +0 -19
  104. package/src/pool/index.ts +0 -621
  105. package/src/pool/utils.ts +0 -46
  106. package/src/rect-label-node/RectLabelNodeView.ts +0 -33
  107. package/src/rect-label-node/index.ts +0 -15
  108. package/src/style/index.less +0 -381
  109. package/src/style/raw.ts +0 -328
  110. package/src/tools/auto-layout/index.ts +0 -282
  111. package/src/tools/flow-path/index.ts +0 -233
  112. package/src/tools/label/Label.tsx +0 -357
  113. package/src/tools/label/LabelModel.ts +0 -83
  114. package/src/tools/label/LabelOverlay.tsx +0 -162
  115. package/src/tools/label/algorithm.ts +0 -42
  116. package/src/tools/label/index.ts +0 -479
  117. package/src/tools/label/mediumEditor.ts +0 -121
  118. package/src/tools/label/utils.ts +0 -395
  119. package/src/tools/proximity-connect/index.ts +0 -435
  120. package/src/tools/snapshot/README.md +0 -145
  121. package/src/tools/snapshot/index.ts +0 -701
  122. package/src/tools/snapshot/utils.ts +0 -163
  123. package/src/turbo-adapter/index.ts +0 -212
  124. package/stats.html +0 -4842
  125. package/tsconfig.json +0 -18
@@ -1,253 +0,0 @@
1
- import LogicFlow from '@logicflow/core'
2
-
3
- type MenuItem = {
4
- icon: string
5
- callback?: (data) => void
6
- type?: string
7
- className?: string
8
- properties: Record<string, any>
9
- }
10
-
11
- export type ContextMenuNodeData = {
12
- sourceId: string
13
- x: number
14
- y: number
15
- properties: Record<string, unknown>
16
- type?: string
17
- }
18
-
19
- const COMMON_TYPE_KEY = 'menu-common'
20
- const NEXT_X_DISTANCE = 200
21
- const NEXT_Y_DISTANCE = 100
22
-
23
- export class ContextMenu {
24
- static pluginName = 'contextMenu'
25
- private __menuDOM: HTMLElement
26
- private lf: LogicFlow
27
- private _activeData: any
28
- private menuTypeMap: Map<string, MenuItem[]> = new Map()
29
- container: any
30
- isShow?: boolean
31
-
32
- constructor({ lf }) {
33
- this.lf = lf
34
- this.__menuDOM = document.createElement('div')
35
- this.__menuDOM.className = 'lf-inner-context'
36
- this.menuTypeMap.set(COMMON_TYPE_KEY, [])
37
- this.lf.setContextMenuByType = (type, menus) => {
38
- this.setContextMenuByType(type, menus)
39
- }
40
- this.lf.setContextMenuItems = (menus) => {
41
- this.setContextMenuItems(menus)
42
- }
43
- this.lf.showContextMenu = (data) => {
44
- this.showContextMenu(data)
45
- }
46
- this.lf.hideContextMenu = () => {
47
- this.hideContextMenu()
48
- }
49
- }
50
-
51
- render(lf, container) {
52
- this.container = container
53
- lf.on('node:click', ({ data }) => {
54
- this._activeData = data
55
- this.createContextMenu()
56
- })
57
- lf.on('edge:click', ({ data }) => {
58
- // 获取右上角坐标
59
- this._activeData = data
60
- this.createContextMenu()
61
- })
62
- lf.on('blank:click', () => {
63
- this.hideContextMenu()
64
- })
65
- }
66
-
67
- setContextMenuByType(type, menus) {
68
- this.menuTypeMap.set(type, menus)
69
- }
70
-
71
- /**
72
- * 隐藏菜单
73
- */
74
- hideContextMenu() {
75
- this.__menuDOM.innerHTML = ''
76
- this.__menuDOM.style.display = 'none'
77
- if (this.isShow) {
78
- this.container.removeChild(this.__menuDOM)
79
- }
80
- this.lf.off(
81
- 'node:delete,edge:delete,node:drag,graph:transform',
82
- this.listenDelete,
83
- )
84
- this.isShow = false
85
- }
86
-
87
- /**
88
- * 显示指定元素菜单
89
- * @param data 节点id、节点类型、菜单位置
90
- */
91
- showContextMenu(data) {
92
- if (!data || !data.id) {
93
- console.warn('请检查传入的参数')
94
- return
95
- }
96
- this._activeData = data
97
- this.createContextMenu()
98
- }
99
-
100
- setContextMenuItems(menus) {
101
- this.menuTypeMap.set(COMMON_TYPE_KEY, menus)
102
- }
103
-
104
- /**
105
- * 获取新菜单位置
106
- */
107
- private getContextMenuPosition() {
108
- const data = this._activeData
109
- const Model = this.lf.graphModel.getElement(data.id)
110
- if (Model) {
111
- let x
112
- let y
113
- if (Model.BaseType === 'edge') {
114
- x = Number.MIN_SAFE_INTEGER
115
- y = Number.MAX_SAFE_INTEGER
116
- const edgeData = Model.getData()
117
- x = Math.max(edgeData.startPoint.x, x)
118
- y = Math.min(edgeData.startPoint.y, y)
119
- x = Math.max(edgeData.endPoint.x, x)
120
- y = Math.min(edgeData.endPoint.y, y)
121
- if (edgeData.pointsList) {
122
- edgeData.pointsList.forEach((point) => {
123
- x = Math.max(point.x, x)
124
- y = Math.min(point.y, y)
125
- })
126
- }
127
- }
128
- if (Model.BaseType === 'node') {
129
- x = data.x + Model.width / 2
130
- y = data.y - Model.height / 2
131
- }
132
- return this.lf.graphModel.transformModel.CanvasPointToHtmlPoint([x, y])
133
- }
134
- }
135
-
136
- private createContextMenu() {
137
- const { isSilentMode } = this.lf.options
138
- // 静默模式不显示菜单
139
- if (isSilentMode) {
140
- return
141
- }
142
- const items = [
143
- ...(this.menuTypeMap.get(this._activeData.type) || []),
144
- ...(this.menuTypeMap.get(COMMON_TYPE_KEY) || []),
145
- ]
146
-
147
- const menus = document.createDocumentFragment()
148
- items.forEach((item) => {
149
- const menuItem = document.createElement('div')
150
- menuItem.className = 'lf-context-item'
151
- const img = document.createElement('img')
152
- img.src = item.icon
153
- img.className = 'lf-context-img'
154
- if (item.className) {
155
- menuItem.className = `${menuItem.className} ${item.className}`
156
- }
157
- img.addEventListener('click', () => {
158
- this.hideContextMenu()
159
- if (item.callback) {
160
- item.callback(this._activeData)
161
- } else {
162
- this.addNode({
163
- sourceId: this._activeData.id,
164
- x: this._activeData.x,
165
- y: this._activeData.y,
166
- properties: item.properties,
167
- type: item.type,
168
- })
169
- }
170
- })
171
- menuItem.appendChild(img)
172
- menus.appendChild(menuItem)
173
- })
174
- this.__menuDOM.innerHTML = ''
175
- this.__menuDOM.appendChild(menus)
176
- this.showMenu()
177
- }
178
-
179
- private addNode(node: ContextMenuNodeData, y?: number) {
180
- const isDeep = y !== undefined
181
- if (y === undefined) {
182
- y = node.y
183
- }
184
-
185
- const nodeModel = this.lf.getNodeModelById(node.sourceId)
186
- if (nodeModel) {
187
- const leftTopX = node.x - nodeModel.width + NEXT_X_DISTANCE
188
- const leftTopY = y - node.y / 2 - 20
189
- const rightBottomX = node.x + nodeModel.width + NEXT_X_DISTANCE
190
- const rightBottomY = y + node.y / 2 + 20
191
-
192
- const existElements = this.lf.getAreaElement(
193
- [leftTopX, leftTopY],
194
- [rightBottomX, rightBottomY],
195
- )
196
- if (existElements.length) {
197
- y = y + NEXT_Y_DISTANCE
198
- this.addNode(node, y)
199
- return
200
- }
201
- if (node.type) {
202
- const newNode = this.lf.addNode({
203
- type: node.type,
204
- x: node.x + 200,
205
- y,
206
- properties: node.properties,
207
- })
208
- let startPoint
209
- let endPoint
210
- if (isDeep) {
211
- startPoint = {
212
- x: node.x,
213
- y: node.y + nodeModel.height / 2,
214
- }
215
- endPoint = {
216
- x: newNode.x - newNode.width / 2,
217
- y: newNode.y,
218
- }
219
- }
220
- this.lf.addEdge({
221
- sourceNodeId: node.sourceId,
222
- targetNodeId: newNode.id,
223
- startPoint,
224
- endPoint,
225
- })
226
- }
227
- }
228
- }
229
-
230
- private showMenu() {
231
- const menuPosition = this.getContextMenuPosition()
232
- if (menuPosition) {
233
- const [x, y] = menuPosition
234
- this.__menuDOM.style.display = 'flex'
235
- this.__menuDOM.style.top = `${y}px`
236
- this.__menuDOM.style.left = `${x + 10}px`
237
- this.container.appendChild(this.__menuDOM)
238
- // 菜单显示的时候,监听删除,同时隐藏
239
- !this.isShow &&
240
- this.lf.on(
241
- 'node:delete,edge:delete,node:drag,graph:transform',
242
- this.listenDelete,
243
- )
244
- this.isShow = true
245
- }
246
- }
247
-
248
- listenDelete = () => {
249
- this.hideContextMenu()
250
- }
251
- }
252
-
253
- export default ContextMenu
@@ -1,155 +0,0 @@
1
- import { isNil } from 'lodash-es'
2
- import LogicFlow from '@logicflow/core'
3
-
4
- type ControlItem = {
5
- key: string
6
- iconClass: string
7
- title: string
8
- text: string
9
- hideText?: boolean
10
- onClick?: (lf: LogicFlow, e: MouseEvent) => void
11
- onMouseEnter?: (lf: LogicFlow, e: MouseEvent) => void
12
- onMouseLeave?: (lf: LogicFlow, e: MouseEvent) => void
13
- }
14
-
15
- export class Control {
16
- static pluginName = 'control'
17
-
18
- private readonly lf: LogicFlow
19
- private controlItems: ControlItem[] = [
20
- {
21
- key: 'zoom-out',
22
- iconClass: 'lf-control-zoomOut',
23
- title: '缩小流程图',
24
- text: '缩小',
25
- hideText: false,
26
- onClick: () => {
27
- this.lf.zoom(false)
28
- },
29
- },
30
- {
31
- key: 'zoom-in',
32
- iconClass: 'lf-control-zoomIn',
33
- title: '放大流程图',
34
- text: '放大',
35
- hideText: false,
36
- onClick: () => {
37
- this.lf.zoom(true)
38
- },
39
- },
40
- {
41
- key: 'reset',
42
- iconClass: 'lf-control-fit',
43
- title: '恢复流程原有尺寸',
44
- text: '适应',
45
- hideText: false,
46
- onClick: () => {
47
- this.lf.resetZoom()
48
- },
49
- },
50
- {
51
- key: 'undo',
52
- iconClass: 'lf-control-undo',
53
- title: '回到上一步',
54
- text: '上一步',
55
- hideText: false,
56
- onClick: () => {
57
- this.lf.undo()
58
- },
59
- },
60
- {
61
- key: 'redo',
62
- iconClass: 'lf-control-redo',
63
- title: '移到下一步',
64
- text: '下一步',
65
- hideText: false,
66
- onClick: () => {
67
- this.lf.redo()
68
- },
69
- },
70
- ]
71
- private domContainer?: HTMLElement
72
- private toolEl?: HTMLElement
73
-
74
- constructor({ lf }: LogicFlow.IExtensionProps) {
75
- this.lf = lf
76
- }
77
-
78
- render(_: LogicFlow, domContainer: HTMLElement) {
79
- this.destroy()
80
- const toolEl = this.getControlTool()
81
- this.toolEl = toolEl
82
- domContainer.appendChild(toolEl)
83
- this.domContainer = domContainer
84
- }
85
-
86
- destroy() {
87
- if (
88
- this.domContainer &&
89
- this.toolEl &&
90
- this.domContainer.contains(this.toolEl)
91
- ) {
92
- this.domContainer.removeChild(this.toolEl)
93
- }
94
- }
95
-
96
- addItem(item: ControlItem) {
97
- this.controlItems.push(item)
98
- }
99
-
100
- removeItem(key: string) {
101
- const index = this.controlItems.findIndex((item) => item.key === key)
102
- return index == -1 ? null : this.controlItems.splice(index, 1)[0]
103
- }
104
-
105
- private getControlTool(): HTMLElement {
106
- const { themeMode } = this.lf.graphModel
107
- const NORMAL = `lf-control-item-${themeMode} lf-control-item`
108
- const DISABLED = 'lf-control-item disabled'
109
- const controlTool = document.createElement('div')
110
- const controlElements: HTMLDivElement[] = []
111
- controlTool.className = `lf-control-${themeMode} lf-control`
112
-
113
- const itemsToRender = [...this.controlItems]
114
- itemsToRender.forEach((item) => {
115
- const itemContainer = document.createElement('div')
116
- const icon = document.createElement('i')
117
- itemContainer.className = DISABLED
118
- item.onClick && (itemContainer.onclick = item.onClick.bind(null, this.lf))
119
- item.onMouseEnter &&
120
- (itemContainer.onmouseenter = item.onMouseEnter.bind(null, this.lf))
121
- item.onMouseLeave &&
122
- (itemContainer.onmouseleave = item.onMouseLeave.bind(null, this.lf))
123
- icon.className = item.iconClass
124
- if (isNil(item.hideText) || item.hideText !== true) {
125
- const text = document.createElement('span')
126
- text.className = `lf-control-text-${themeMode} lf-control-text`
127
- text.title = item.title
128
- text.innerText = item.text
129
- itemContainer.append(icon, text)
130
- } else {
131
- itemContainer.append(icon)
132
- }
133
- switch (item.key) {
134
- case 'undo':
135
- this.lf.on('history:change', ({ data: { undoAble } }: any) => {
136
- itemContainer.className = undoAble ? NORMAL : DISABLED
137
- })
138
- break
139
- case 'redo':
140
- this.lf.on('history:change', ({ data: { redoAble } }: any) => {
141
- itemContainer.className = redoAble ? NORMAL : DISABLED
142
- })
143
- break
144
- default:
145
- itemContainer.className = NORMAL
146
- break
147
- }
148
- controlElements.push(itemContainer)
149
- })
150
- controlTool.append(...controlElements)
151
- return controlTool
152
- }
153
- }
154
-
155
- export default Control
@@ -1,137 +0,0 @@
1
- import LogicFlow from '@logicflow/core'
2
-
3
- export type ShapeItem = {
4
- type?: string
5
- text?: string
6
- icon?: string
7
- label?: string
8
- className?: string
9
- disabled?: boolean
10
- properties?: Record<string, unknown>
11
- callback?: (lf: LogicFlow, container?: HTMLElement) => void
12
- [key: string]: unknown
13
- }
14
-
15
- export class DndPanel {
16
- lf: LogicFlow
17
- static pluginName = 'dndPanel'
18
-
19
- shapeList?: ShapeItem[]
20
- panelEl?: HTMLDivElement
21
- domContainer?: HTMLElement
22
-
23
- constructor({ lf }) {
24
- this.lf = lf
25
- this.lf.setPatternItems = (shapeList) => {
26
- this.setPatternItems(shapeList)
27
- }
28
- }
29
-
30
- render(_lf: LogicFlow, domContainer) {
31
- this.destroy()
32
- if (!this.shapeList || this.shapeList.length === 0) {
33
- // 首次render后失败后,后续调用setPatternItems支持渲染
34
- this.domContainer = domContainer
35
- return
36
- }
37
- this.panelEl = document.createElement('div')
38
- this.panelEl.className = 'lf-dndpanel'
39
- this.panelEl.addEventListener(
40
- 'touchmove',
41
- (e) => {
42
- e.preventDefault()
43
- },
44
- { passive: false },
45
- )
46
- this.shapeList.forEach((shapeItem) => {
47
- this.panelEl?.appendChild(this.createDndItem(shapeItem))
48
- })
49
- domContainer.appendChild(this.panelEl)
50
- this.domContainer = domContainer
51
- }
52
-
53
- destroy() {
54
- if (
55
- this.domContainer &&
56
- this.panelEl &&
57
- this.domContainer.contains(this.panelEl)
58
- ) {
59
- this.domContainer.removeChild(this.panelEl)
60
- }
61
- }
62
-
63
- setPatternItems(shapeList) {
64
- this.shapeList = shapeList
65
- // 支持渲染后重新设置拖拽面板
66
- if (this.domContainer) {
67
- this.render(this.lf, this.domContainer)
68
- }
69
- }
70
-
71
- private createDndItem(shapeItem: ShapeItem): HTMLElement {
72
- const el = document.createElement('div')
73
- el.className = shapeItem.className
74
- ? `lf-dnd-item ${shapeItem.className}`
75
- : 'lf-dnd-item'
76
- const shape = document.createElement('div')
77
- shape.className = 'lf-dnd-shape'
78
- // if (typeof shapeItem.icon === 'string') {
79
- if (shapeItem.icon) {
80
- shape.style.backgroundImage = `url(${shapeItem.icon})`
81
- // shape.style.backgroundSize = 'contain'
82
- // } else {
83
- // shape.appendChild(shapeItem.icon);
84
- }
85
- el.appendChild(shape)
86
- if (shapeItem.label) {
87
- const text = document.createElement('div')
88
- text.innerText = shapeItem.label
89
- text.className = 'lf-dnd-text'
90
- el.appendChild(text)
91
- }
92
- if (shapeItem.disabled) {
93
- el.classList.add('disabled')
94
- // 保留callback的执行,可用于界面提示当前shapeItem的禁用状态
95
- el.onpointerdown = () => {
96
- if (shapeItem.callback) {
97
- shapeItem.callback(this.lf, this.domContainer)
98
- }
99
- }
100
- return el
101
- }
102
- el.onpointerdown = (e: PointerEvent) => {
103
- if (shapeItem.type) {
104
- this.lf.dnd.startDrag({
105
- type: shapeItem.type,
106
- properties: shapeItem.properties,
107
- text: shapeItem.text,
108
- })
109
- }
110
- if (shapeItem.callback) {
111
- shapeItem.callback(this.lf, this.domContainer)
112
- }
113
- e.preventDefault()
114
- }
115
- el.ondblclick = (e) => {
116
- this.lf.graphModel.eventCenter.emit('dnd:panel-dbclick', {
117
- e,
118
- data: shapeItem,
119
- })
120
- }
121
- el.onclick = (e) => {
122
- this.lf.graphModel.eventCenter.emit('dnd:panel-click', {
123
- e,
124
- data: shapeItem,
125
- })
126
- }
127
- el.oncontextmenu = (e) => {
128
- this.lf.graphModel.eventCenter.emit('dnd:panel-contextmenu', {
129
- e,
130
- data: shapeItem,
131
- })
132
- }
133
- return el
134
- }
135
- }
136
-
137
- export default DndPanel