@pega/cosmos-react-build 3.0.0-dev.3.0 → 3.0.0-dev.30.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.
Files changed (274) hide show
  1. package/lib/components/AppHeader/AppHeader.d.ts +4 -2
  2. package/lib/components/AppHeader/AppHeader.d.ts.map +1 -1
  3. package/lib/components/AppHeader/AppHeader.js +12 -10
  4. package/lib/components/AppHeader/AppHeader.js.map +1 -1
  5. package/lib/components/AppHeader/AppHeader.styles.d.ts +1 -3
  6. package/lib/components/AppHeader/AppHeader.styles.d.ts.map +1 -1
  7. package/lib/components/AppHeader/AppHeader.styles.js +5 -22
  8. package/lib/components/AppHeader/AppHeader.styles.js.map +1 -1
  9. package/lib/components/AppHeader/BranchButton.d.ts.map +1 -1
  10. package/lib/components/AppHeader/BranchButton.js +22 -18
  11. package/lib/components/AppHeader/BranchButton.js.map +1 -1
  12. package/lib/components/AppShell/AppShell.d.ts.map +1 -1
  13. package/lib/components/AppShell/AppShell.js +21 -20
  14. package/lib/components/AppShell/AppShell.js.map +1 -1
  15. package/lib/components/AppShell/AppShell.styles.d.ts.map +1 -1
  16. package/lib/components/AppShell/AppShell.styles.js +17 -2
  17. package/lib/components/AppShell/AppShell.styles.js.map +1 -1
  18. package/lib/components/AppShell/AppShell.types.d.ts +6 -9
  19. package/lib/components/AppShell/AppShell.types.d.ts.map +1 -1
  20. package/lib/components/AppShell/AppShell.types.js.map +1 -1
  21. package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts +3 -0
  22. package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts.map +1 -1
  23. package/lib/components/DynamicContentEditor/DynamicContentEditor.js +173 -42
  24. package/lib/components/DynamicContentEditor/DynamicContentEditor.js.map +1 -1
  25. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.d.ts +6 -0
  26. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.d.ts.map +1 -1
  27. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.js.map +1 -1
  28. package/lib/components/DynamicContentEditor/PegaCustomElement.d.ts +307 -3
  29. package/lib/components/DynamicContentEditor/PegaCustomElement.d.ts.map +1 -1
  30. package/lib/components/DynamicContentEditor/PegaCustomElement.js +21 -21
  31. package/lib/components/DynamicContentEditor/PegaCustomElement.js.map +1 -1
  32. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.d.ts +8 -0
  33. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.d.ts.map +1 -0
  34. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js +124 -0
  35. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js.map +1 -0
  36. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts +8 -0
  37. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts.map +1 -0
  38. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js +517 -0
  39. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js.map +1 -0
  40. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.d.ts +35 -0
  41. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.d.ts.map +1 -0
  42. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.js +2 -0
  43. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.js.map +1 -0
  44. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.d.ts +13 -0
  45. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.d.ts.map +1 -0
  46. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.js +46 -0
  47. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.js.map +1 -0
  48. package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts +6 -0
  49. package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts.map +1 -0
  50. package/lib/components/ExpressionBuilder/ExpressionBuilder.js +51 -0
  51. package/lib/components/ExpressionBuilder/ExpressionBuilder.js.map +1 -0
  52. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts +14 -0
  53. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts.map +1 -0
  54. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js +81 -0
  55. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js.map +1 -0
  56. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts +74 -0
  57. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts.map +1 -0
  58. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.js +2 -0
  59. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.js.map +1 -0
  60. package/lib/components/ExpressionBuilder/ExpressionBuilderContext.d.ts +7 -0
  61. package/lib/components/ExpressionBuilder/ExpressionBuilderContext.d.ts.map +1 -0
  62. package/lib/components/ExpressionBuilder/ExpressionBuilderContext.js +6 -0
  63. package/lib/components/ExpressionBuilder/ExpressionBuilderContext.js.map +1 -0
  64. package/lib/components/ExpressionBuilder/ExpressionDetails.d.ts +6 -0
  65. package/lib/components/ExpressionBuilder/ExpressionDetails.d.ts.map +1 -0
  66. package/lib/components/ExpressionBuilder/ExpressionDetails.js +12 -0
  67. package/lib/components/ExpressionBuilder/ExpressionDetails.js.map +1 -0
  68. package/lib/components/ExpressionBuilder/ExpressionItem.d.ts +6 -0
  69. package/lib/components/ExpressionBuilder/ExpressionItem.d.ts.map +1 -0
  70. package/lib/components/ExpressionBuilder/ExpressionItem.js +43 -0
  71. package/lib/components/ExpressionBuilder/ExpressionItem.js.map +1 -0
  72. package/lib/components/ExpressionBuilder/ExpressionList.d.ts +6 -0
  73. package/lib/components/ExpressionBuilder/ExpressionList.d.ts.map +1 -0
  74. package/lib/components/ExpressionBuilder/ExpressionList.js +32 -0
  75. package/lib/components/ExpressionBuilder/ExpressionList.js.map +1 -0
  76. package/lib/components/ExpressionBuilder/index.d.ts +8 -0
  77. package/lib/components/ExpressionBuilder/index.d.ts.map +1 -0
  78. package/lib/components/ExpressionBuilder/index.js +6 -0
  79. package/lib/components/ExpressionBuilder/index.js.map +1 -0
  80. package/lib/components/FlowModeller/AddNode.d.ts +11 -9
  81. package/lib/components/FlowModeller/AddNode.d.ts.map +1 -1
  82. package/lib/components/FlowModeller/AddNode.js +9 -3
  83. package/lib/components/FlowModeller/AddNode.js.map +1 -1
  84. package/lib/components/FlowModeller/Connector.d.ts +7 -0
  85. package/lib/components/FlowModeller/Connector.d.ts.map +1 -0
  86. package/lib/components/FlowModeller/Connector.js +71 -0
  87. package/lib/components/FlowModeller/Connector.js.map +1 -0
  88. package/lib/components/FlowModeller/DeletePopover.d.ts +19 -0
  89. package/lib/components/FlowModeller/DeletePopover.d.ts.map +1 -0
  90. package/lib/components/FlowModeller/DeletePopover.js +136 -0
  91. package/lib/components/FlowModeller/DeletePopover.js.map +1 -0
  92. package/lib/components/FlowModeller/FlowModeller.d.ts +3 -19
  93. package/lib/components/FlowModeller/FlowModeller.d.ts.map +1 -1
  94. package/lib/components/FlowModeller/FlowModeller.js +187 -63
  95. package/lib/components/FlowModeller/FlowModeller.js.map +1 -1
  96. package/lib/components/FlowModeller/FlowModeller.types.d.ts +25 -0
  97. package/lib/components/FlowModeller/FlowModeller.types.d.ts.map +1 -0
  98. package/lib/components/FlowModeller/FlowModeller.types.js +2 -0
  99. package/lib/components/FlowModeller/FlowModeller.types.js.map +1 -0
  100. package/lib/components/FlowModeller/FlowModellerContext.d.ts +6 -0
  101. package/lib/components/FlowModeller/FlowModellerContext.d.ts.map +1 -0
  102. package/lib/components/FlowModeller/FlowModellerContext.js +7 -0
  103. package/lib/components/FlowModeller/FlowModellerContext.js.map +1 -0
  104. package/lib/components/FlowModeller/Node/Node.types.d.ts +22 -9
  105. package/lib/components/FlowModeller/Node/Node.types.d.ts.map +1 -1
  106. package/lib/components/FlowModeller/Node/Node.types.js +2 -3
  107. package/lib/components/FlowModeller/Node/Node.types.js.map +1 -1
  108. package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts +6 -4
  109. package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts.map +1 -1
  110. package/lib/components/FlowModeller/Node/NodeTemplate.styles.js +21 -11
  111. package/lib/components/FlowModeller/Node/NodeTemplate.styles.js.map +1 -1
  112. package/lib/components/FlowModeller/Node/NodeTemplates.d.ts +1 -1
  113. package/lib/components/FlowModeller/Node/NodeTemplates.d.ts.map +1 -1
  114. package/lib/components/FlowModeller/Node/NodeTemplates.js +43 -19
  115. package/lib/components/FlowModeller/Node/NodeTemplates.js.map +1 -1
  116. package/lib/components/FlowModeller/Node.d.ts +5 -0
  117. package/lib/components/FlowModeller/Node.d.ts.map +1 -0
  118. package/lib/components/FlowModeller/Node.js +22 -0
  119. package/lib/components/FlowModeller/Node.js.map +1 -0
  120. package/lib/components/FlowModeller/Renderer/Renderer.d.ts.map +1 -1
  121. package/lib/components/FlowModeller/Renderer/Renderer.js +37 -6
  122. package/lib/components/FlowModeller/Renderer/Renderer.js.map +1 -1
  123. package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts +9 -9
  124. package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts.map +1 -1
  125. package/lib/components/FlowModeller/Renderer/Renderer.types.js.map +1 -1
  126. package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts +8 -3
  127. package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts.map +1 -1
  128. package/lib/components/FlowModeller/Renderer/Utils/Graph.js +7 -1
  129. package/lib/components/FlowModeller/Renderer/Utils/Graph.js.map +1 -1
  130. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts +2 -1
  131. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts.map +1 -1
  132. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js +19 -6
  133. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js.map +1 -1
  134. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts +9 -6
  135. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts.map +1 -1
  136. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js +23 -3
  137. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js.map +1 -1
  138. package/lib/components/FlowModeller/Utils/addNodeUtils.d.ts +17 -0
  139. package/lib/components/FlowModeller/Utils/addNodeUtils.d.ts.map +1 -0
  140. package/lib/components/FlowModeller/Utils/{AddNodeUtils.js → addNodeUtils.js} +58 -35
  141. package/lib/components/FlowModeller/Utils/addNodeUtils.js.map +1 -0
  142. package/lib/components/FlowModeller/Utils/deleteNodeUtils.d.ts +30 -0
  143. package/lib/components/FlowModeller/Utils/deleteNodeUtils.d.ts.map +1 -0
  144. package/lib/components/FlowModeller/Utils/deleteNodeUtils.js +81 -0
  145. package/lib/components/FlowModeller/Utils/deleteNodeUtils.js.map +1 -0
  146. package/lib/components/FlowModeller/helper.d.ts +18 -8
  147. package/lib/components/FlowModeller/helper.d.ts.map +1 -1
  148. package/lib/components/FlowModeller/helper.js +114 -55
  149. package/lib/components/FlowModeller/helper.js.map +1 -1
  150. package/lib/components/FlowModeller/index.d.ts +8 -3
  151. package/lib/components/FlowModeller/index.d.ts.map +1 -1
  152. package/lib/components/FlowModeller/index.js +5 -1
  153. package/lib/components/FlowModeller/index.js.map +1 -1
  154. package/lib/components/ItemLibrary/ItemLibrary.d.ts +8 -6
  155. package/lib/components/ItemLibrary/ItemLibrary.d.ts.map +1 -1
  156. package/lib/components/ItemLibrary/ItemLibrary.js +6 -8
  157. package/lib/components/ItemLibrary/ItemLibrary.js.map +1 -1
  158. package/lib/components/LifeCycle/Category.d.ts.map +1 -1
  159. package/lib/components/LifeCycle/Category.js +17 -13
  160. package/lib/components/LifeCycle/Category.js.map +1 -1
  161. package/lib/components/LifeCycle/LifeCycle.d.ts.map +1 -1
  162. package/lib/components/LifeCycle/LifeCycle.js +2 -3
  163. package/lib/components/LifeCycle/LifeCycle.js.map +1 -1
  164. package/lib/components/LifeCycle/LifeCycle.types.d.ts +2 -4
  165. package/lib/components/LifeCycle/LifeCycle.types.d.ts.map +1 -1
  166. package/lib/components/LifeCycle/LifeCycle.types.js.map +1 -1
  167. package/lib/components/LifeCycle/LifeCycleList.d.ts +1 -1
  168. package/lib/components/LifeCycle/LifeCycleList.d.ts.map +1 -1
  169. package/lib/components/LifeCycle/LifeCycleList.js +3 -2
  170. package/lib/components/LifeCycle/LifeCycleList.js.map +1 -1
  171. package/lib/components/LifeCycle/Stage.d.ts +1 -1
  172. package/lib/components/LifeCycle/Stage.d.ts.map +1 -1
  173. package/lib/components/LifeCycle/Stage.js +8 -17
  174. package/lib/components/LifeCycle/Stage.js.map +1 -1
  175. package/lib/components/LifeCycle/Step.d.ts +5 -8
  176. package/lib/components/LifeCycle/Step.d.ts.map +1 -1
  177. package/lib/components/LifeCycle/Step.js +10 -32
  178. package/lib/components/LifeCycle/Step.js.map +1 -1
  179. package/lib/components/LifeCycle/Task.d.ts +5 -3
  180. package/lib/components/LifeCycle/Task.d.ts.map +1 -1
  181. package/lib/components/LifeCycle/Task.js +17 -10
  182. package/lib/components/LifeCycle/Task.js.map +1 -1
  183. package/lib/components/LifeCycle/index.d.ts +1 -2
  184. package/lib/components/LifeCycle/index.d.ts.map +1 -1
  185. package/lib/components/LifeCycle/index.js.map +1 -1
  186. package/lib/components/ObjectPreview/ObjectPreview.d.ts +16 -0
  187. package/lib/components/ObjectPreview/ObjectPreview.d.ts.map +1 -0
  188. package/lib/components/ObjectPreview/ObjectPreview.js +25 -0
  189. package/lib/components/ObjectPreview/ObjectPreview.js.map +1 -0
  190. package/lib/components/ObjectPreview/index.d.ts +3 -0
  191. package/lib/components/ObjectPreview/index.d.ts.map +1 -0
  192. package/lib/components/ObjectPreview/index.js +3 -0
  193. package/lib/components/ObjectPreview/index.js.map +1 -0
  194. package/lib/components/ObjectSelect/ObjectPicker.d.ts +15 -0
  195. package/lib/components/ObjectSelect/ObjectPicker.d.ts.map +1 -0
  196. package/lib/components/ObjectSelect/ObjectPicker.js +40 -0
  197. package/lib/components/ObjectSelect/ObjectPicker.js.map +1 -0
  198. package/lib/components/ObjectSelect/ObjectSelect.d.ts +32 -0
  199. package/lib/components/ObjectSelect/ObjectSelect.d.ts.map +1 -0
  200. package/lib/components/ObjectSelect/ObjectSelect.js +41 -0
  201. package/lib/components/ObjectSelect/ObjectSelect.js.map +1 -0
  202. package/lib/components/ObjectSelect/ObjectSummary.d.ts +24 -0
  203. package/lib/components/ObjectSelect/ObjectSummary.d.ts.map +1 -0
  204. package/lib/components/ObjectSelect/ObjectSummary.js +45 -0
  205. package/lib/components/ObjectSelect/ObjectSummary.js.map +1 -0
  206. package/lib/components/ObjectSelect/index.d.ts +3 -0
  207. package/lib/components/ObjectSelect/index.d.ts.map +1 -0
  208. package/lib/components/ObjectSelect/index.js +2 -0
  209. package/lib/components/ObjectSelect/index.js.map +1 -0
  210. package/lib/components/ObjectSelect/useCreateModal.d.ts +34 -0
  211. package/lib/components/ObjectSelect/useCreateModal.d.ts.map +1 -0
  212. package/lib/components/ObjectSelect/useCreateModal.js +61 -0
  213. package/lib/components/ObjectSelect/useCreateModal.js.map +1 -0
  214. package/lib/components/PageTemplates/GalleryPage.js +4 -4
  215. package/lib/components/PageTemplates/GalleryPage.js.map +1 -1
  216. package/lib/components/PageTemplates/PageTemplates.d.ts +3 -3
  217. package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
  218. package/lib/components/PageTemplates/PageTemplates.js +45 -37
  219. package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
  220. package/lib/components/SummaryCard/SummaryCard.d.ts +2 -3
  221. package/lib/components/SummaryCard/SummaryCard.d.ts.map +1 -1
  222. package/lib/components/SummaryCard/SummaryCard.js +3 -4
  223. package/lib/components/SummaryCard/SummaryCard.js.map +1 -1
  224. package/lib/components/Workbench/ConfigurationPanel.d.ts.map +1 -1
  225. package/lib/components/Workbench/ConfigurationPanel.js +4 -15
  226. package/lib/components/Workbench/ConfigurationPanel.js.map +1 -1
  227. package/lib/components/Workbench/Toolbar.d.ts +1 -5
  228. package/lib/components/Workbench/Toolbar.d.ts.map +1 -1
  229. package/lib/components/Workbench/Toolbar.js +8 -8
  230. package/lib/components/Workbench/Toolbar.js.map +1 -1
  231. package/lib/components/Workbench/UtilityPanel.js +1 -1
  232. package/lib/components/Workbench/UtilityPanel.js.map +1 -1
  233. package/lib/components/Workbench/Workbench.d.ts.map +1 -1
  234. package/lib/components/Workbench/Workbench.js +3 -4
  235. package/lib/components/Workbench/Workbench.js.map +1 -1
  236. package/lib/components/Workbench/Workbench.styles.d.ts +1 -1
  237. package/lib/components/Workbench/Workbench.styles.d.ts.map +1 -1
  238. package/lib/components/Workbench/Workbench.styles.js +15 -16
  239. package/lib/components/Workbench/Workbench.styles.js.map +1 -1
  240. package/lib/components/Workbench/Workbench.types.d.ts +2 -4
  241. package/lib/components/Workbench/Workbench.types.d.ts.map +1 -1
  242. package/lib/components/Workbench/Workbench.types.js.map +1 -1
  243. package/lib/index.d.ts +6 -1
  244. package/lib/index.d.ts.map +1 -1
  245. package/lib/index.js +6 -1
  246. package/lib/index.js.map +1 -1
  247. package/lib/utils/index.d.ts +2 -0
  248. package/lib/utils/index.d.ts.map +1 -0
  249. package/lib/utils/index.js +2 -0
  250. package/lib/utils/index.js.map +1 -0
  251. package/lib/utils/utils.d.ts +14 -0
  252. package/lib/utils/utils.d.ts.map +1 -0
  253. package/lib/utils/utils.js +13 -0
  254. package/lib/utils/utils.js.map +1 -0
  255. package/package.json +23 -14
  256. package/lib/components/FlowModeller/Renderer/Connectors.d.ts +0 -13
  257. package/lib/components/FlowModeller/Renderer/Connectors.d.ts.map +0 -1
  258. package/lib/components/FlowModeller/Renderer/Connectors.js +0 -47
  259. package/lib/components/FlowModeller/Renderer/Connectors.js.map +0 -1
  260. package/lib/components/FlowModeller/Renderer/Nodes.d.ts +0 -9
  261. package/lib/components/FlowModeller/Renderer/Nodes.d.ts.map +0 -1
  262. package/lib/components/FlowModeller/Renderer/Nodes.js +0 -25
  263. package/lib/components/FlowModeller/Renderer/Nodes.js.map +0 -1
  264. package/lib/components/FlowModeller/Utils/AddNodeUtils.d.ts +0 -16
  265. package/lib/components/FlowModeller/Utils/AddNodeUtils.d.ts.map +0 -1
  266. package/lib/components/FlowModeller/Utils/AddNodeUtils.js.map +0 -1
  267. package/lib/components/Visual/Visual.d.ts +0 -17
  268. package/lib/components/Visual/Visual.d.ts.map +0 -1
  269. package/lib/components/Visual/Visual.js +0 -28
  270. package/lib/components/Visual/Visual.js.map +0 -1
  271. package/lib/components/Visual/index.d.ts +0 -3
  272. package/lib/components/Visual/index.d.ts.map +0 -1
  273. package/lib/components/Visual/index.js +0 -3
  274. package/lib/components/Visual/index.js.map +0 -1
@@ -1,15 +1,21 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useReducer, useCallback } from 'react';
3
- import styled, { css } from 'styled-components';
4
- import { createUID, useElement, useOuterEvent, Flex, Text, defaultThemeProp, useI18n } from '@pega/cosmos-react-core';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useReducer, useCallback, useRef, useMemo } from 'react';
3
+ import { createUID, useElement, useOuterEvent, useI18n } from '@pega/cosmos-react-core';
5
4
  import ItemLibrary from '../ItemLibrary/ItemLibrary';
5
+ import { DirectedGraph } from './Renderer/Utils/Graph';
6
6
  import FlowRenderer from './Renderer/Renderer';
7
- import { StartNode, EndNode, DefaultNode } from './Node/NodeTemplates';
8
7
  import { START_NODETYPE, STOP_NODETYPE } from './Node/Node.types';
9
- import PlaceHolderHelper, { isPlaceHolderConnector } from './Utils/AddNodeUtils';
8
+ import PlaceHolderHelper from './Utils/addNodeUtils';
10
9
  import { AddButton } from './AddNode';
10
+ import FlowModellerHelper from './helper';
11
+ import DeletePopover from './DeletePopover';
12
+ import Connector from './Connector';
13
+ import Node from './Node';
14
+ import FlowModellerContext from './FlowModellerContext';
11
15
  const initState = {
12
16
  showLib: false,
17
+ activeItem: null,
18
+ allowNonBranchNode: false,
13
19
  activeAddBtnMeta: {
14
20
  target: null,
15
21
  meta: {
@@ -18,8 +24,9 @@ const initState = {
18
24
  }
19
25
  },
20
26
  graphData: { nodes: [], connectors: [] },
21
- connectorComponent: () => _jsx(_Fragment, {}, void 0),
22
- nodeComponent: () => _jsx(_Fragment, {}, void 0)
27
+ highlightItems: undefined,
28
+ showDeletePopover: false,
29
+ deleteProps: undefined
23
30
  };
24
31
  const reducer = (state, action) => {
25
32
  switch (action.type) {
@@ -27,50 +34,109 @@ const reducer = (state, action) => {
27
34
  // minor optimization, not to update state.. if no change in the value
28
35
  return action.payload.show === state.showLib
29
36
  ? state
30
- : { ...state, showLib: action.payload.show };
37
+ : { ...state, showLib: action.payload.show, allowNonBranchNode: false };
38
+ case 'setActiveItem':
39
+ return {
40
+ ...state,
41
+ activeItem: action.payload.target
42
+ };
31
43
  case 'setActiveAddButton':
32
44
  state.activeAddBtnMeta = {
33
45
  ...action.payload
34
46
  };
35
47
  return {
36
48
  ...state,
37
- showLib: true
49
+ showLib: true,
50
+ allowNonBranchNode: action.payload.allowNonBranchNode
38
51
  };
39
52
  case 'setGraphData':
40
53
  return {
41
54
  ...state,
42
55
  graphData: action.payload.graphData,
43
- connectorComponent: action.payload.connectorComponent,
44
- nodeComponent: action.payload.nodeComponent
56
+ highlightItems: action.payload.highlightItems
57
+ };
58
+ case 'highlight':
59
+ // minor optimization to avoid unnecessary re-render
60
+ if (action.payload.hideDeletePopover === !state.showDeletePopover) {
61
+ return state;
62
+ }
63
+ return {
64
+ ...state,
65
+ highlightItems: action.payload.highlightItems,
66
+ showDeletePopover: action.payload.hideDeletePopover !== true && state.showDeletePopover
67
+ };
68
+ case 'showDeletePopover':
69
+ return {
70
+ ...state,
71
+ showDeletePopover: action.payload.showDeletePopover,
72
+ deleteProps: action.payload.deleteProps
45
73
  };
46
74
  default:
47
75
  return state;
48
76
  }
49
77
  };
50
- const StyledLabel = styled(Text)(({ theme }) => {
51
- return css `
52
- border-radius: ${theme.base['border-radius']};
53
- background: ${theme.base.colors.slate.dark};
54
- color: ${theme.base.colors.white};
55
- text-align: center;
56
- padding: calc(0.5 * ${theme.base.spacing});
57
- overflow: hidden;
58
- text-overflow: ellipsis;
59
- max-width: 32ch;
60
- white-space: nowrap;
61
- `;
62
- });
63
- StyledLabel.defaultProps = defaultThemeProp;
64
- const FlowModeller = ({ graphData, onNodeActionClick, onNodeClick, onNodeAdd, nodeLibrary, actions }) => {
78
+ const FlowModeller = ({ graphData, highlightData, onNodeActionClick, onNodeAdd, nodeLibrary, onNodeClick, onDelete, actions, readOnly }) => {
65
79
  const [state, dispatch] = useReducer(reducer, initState);
66
80
  const [popoverEl, setPopoverEl] = useElement(null);
81
+ const [deletePopoverEl, setDeletePopoverEl] = useElement(null);
82
+ const stateRef = useRef(initState);
83
+ // stateRef always refers to the same state obj
84
+ // "fixed" callbacks can refer to this object whenever
85
+ // it need the current value. Note: the callbacks will not
86
+ // be reactive - they will not re-run the instant state changes,
87
+ // but they *will* see the current value whenever they do run
88
+ stateRef.current = state;
67
89
  const t = useI18n();
68
90
  const onNodeCreate = (el, meta) => {
91
+ const graph = new DirectedGraph(graphData);
92
+ let isAllowNonBranchNode = false;
93
+ if (meta.refType === 'connector') {
94
+ if (!Array.isArray(meta.refId))
95
+ meta.refId = [meta.refId];
96
+ const connectorData = graph.getConnector(meta.refId[0]);
97
+ const toNode = graph.getNode(connectorData.toNodeId);
98
+ const inConnectors = graph.getInConnectors(toNode.id);
99
+ let hiddenConnectorsCount = 0;
100
+ inConnectors.forEach(connector => {
101
+ const node = graph.getNode(connector.fromNodeId);
102
+ if (node.type.minConnectors === 0)
103
+ hiddenConnectorsCount += 1;
104
+ });
105
+ const isPlaceholderConnector = meta.refId.length > 1;
106
+ /** if node is being added on a placeholder connector then reduce number of in connectors of destination node
107
+ * by total number of connectors converging/joining to form placeholder connector and add one to the in connector count
108
+ */
109
+ const inConnectorsCount = isPlaceholderConnector
110
+ ? inConnectors.length - meta.refId.length + 1
111
+ : inConnectors.length;
112
+ /** if node is being added on a placeholder connector then reduce number of hidden connectors of destination node
113
+ * by total number of connectors converging/joining to from placeholder connector and are originating from go to nodes
114
+ */
115
+ if (isPlaceholderConnector) {
116
+ meta.refId.forEach(connector => {
117
+ if (graph.getNode(graph.getConnector(connector).fromNodeId).type.minConnectors === 0)
118
+ hiddenConnectorsCount -= 1;
119
+ });
120
+ }
121
+ /** check destination/target node in connectors count is more than one
122
+ * check non-hidden/visible connectors among in connectors of destination/target node are more than 1
123
+ * check connectors converging/joining to form a placeholder connector are not equal to total number of in connectors
124
+ */
125
+ if (inConnectorsCount > 1 &&
126
+ inConnectorsCount - hiddenConnectorsCount > 1 &&
127
+ inConnectors.length !== meta.refId.length) {
128
+ isAllowNonBranchNode = true;
129
+ }
130
+ else {
131
+ isAllowNonBranchNode = false;
132
+ }
133
+ }
69
134
  dispatch({
70
135
  type: 'setActiveAddButton',
71
136
  payload: {
72
137
  target: el,
73
- meta
138
+ meta,
139
+ allowNonBranchNode: isAllowNonBranchNode
74
140
  }
75
141
  });
76
142
  };
@@ -82,13 +148,73 @@ const FlowModeller = ({ graphData, onNodeActionClick, onNodeClick, onNodeAdd, no
82
148
  }
83
149
  });
84
150
  };
151
+ const closeDeleteModel = () => {
152
+ // un-highlight the nodes and connectors
153
+ dispatch({
154
+ type: 'highlight',
155
+ payload: {
156
+ highlightItems: undefined,
157
+ hideDeletePopover: true
158
+ }
159
+ });
160
+ };
161
+ const onDeleteWrapper = (params, e) => {
162
+ const result = FlowModellerHelper.deleteNode(graphData, params.nodeId);
163
+ if (result) {
164
+ if (!result.updates && result.error) {
165
+ onDelete?.({ ...params, additionalData: result }, t('delete_referenced_step_error'), e);
166
+ }
167
+ else if (result.error) {
168
+ onDelete?.({ ...params, additionalData: result }, t('delete_step_error'), e);
169
+ }
170
+ onDelete?.({ ...params, additionalData: result }, '', e);
171
+ }
172
+ else {
173
+ dispatch({
174
+ type: 'showDeletePopover',
175
+ payload: {
176
+ showDeletePopover: true,
177
+ deleteProps: {
178
+ flowGraphData: graphData,
179
+ rendererGraphData: stateRef.current.graphData,
180
+ nodeId: params.nodeId,
181
+ target: {
182
+ getBoundingClientRect: () => document
183
+ .getElementById(`modeller-node-${stateRef.current.deleteProps?.nodeId}`)
184
+ ?.getBoundingClientRect()
185
+ },
186
+ onChange: highlights => {
187
+ dispatch({
188
+ type: 'highlight',
189
+ payload: {
190
+ highlightItems: highlights
191
+ }
192
+ });
193
+ },
194
+ onSubmit: outcome => {
195
+ // un-highlight the nodes and connectors
196
+ closeDeleteModel();
197
+ if (outcome.error) {
198
+ onDelete?.({ ...params, additionalData: outcome }, t('delete_step_error'), e);
199
+ }
200
+ else {
201
+ onDelete?.({ ...params, additionalData: outcome }, '', e);
202
+ }
203
+ },
204
+ onCancel: closeDeleteModel
205
+ }
206
+ }
207
+ });
208
+ }
209
+ };
85
210
  useEffect(() => {
211
+ const graph = new DirectedGraph(graphData);
86
212
  const onGetNewPHNode = metaData => {
87
213
  return {
88
214
  id: createUID(),
89
215
  children: (_jsx(AddButton, { addNodeHandler: (e) => {
90
216
  onNodeCreate(e.currentTarget, metaData);
91
- } }, void 0)),
217
+ } })),
92
218
  position: { x: 0, y: 0 },
93
219
  dimensions: { width: 1, height: 0 }
94
220
  };
@@ -98,33 +224,12 @@ const FlowModeller = ({ graphData, onNodeActionClick, onNodeClick, onNodeAdd, no
98
224
  id: createUID(),
99
225
  fromNodeId,
100
226
  toNodeId,
101
- points: []
102
- };
103
- };
104
- const Connector = props => {
105
- const { id, labelLayout } = props;
106
- const refId = isPlaceHolderConnector(props)
107
- ? props.realConnectors
108
- : id.toString();
109
- const metaData = {
110
- refType: 'connector',
111
- refId
227
+ points: [],
228
+ data: {
229
+ onNodeCreate,
230
+ type: 'default'
231
+ }
112
232
  };
113
- return (_jsxs(_Fragment, { children: [labelLayout?.value && (_jsx(Flex, { container: { justify: 'center' }, children: _jsx(StyledLabel, { children: labelLayout.value }, void 0) }, void 0)), _jsx(AddButton, { addNodeHandler: (e) => {
114
- onNodeCreate(e.currentTarget, metaData);
115
- } }, void 0)] }, void 0));
116
- };
117
- const Node = ({ id, type, label, description, additionalData }) => {
118
- if (!type) {
119
- return _jsx("div", {}, void 0);
120
- }
121
- if (type?.id === START_NODETYPE.id) {
122
- return _jsx(StartNode, { id: id, type: type, label: label.toUpperCase() }, void 0);
123
- }
124
- if (type?.id === STOP_NODETYPE.id) {
125
- return _jsx(EndNode, { id: id, type: type, label: label.toUpperCase() }, void 0);
126
- }
127
- return (_jsx(DefaultNode, { id: id, label: label, type: type, description: description, onActionClick: onNodeActionClick, onClick: onNodeClick, actions: actions, additionalData: additionalData }, void 0));
128
233
  };
129
234
  const flowNodes = graphData.nodes.map(node => {
130
235
  const flowNode = {
@@ -136,20 +241,31 @@ const FlowModeller = ({ graphData, onNodeActionClick, onNodeClick, onNodeAdd, no
136
241
  position: {
137
242
  x: 0,
138
243
  y: 0
244
+ },
245
+ data: {
246
+ isActive: state.activeItem?.id === node.id,
247
+ actions,
248
+ onDelete: onDeleteWrapper,
249
+ onActionClick: onNodeActionClick,
250
+ onClick: onNodeClick
139
251
  }
140
252
  };
141
253
  if (node.type.id === START_NODETYPE.id || node.type.id === STOP_NODETYPE.id) {
142
- flowNode.dimensions.width = 58;
143
- flowNode.dimensions.height = 58;
254
+ flowNode.dimensions.width = 59;
255
+ flowNode.dimensions.height = 59;
144
256
  }
145
257
  return flowNode;
146
258
  });
147
259
  const connectors = graphData.connectors.map(connector => {
260
+ const nodeData = graph.getNode(connector.fromNodeId);
261
+ const isBranchNode = nodeData.type.minConnectors === 0;
148
262
  return {
149
263
  ...connector,
150
264
  points: [],
151
265
  data: {
152
- label: connector.label
266
+ label: connector.label,
267
+ onNodeCreate,
268
+ type: !isBranchNode ? 'default' : 'hidden'
153
269
  }
154
270
  };
155
271
  });
@@ -158,9 +274,7 @@ const FlowModeller = ({ graphData, onNodeActionClick, onNodeClick, onNodeAdd, no
158
274
  dispatch({
159
275
  type: 'setGraphData',
160
276
  payload: {
161
- graphData: newGraphData,
162
- connectorComponent: Connector,
163
- nodeComponent: Node
277
+ graphData: newGraphData
164
278
  }
165
279
  });
166
280
  }, [graphData]);
@@ -178,14 +292,24 @@ const FlowModeller = ({ graphData, onNodeActionClick, onNodeClick, onNodeAdd, no
178
292
  }
179
293
  }, [closeMenu]);
180
294
  useOuterEvent('mousedown', [popoverEl], closeMenu);
295
+ useOuterEvent('mousedown', [deletePopoverEl], closeDeleteModel);
181
296
  useEffect(() => {
182
297
  document.addEventListener('keydown', onKeydown);
183
298
  return () => {
184
299
  document.removeEventListener('keydown', onKeydown);
185
300
  };
186
301
  }, []);
187
- const items = nodeLibrary !== undefined ? nodeLibrary : [];
188
- return (_jsxs("div", { children: [_jsx(FlowRenderer, { graphData: state.graphData, connector: state.connectorComponent, node: state.nodeComponent }, void 0), _jsx(ItemLibrary, { show: state.showLib, target: state.activeAddBtnMeta.target, placeholder: t('search_nodes'), items: items, onClick: onLibraryItemSelect, ref: setPopoverEl }, void 0)] }, void 0));
302
+ let items = nodeLibrary !== undefined ? nodeLibrary : [];
303
+ if (!state.allowNonBranchNode) {
304
+ items = items.filter(shapeTypes => {
305
+ if (shapeTypes.type) {
306
+ return shapeTypes.type.minConnectors !== 0;
307
+ }
308
+ return true;
309
+ });
310
+ }
311
+ const ctxValue = useMemo(() => ({ readOnly, highlights: highlightData ?? state.highlightItems }), [readOnly, state.highlightItems, highlightData]);
312
+ return (_jsxs("div", { children: [_jsx(FlowModellerContext.Provider, { value: ctxValue, children: _jsx(FlowRenderer, { graphData: state.graphData, connector: Connector, node: Node }) }), state.showDeletePopover && state.deleteProps && (_jsx(DeletePopover, { show: state.showDeletePopover, ref: setDeletePopoverEl, ...state.deleteProps })), _jsx(ItemLibrary, { show: state.showLib, target: state.activeAddBtnMeta.target, placeholder: t('search_nodes'), items: items, onClick: onLibraryItemSelect, ref: setPopoverEl, position: 'bottom' })] }));
189
313
  };
190
314
  export default FlowModeller;
191
315
  //# sourceMappingURL=FlowModeller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlowModeller.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/FlowModeller.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n PropsWithoutRef,\n useEffect,\n MouseEvent,\n useReducer,\n FC,\n Reducer,\n useCallback,\n ComponentType\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Action,\n createUID,\n useElement,\n useOuterEvent,\n Flex,\n Text,\n defaultThemeProp,\n useI18n\n} from '@pega/cosmos-react-core';\n\nimport ItemLibrary, { LibraryItem } from '../ItemLibrary/ItemLibrary';\n\nimport { GraphData, ConnectorProps } from './Renderer/Utils/Graph';\nimport {\n AddNodeHandlerParams,\n RendererConnectorProps,\n RendererNodeProps\n} from './Renderer/Renderer.types';\nimport FlowRenderer from './Renderer/Renderer';\nimport { StartNode, EndNode, DefaultNode } from './Node/NodeTemplates';\nimport {\n ActionParams,\n NodeProps,\n NodeLibraryItem,\n START_NODETYPE,\n STOP_NODETYPE,\n NodeType\n} from './Node/Node.types';\nimport PlaceHolderHelper, {\n isPlaceHolderConnector,\n PlaceHolderConnector\n} from './Utils/AddNodeUtils';\nimport { AddButton } from './AddNode';\n\nexport interface FlowModellerProps {\n graphData: GraphData<NodeProps, ConnectorProps>;\n /** Node actions */\n actions?: Action[];\n /** Callback to add node from connector */\n onNodeAdd: (nodeType: NodeType, params: AddNodeHandlerParams) => void;\n /** Callback for handling the click on the node */\n onNodeClick?: (nodeId: string) => void;\n /** Callback for actions on Node */\n onNodeActionClick?: (param: ActionParams, e: MouseEvent) => void;\n /** Types of nodes */\n nodeLibrary: NodeLibraryItem[];\n}\n\ntype ModellerState = {\n showLib: boolean;\n activeAddBtnMeta: {\n target: null; // we will maintain ref of an Element\n meta: AddNodeHandlerParams;\n };\n graphData: GraphData<RendererNodeProps, RendererConnectorProps>;\n connectorComponent: ComponentType<RendererConnectorProps>;\n nodeComponent: ComponentType<RendererNodeProps>;\n};\n\nconst initState: ModellerState = {\n showLib: false,\n activeAddBtnMeta: {\n target: null,\n meta: {\n refType: 'node',\n refId: ''\n }\n },\n graphData: { nodes: [], connectors: [] },\n connectorComponent: () => <></>,\n nodeComponent: () => <></>\n};\n\nconst reducer = (state: ModellerState, action: { type: string; payload: any }) => {\n switch (action.type) {\n case 'showLibrary':\n // minor optimization, not to update state.. if no change in the value\n return action.payload.show === state.showLib\n ? state\n : { ...state, showLib: action.payload.show };\n case 'setActiveAddButton':\n state.activeAddBtnMeta = {\n ...action.payload\n };\n return {\n ...state,\n showLib: true\n };\n case 'setGraphData':\n return {\n ...state,\n graphData: action.payload.graphData,\n connectorComponent: action.payload.connectorComponent,\n nodeComponent: action.payload.nodeComponent\n };\n default:\n return state;\n }\n};\n\nconst StyledLabel = styled(Text)(({ theme }) => {\n return css`\n border-radius: ${theme.base['border-radius']};\n background: ${theme.base.colors.slate.dark};\n color: ${theme.base.colors.white};\n text-align: center;\n padding: calc(0.5 * ${theme.base.spacing});\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 32ch;\n white-space: nowrap;\n `;\n});\n\nStyledLabel.defaultProps = defaultThemeProp;\n\nconst FlowModeller = ({\n graphData,\n onNodeActionClick,\n onNodeClick,\n onNodeAdd,\n nodeLibrary,\n actions\n}: PropsWithoutRef<FlowModellerProps>) => {\n const [state, dispatch] = useReducer<Reducer<ModellerState, any>>(reducer, initState);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n\n const t = useI18n();\n\n const onNodeCreate = (el: HTMLElement | SVGForeignObjectElement, meta: AddNodeHandlerParams) => {\n dispatch({\n type: 'setActiveAddButton',\n payload: {\n target: el,\n meta\n }\n });\n };\n\n const closeMenu = () => {\n dispatch({\n type: 'showLibrary',\n payload: {\n show: false\n }\n });\n };\n\n useEffect(() => {\n const onGetNewPHNode: (metaData: AddNodeHandlerParams) => RendererNodeProps = metaData => {\n return {\n id: createUID(),\n children: (\n <AddButton\n addNodeHandler={(e: MouseEvent<HTMLButtonElement>) => {\n onNodeCreate(e.currentTarget as HTMLElement, metaData);\n }}\n />\n ),\n position: { x: 0, y: 0 },\n dimensions: { width: 1, height: 0 }\n };\n };\n\n const onGetNewPHConnector: (\n fromNodeId: string,\n toNodeId: string,\n metaData: AddNodeHandlerParams\n ) => RendererConnectorProps = (fromNodeId, toNodeId) => {\n return {\n id: createUID(),\n fromNodeId,\n toNodeId,\n points: []\n };\n };\n\n const Connector: FC<RendererConnectorProps> = props => {\n const { id, labelLayout } = props;\n\n const refId = isPlaceHolderConnector(props)\n ? (props as PlaceHolderConnector).realConnectors\n : id.toString();\n\n const metaData: AddNodeHandlerParams = {\n refType: 'connector',\n refId\n };\n\n return (\n <>\n {labelLayout?.value && (\n <Flex container={{ justify: 'center' }}>\n <StyledLabel>{labelLayout.value}</StyledLabel>\n </Flex>\n )}\n <AddButton\n addNodeHandler={(e: MouseEvent<HTMLButtonElement>) => {\n onNodeCreate(e.currentTarget, metaData);\n }}\n />\n </>\n );\n };\n const Node: FC<NodeProps> = ({ id, type, label, description, additionalData }) => {\n if (!type) {\n return <div />;\n }\n if (type?.id === START_NODETYPE.id) {\n return <StartNode id={id} type={type} label={label.toUpperCase()} />;\n }\n if (type?.id === STOP_NODETYPE.id) {\n return <EndNode id={id} type={type} label={label.toUpperCase()} />;\n }\n return (\n <DefaultNode\n id={id}\n label={label}\n type={type}\n description={description}\n onActionClick={onNodeActionClick}\n onClick={onNodeClick}\n actions={actions}\n additionalData={additionalData}\n />\n );\n };\n\n const flowNodes: RendererNodeProps[] = graphData.nodes.map(node => {\n const flowNode: RendererNodeProps = {\n ...node,\n dimensions: {\n width: 280,\n height: 120\n },\n position: {\n x: 0,\n y: 0\n }\n };\n\n if (node.type.id === START_NODETYPE.id || node.type.id === STOP_NODETYPE.id) {\n flowNode.dimensions.width = 58;\n flowNode.dimensions.height = 58;\n }\n return flowNode;\n });\n\n const connectors: RendererConnectorProps[] = graphData.connectors.map(connector => {\n return {\n ...connector,\n points: [],\n data: {\n label: connector.label\n }\n };\n });\n\n // inject the placeholderAddNodes dynamically\n const newGraphData: GraphData<RendererNodeProps, RendererConnectorProps> =\n PlaceHolderHelper.injectPlaceholderNodes(\n { nodes: flowNodes, connectors },\n onGetNewPHNode,\n onGetNewPHConnector\n );\n\n dispatch({\n type: 'setGraphData',\n payload: {\n graphData: newGraphData,\n connectorComponent: Connector,\n nodeComponent: Node\n }\n });\n }, [graphData]);\n\n /**\n * Library popover functionality\n */\n const onLibraryItemSelect = useCallback(\n (libItem: LibraryItem) => {\n const metaData = state.activeAddBtnMeta.meta;\n closeMenu();\n onNodeAdd((libItem as NodeLibraryItem).type, metaData);\n },\n [state.activeAddBtnMeta]\n );\n\n const onKeydown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n closeMenu();\n }\n },\n [closeMenu]\n );\n\n useOuterEvent('mousedown', [popoverEl], closeMenu);\n\n useEffect(() => {\n document.addEventListener('keydown', onKeydown);\n return () => {\n document.removeEventListener('keydown', onKeydown);\n };\n }, []);\n\n const items: NodeLibraryItem[] = nodeLibrary !== undefined ? nodeLibrary : [];\n\n return (\n <div>\n <FlowRenderer\n graphData={state.graphData}\n connector={state.connectorComponent}\n node={state.nodeComponent}\n />\n <ItemLibrary\n show={state.showLib}\n target={state.activeAddBtnMeta.target}\n placeholder={t('search_nodes')}\n items={items}\n onClick={onLibraryItemSelect}\n ref={setPopoverEl}\n />\n </div>\n );\n};\n\nexport default FlowModeller;\n"]}
1
+ {"version":3,"file":"FlowModeller.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/FlowModeller.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n PropsWithoutRef,\n useEffect,\n MouseEvent,\n useReducer,\n Reducer,\n useCallback,\n useRef,\n useMemo\n} from 'react';\n\nimport {\n PopoverProps,\n createUID,\n useElement,\n useOuterEvent,\n useI18n,\n OmitStrict\n} from '@pega/cosmos-react-core';\n\nimport ItemLibrary, { LibraryItem } from '../ItemLibrary/ItemLibrary';\n\nimport { GraphData, DirectedGraph } from './Renderer/Utils/Graph';\nimport { AddNodeHandlerParams } from './Renderer/Renderer.types';\nimport FlowRenderer from './Renderer/Renderer';\nimport {\n ActionParams,\n NodeLibraryItem,\n START_NODETYPE,\n STOP_NODETYPE,\n NodeComponentData\n} from './Node/Node.types';\nimport PlaceHolderHelper from './Utils/addNodeUtils';\nimport { AddButton } from './AddNode';\nimport FlowModellerHelper from './helper';\nimport DeletePopover, { DeleteNodePopoverProps } from './DeletePopover';\nimport Connector from './Connector';\nimport Node from './Node';\nimport { DeleteNodeModalOption, DeleteNodeOutcome } from './Utils/deleteNodeUtils';\nimport FlowModellerContext from './FlowModellerContext';\nimport { FlowModellerProps } from './FlowModeller.types';\nimport { PlottedGraphNode, PlottedGraphConnector } from './Renderer/Utils/GraphLayout';\n\ntype ModellerState = {\n showLib: boolean;\n allowNonBranchNode: boolean;\n activeItem: Element | null;\n activeAddBtnMeta: {\n target: null; // we will maintain ref of an Element\n meta: AddNodeHandlerParams;\n };\n graphData: GraphData<PlottedGraphNode, PlottedGraphConnector>;\n highlightItems?: DeleteNodeModalOption['pathItems'];\n showDeletePopover: boolean;\n deleteProps:\n | OmitStrict<DeleteNodePopoverProps & { target: PopoverProps['target'] }, 'show'>\n | undefined;\n};\n\nconst initState: ModellerState = {\n showLib: false,\n activeItem: null,\n allowNonBranchNode: false,\n activeAddBtnMeta: {\n target: null,\n meta: {\n refType: 'node',\n refId: ''\n }\n },\n graphData: { nodes: [], connectors: [] },\n highlightItems: undefined,\n showDeletePopover: false,\n deleteProps: undefined\n};\n\nconst reducer = (state: ModellerState, action: { type: string; payload: any }) => {\n switch (action.type) {\n case 'showLibrary':\n // minor optimization, not to update state.. if no change in the value\n return action.payload.show === state.showLib\n ? state\n : { ...state, showLib: action.payload.show, allowNonBranchNode: false };\n case 'setActiveItem':\n return {\n ...state,\n activeItem: action.payload.target\n };\n case 'setActiveAddButton':\n state.activeAddBtnMeta = {\n ...action.payload\n };\n\n return {\n ...state,\n showLib: true,\n allowNonBranchNode: action.payload.allowNonBranchNode\n };\n case 'setGraphData':\n return {\n ...state,\n graphData: action.payload.graphData,\n highlightItems: action.payload.highlightItems\n };\n case 'highlight':\n // minor optimization to avoid unnecessary re-render\n if (action.payload.hideDeletePopover === !state.showDeletePopover) {\n return state;\n }\n\n return {\n ...state,\n highlightItems: action.payload.highlightItems,\n showDeletePopover: action.payload.hideDeletePopover !== true && state.showDeletePopover\n };\n case 'showDeletePopover':\n return {\n ...state,\n showDeletePopover: action.payload.showDeletePopover,\n deleteProps: action.payload.deleteProps\n };\n default:\n return state;\n }\n};\n\nconst FlowModeller = ({\n graphData,\n highlightData,\n onNodeActionClick,\n onNodeAdd,\n nodeLibrary,\n onNodeClick,\n onDelete,\n actions,\n readOnly\n}: PropsWithoutRef<FlowModellerProps>) => {\n const [state, dispatch] = useReducer<Reducer<ModellerState, any>>(reducer, initState);\n const [popoverEl, setPopoverEl] = useElement<HTMLElement>(null);\n const [deletePopoverEl, setDeletePopoverEl] = useElement<HTMLElement>(null);\n const stateRef = useRef<ModellerState>(initState);\n\n // stateRef always refers to the same state obj\n // \"fixed\" callbacks can refer to this object whenever\n // it need the current value. Note: the callbacks will not\n // be reactive - they will not re-run the instant state changes,\n // but they *will* see the current value whenever they do run\n stateRef.current = state;\n const t = useI18n();\n\n const onNodeCreate = (el: HTMLElement | SVGForeignObjectElement, meta: AddNodeHandlerParams) => {\n const graph = new DirectedGraph(graphData);\n let isAllowNonBranchNode = false;\n if (meta.refType === 'connector') {\n if (!Array.isArray(meta.refId)) meta.refId = [meta.refId];\n const connectorData = graph.getConnector(meta.refId[0]);\n const toNode = graph.getNode(connectorData.toNodeId);\n const inConnectors = graph.getInConnectors(toNode.id);\n let hiddenConnectorsCount = 0;\n inConnectors.forEach(connector => {\n const node = graph.getNode(connector.fromNodeId);\n if (node.type.minConnectors === 0) hiddenConnectorsCount += 1;\n });\n const isPlaceholderConnector = meta.refId.length > 1;\n\n /** if node is being added on a placeholder connector then reduce number of in connectors of destination node\n * by total number of connectors converging/joining to form placeholder connector and add one to the in connector count\n */\n const inConnectorsCount = isPlaceholderConnector\n ? inConnectors.length - meta.refId.length + 1\n : inConnectors.length;\n\n /** if node is being added on a placeholder connector then reduce number of hidden connectors of destination node\n * by total number of connectors converging/joining to from placeholder connector and are originating from go to nodes\n */\n if (isPlaceholderConnector) {\n meta.refId.forEach(connector => {\n if (graph.getNode(graph.getConnector(connector).fromNodeId).type.minConnectors === 0)\n hiddenConnectorsCount -= 1;\n });\n }\n\n /** check destination/target node in connectors count is more than one\n * check non-hidden/visible connectors among in connectors of destination/target node are more than 1\n * check connectors converging/joining to form a placeholder connector are not equal to total number of in connectors\n */\n if (\n inConnectorsCount > 1 &&\n inConnectorsCount - hiddenConnectorsCount > 1 &&\n inConnectors.length !== meta.refId.length\n ) {\n isAllowNonBranchNode = true;\n } else {\n isAllowNonBranchNode = false;\n }\n }\n dispatch({\n type: 'setActiveAddButton',\n payload: {\n target: el,\n meta,\n allowNonBranchNode: isAllowNonBranchNode\n }\n });\n };\n\n const closeMenu = () => {\n dispatch({\n type: 'showLibrary',\n payload: {\n show: false\n }\n });\n };\n\n const closeDeleteModel = () => {\n // un-highlight the nodes and connectors\n dispatch({\n type: 'highlight',\n payload: {\n highlightItems: undefined,\n hideDeletePopover: true\n }\n });\n };\n\n const onDeleteWrapper = (params: ActionParams, e: MouseEvent) => {\n const result: DeleteNodeOutcome | false = FlowModellerHelper.deleteNode(\n graphData,\n params.nodeId\n );\n if (result) {\n if (!result.updates && result.error) {\n onDelete?.({ ...params, additionalData: result }, t('delete_referenced_step_error'), e);\n } else if (result.error) {\n onDelete?.({ ...params, additionalData: result }, t('delete_step_error'), e);\n }\n onDelete?.({ ...params, additionalData: result }, '', e);\n } else {\n dispatch({\n type: 'showDeletePopover',\n payload: {\n showDeletePopover: true,\n deleteProps: {\n flowGraphData: graphData,\n rendererGraphData: stateRef.current.graphData,\n nodeId: params.nodeId,\n target: {\n getBoundingClientRect: () =>\n document\n .getElementById(`modeller-node-${stateRef.current.deleteProps?.nodeId}`)\n ?.getBoundingClientRect()\n } as PopoverProps['target'],\n onChange: highlights => {\n dispatch({\n type: 'highlight',\n payload: {\n highlightItems: highlights\n }\n });\n },\n onSubmit: outcome => {\n // un-highlight the nodes and connectors\n closeDeleteModel();\n if (outcome.error) {\n onDelete?.({ ...params, additionalData: outcome }, t('delete_step_error'), e);\n } else {\n onDelete?.({ ...params, additionalData: outcome }, '', e);\n }\n },\n onCancel: closeDeleteModel\n } as ModellerState['deleteProps']\n }\n });\n }\n };\n\n useEffect(() => {\n const graph = new DirectedGraph(graphData);\n const onGetNewPHNode: (metaData: AddNodeHandlerParams) => PlottedGraphNode = metaData => {\n return {\n id: createUID(),\n children: (\n <AddButton\n addNodeHandler={(e: MouseEvent<HTMLButtonElement>) => {\n onNodeCreate(e.currentTarget as HTMLElement, metaData);\n }}\n />\n ),\n position: { x: 0, y: 0 },\n dimensions: { width: 1, height: 0 }\n };\n };\n\n const onGetNewPHConnector: (\n fromNodeId: string,\n toNodeId: string,\n metaData: AddNodeHandlerParams\n ) => PlottedGraphConnector = (fromNodeId, toNodeId) => {\n return {\n id: createUID(),\n fromNodeId,\n toNodeId,\n points: [],\n data: {\n onNodeCreate,\n type: 'default'\n }\n };\n };\n\n const flowNodes: PlottedGraphNode[] = graphData.nodes.map(node => {\n const flowNode: PlottedGraphNode = {\n ...node,\n dimensions: {\n width: 280,\n height: 120\n },\n position: {\n x: 0,\n y: 0\n },\n data: {\n isActive: state.activeItem?.id === node.id,\n actions,\n onDelete: onDeleteWrapper,\n onActionClick: onNodeActionClick,\n onClick: onNodeClick\n } as NodeComponentData\n };\n\n if (node.type.id === START_NODETYPE.id || node.type.id === STOP_NODETYPE.id) {\n flowNode.dimensions.width = 59;\n flowNode.dimensions.height = 59;\n }\n return flowNode;\n });\n\n const connectors: PlottedGraphConnector[] = graphData.connectors.map(connector => {\n const nodeData = graph.getNode(connector.fromNodeId);\n const isBranchNode = nodeData.type.minConnectors === 0;\n return {\n ...connector,\n points: [],\n data: {\n label: connector.label,\n onNodeCreate,\n type: !isBranchNode ? 'default' : 'hidden'\n }\n };\n });\n\n // inject the placeholderAddNodes dynamically\n const newGraphData: GraphData<PlottedGraphNode, PlottedGraphConnector> =\n PlaceHolderHelper.injectPlaceholderNodes(\n { nodes: flowNodes, connectors },\n onGetNewPHNode,\n onGetNewPHConnector\n );\n\n dispatch({\n type: 'setGraphData',\n payload: {\n graphData: newGraphData\n }\n });\n }, [graphData]);\n\n /**\n * Library popover functionality\n */\n const onLibraryItemSelect = useCallback(\n (libItem: LibraryItem) => {\n const metaData = state.activeAddBtnMeta.meta;\n closeMenu();\n onNodeAdd((libItem as NodeLibraryItem).type, metaData);\n },\n [state.activeAddBtnMeta]\n );\n\n const onKeydown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n closeMenu();\n }\n },\n [closeMenu]\n );\n\n useOuterEvent('mousedown', [popoverEl], closeMenu);\n useOuterEvent('mousedown', [deletePopoverEl], closeDeleteModel);\n\n useEffect(() => {\n document.addEventListener('keydown', onKeydown);\n\n return () => {\n document.removeEventListener('keydown', onKeydown);\n };\n }, []);\n\n let items: NodeLibraryItem[] = nodeLibrary !== undefined ? nodeLibrary : [];\n\n if (!state.allowNonBranchNode) {\n items = items.filter(shapeTypes => {\n if (shapeTypes.type) {\n return shapeTypes.type.minConnectors !== 0;\n }\n return true;\n });\n }\n const ctxValue = useMemo(\n () => ({ readOnly, highlights: highlightData ?? state.highlightItems }),\n [readOnly, state.highlightItems, highlightData]\n );\n\n return (\n <div>\n <FlowModellerContext.Provider value={ctxValue}>\n <FlowRenderer graphData={state.graphData} connector={Connector} node={Node} />\n </FlowModellerContext.Provider>\n {state.showDeletePopover && state.deleteProps && (\n <DeletePopover\n show={state.showDeletePopover}\n ref={setDeletePopoverEl}\n {...state.deleteProps}\n />\n )}\n <ItemLibrary\n show={state.showLib}\n target={state.activeAddBtnMeta.target}\n placeholder={t('search_nodes')}\n items={items}\n onClick={onLibraryItemSelect}\n ref={setPopoverEl}\n position='bottom'\n />\n </div>\n );\n};\n\nexport default FlowModeller;\n"]}
@@ -0,0 +1,25 @@
1
+ import { MouseEvent } from 'react';
2
+ import { Action } from '@pega/cosmos-react-core';
3
+ import { GraphData, ConnectorProps } from './Renderer/Utils/Graph';
4
+ import { AddNodeHandlerParams, RendererProps } from './Renderer/Renderer.types';
5
+ import { ActionParams, NodeProps, NodeLibraryItem, NodeType } from './Node/Node.types';
6
+ export interface FlowModellerProps {
7
+ graphData: GraphData<NodeProps, ConnectorProps>;
8
+ /** Node actions */
9
+ actions?: Action[];
10
+ /** Callback to add node from connector */
11
+ onNodeAdd: (nodeType: NodeType, params: AddNodeHandlerParams) => void;
12
+ /** Callback for handling the click on the node */
13
+ onNodeClick?: (nodeId: string) => void;
14
+ /** Callback for actions on Node */
15
+ onNodeActionClick?: (param: ActionParams, e: MouseEvent) => void;
16
+ /** Callback for node deletion */
17
+ onDelete?: (param: ActionParams, error: string, e: MouseEvent) => void;
18
+ /** Types of nodes */
19
+ nodeLibrary: NodeLibraryItem[];
20
+ /** Highlights */
21
+ highlightData?: RendererProps['highlights'];
22
+ /** To make FlowModeller readOnly state */
23
+ readOnly?: boolean;
24
+ }
25
+ //# sourceMappingURL=FlowModeller.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowModeller.types.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/FlowModeller.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0CAA0C;IAC1C,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtE,kDAAkD;IAClD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACjE,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACvE,qBAAqB;IACrB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,iBAAiB;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FlowModeller.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowModeller.types.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/FlowModeller.types.ts"],"names":[],"mappings":"","sourcesContent":["import { MouseEvent } from 'react';\n\nimport { Action } from '@pega/cosmos-react-core';\n\nimport { GraphData, ConnectorProps } from './Renderer/Utils/Graph';\nimport { AddNodeHandlerParams, RendererProps } from './Renderer/Renderer.types';\nimport { ActionParams, NodeProps, NodeLibraryItem, NodeType } from './Node/Node.types';\n\nexport interface FlowModellerProps {\n graphData: GraphData<NodeProps, ConnectorProps>;\n /** Node actions */\n actions?: Action[];\n /** Callback to add node from connector */\n onNodeAdd: (nodeType: NodeType, params: AddNodeHandlerParams) => void;\n /** Callback for handling the click on the node */\n onNodeClick?: (nodeId: string) => void;\n /** Callback for actions on Node */\n onNodeActionClick?: (param: ActionParams, e: MouseEvent) => void;\n /** Callback for node deletion */\n onDelete?: (param: ActionParams, error: string, e: MouseEvent) => void;\n /** Types of nodes */\n nodeLibrary: NodeLibraryItem[];\n /** Highlights */\n highlightData?: RendererProps['highlights'];\n /** To make FlowModeller readOnly state */\n readOnly?: boolean;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import { FlowModellerProps } from './FlowModeller.types';
3
+ import { RendererProps } from './Renderer/Renderer.types';
4
+ declare const FlowModellerContext: import("react").Context<Pick<FlowModellerProps, "readOnly"> & Partial<Pick<RendererProps, "highlights">>>;
5
+ export default FlowModellerContext;
6
+ //# sourceMappingURL=FlowModellerContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowModellerContext.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/FlowModellerContext.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,QAAA,MAAM,mBAAmB,2GAKvB,CAAC;AAEH,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { createContext } from 'react';
2
+ const FlowModellerContext = createContext({
3
+ readOnly: false,
4
+ highlights: { nodes: {}, connectors: {} }
5
+ });
6
+ export default FlowModellerContext;
7
+ //# sourceMappingURL=FlowModellerContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowModellerContext.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/FlowModellerContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,MAAM,mBAAmB,GAAG,aAAa,CAEvC;IACA,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;CAC1C,CAAC,CAAC;AAEH,eAAe,mBAAmB,CAAC","sourcesContent":["import { createContext } from 'react';\n\nimport { FlowModellerProps } from './FlowModeller.types';\nimport { RendererProps } from './Renderer/Renderer.types';\n\nconst FlowModellerContext = createContext<\n Pick<FlowModellerProps, 'readOnly'> & Partial<Pick<RendererProps, 'highlights'>>\n>({\n readOnly: false,\n highlights: { nodes: {}, connectors: {} }\n});\n\nexport default FlowModellerContext;\n"]}
@@ -1,12 +1,10 @@
1
- import { Ref, MouseEvent } from 'react';
1
+ import { MouseEvent, KeyboardEvent } from 'react';
2
2
  import { Action, OmitStrict } from '@pega/cosmos-react-core';
3
3
  import { Node } from '../Renderer/Utils/Graph';
4
4
  import { ItemVisual, LibraryItem } from '../../ItemLibrary/ItemLibrary';
5
5
  export interface NodeType extends ItemVisual {
6
6
  id: string;
7
7
  name: string;
8
- color: string;
9
- icon: string;
10
8
  minConnectors: number;
11
9
  defaults: {
12
10
  node: OmitStrict<NodeProps, 'type' | 'id'>;
@@ -15,6 +13,12 @@ export interface NodeType extends ItemVisual {
15
13
  }[];
16
14
  };
17
15
  }
16
+ export interface ReferenceProps {
17
+ /** id of the reference node */
18
+ id: string;
19
+ /** label of the reference node */
20
+ label: string;
21
+ }
18
22
  export interface NodeProps extends Node {
19
23
  /** Unique id for Node */
20
24
  id: string;
@@ -22,19 +26,28 @@ export interface NodeProps extends Node {
22
26
  label: string;
23
27
  /** Description for Node */
24
28
  description?: string;
29
+ /** Referenced Node id */
30
+ reference?: NodeProps['id'];
25
31
  /** Additional data for Node */
26
32
  additionalData?: AdditionalDataItemProps[];
27
33
  type: NodeType;
34
+ error?: string;
28
35
  }
29
- export interface NodeComponentProps extends NodeProps {
36
+ export interface ModellerNodeComponentProps<NodeComponentData> extends NodeProps {
37
+ data: NodeComponentData;
38
+ }
39
+ export interface NodeComponentData {
30
40
  /** Callback for the node actions click */
31
- onActionClick?: (params: ActionParams, e: MouseEvent) => void;
41
+ onActionClick?: (params: ActionParams, e: MouseEvent | KeyboardEvent) => void;
32
42
  /** Callback for the node click */
33
- onClick?: (nodeId: NodeProps['id']) => void;
43
+ onClick?: (nodeId: NodeProps['id'], e: MouseEvent | KeyboardEvent) => void;
44
+ /** Callback for node deletion */
45
+ onDelete?: (params: ActionParams, e: MouseEvent | KeyboardEvent) => void;
34
46
  /** Actions for the node click */
35
47
  actions?: Action[];
36
- /** Ref of the node */
37
- ref?: Ref<HTMLElement>;
48
+ }
49
+ export interface NodeComponentProps extends NodeProps, NodeComponentData {
50
+ referencedNode?: NodeProps;
38
51
  }
39
52
  export interface AdditionalDataItemProps {
40
53
  id: string;
@@ -44,9 +57,9 @@ export interface AdditionalDataItemProps {
44
57
  export interface ActionParams {
45
58
  actionId: string;
46
59
  nodeId: NodeProps['id'];
60
+ additionalData?: unknown;
47
61
  }
48
62
  export interface NodeLibraryItem extends LibraryItem {
49
- id: string;
50
63
  type: NodeType;
51
64
  items?: NodeLibraryItem[];
52
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Node.types.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Node/Node.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,WAAW,QAAS,SAAQ,UAAU;IAE1C,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QAC3C,SAAS,EAAE;YACT,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;KACL,CAAC;CACH;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI;IACrC,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAE3C,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,0CAA0C;IAC1C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9D,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5C,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,QAY3B,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,QAY1B,CAAC"}
1
+ {"version":3,"file":"Node.types.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Node/Node.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,WAAW,QAAS,SAAQ,UAAU;IAE1C,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAEb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QAC3C,SAAS,EAAE;YACT,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;KACL,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI;IACrC,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,+BAA+B;IAC/B,cAAc,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAE3C,IAAI,EAAE,QAAQ,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B,CAAC,iBAAiB,CAAE,SAAQ,SAAS;IAC9E,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;IAC9E,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;IAC3E,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;IACzE,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,EAAE,iBAAiB;IACtE,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,QAY3B,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,QAY1B,CAAC"}
@@ -1,8 +1,7 @@
1
- import { themeDefinition } from '@pega/cosmos-react-core';
2
1
  export const START_NODETYPE = Object.freeze({
3
2
  id: 'start',
4
3
  name: 'start',
5
- color: themeDefinition.base.colors.green.medium.$value,
4
+ color: 'green',
6
5
  icon: 'circle',
7
6
  minConnectors: 1,
8
7
  defaults: {
@@ -15,7 +14,7 @@ export const START_NODETYPE = Object.freeze({
15
14
  export const STOP_NODETYPE = Object.freeze({
16
15
  id: 'stop',
17
16
  name: 'stop',
18
- color: themeDefinition.base.colors.red.light.$value,
17
+ color: 'red',
19
18
  icon: 'circle',
20
19
  minConnectors: 0,
21
20
  defaults: {
@@ -1 +1 @@
1
- {"version":3,"file":"Node.types.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Node/Node.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAgE9E,MAAM,CAAC,MAAM,cAAc,GAAa,MAAM,CAAC,MAAM,CAAC;IACpD,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;IACtD,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,KAAK,EAAE,OAAO;SACf;QACD,SAAS,EAAE,EAAE;KACd;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAa,MAAM,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;IACnD,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,SAAS,EAAE,EAAE;KACd;CACF,CAAC,CAAC","sourcesContent":["import { Ref, MouseEvent } from 'react';\n\nimport { Action, OmitStrict, themeDefinition } from '@pega/cosmos-react-core';\n\nimport { Node } from '../Renderer/Utils/Graph';\nimport { ItemVisual, LibraryItem } from '../../ItemLibrary/ItemLibrary';\n\nexport interface NodeType extends ItemVisual {\n /* node type id. this must be unique */\n id: string;\n /* human readable name of the type */\n name: string;\n /* color that represents the type */\n color: string;\n /* icon that represents the type */\n icon: string;\n /* min no. of connectors */\n minConnectors: number;\n defaults: {\n node: OmitStrict<NodeProps, 'type' | 'id'>;\n connector: {\n label: string;\n }[];\n };\n}\n\nexport interface NodeProps extends Node {\n /** Unique id for Node */\n id: string;\n /** Label for Node */\n label: string;\n /** Description for Node */\n description?: string;\n /** Additional data for Node */\n additionalData?: AdditionalDataItemProps[];\n /* type of the Node */\n type: NodeType;\n}\n\nexport interface NodeComponentProps extends NodeProps {\n /** Callback for the node actions click */\n onActionClick?: (params: ActionParams, e: MouseEvent) => void;\n /** Callback for the node click */\n onClick?: (nodeId: NodeProps['id']) => void;\n /** Actions for the node click */\n actions?: Action[];\n /** Ref of the node */\n ref?: Ref<HTMLElement>;\n}\n\nexport interface AdditionalDataItemProps {\n id: string;\n label: string;\n value: string;\n}\nexport interface ActionParams {\n actionId: string;\n nodeId: NodeProps['id'];\n}\n\nexport interface NodeLibraryItem extends LibraryItem {\n id: string;\n type: NodeType;\n items?: NodeLibraryItem[];\n}\n\nexport const START_NODETYPE: NodeType = Object.freeze({\n id: 'start',\n name: 'start',\n color: themeDefinition.base.colors.green.medium.$value,\n icon: 'circle',\n minConnectors: 1,\n defaults: {\n node: {\n label: 'Start'\n },\n connector: []\n }\n});\n\nexport const STOP_NODETYPE: NodeType = Object.freeze({\n id: 'stop',\n name: 'stop',\n color: themeDefinition.base.colors.red.light.$value,\n icon: 'circle',\n minConnectors: 0,\n defaults: {\n node: {\n label: 'Stop'\n },\n connector: []\n }\n});\n"]}
1
+ {"version":3,"file":"Node.types.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Node/Node.types.ts"],"names":[],"mappings":"AAiFA,MAAM,CAAC,MAAM,cAAc,GAAa,MAAM,CAAC,MAAM,CAAC;IACpD,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,KAAK,EAAE,OAAO;SACf;QACD,SAAS,EAAE,EAAE;KACd;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAa,MAAM,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM;SACd;QACD,SAAS,EAAE,EAAE;KACd;CACF,CAAC,CAAC","sourcesContent":["import { MouseEvent, KeyboardEvent } from 'react';\n\nimport { Action, OmitStrict } from '@pega/cosmos-react-core';\n\nimport { Node } from '../Renderer/Utils/Graph';\nimport { ItemVisual, LibraryItem } from '../../ItemLibrary/ItemLibrary';\n\nexport interface NodeType extends ItemVisual {\n /* node type id. this must be unique */\n id: string;\n /* human readable name of the type */\n name: string;\n /* min no. of connectors */\n minConnectors: number;\n defaults: {\n node: OmitStrict<NodeProps, 'type' | 'id'>;\n connector: {\n label: string;\n }[];\n };\n}\n\nexport interface ReferenceProps {\n /** id of the reference node */\n id: string;\n /** label of the reference node */\n label: string;\n}\n\nexport interface NodeProps extends Node {\n /** Unique id for Node */\n id: string;\n /** Label for Node */\n label: string;\n /** Description for Node */\n description?: string;\n /** Referenced Node id */\n reference?: NodeProps['id'];\n /** Additional data for Node */\n additionalData?: AdditionalDataItemProps[];\n /* type of the Node */\n type: NodeType;\n /* error message for node */\n error?: string;\n}\n\nexport interface ModellerNodeComponentProps<NodeComponentData> extends NodeProps {\n data: NodeComponentData;\n}\n\nexport interface NodeComponentData {\n /** Callback for the node actions click */\n onActionClick?: (params: ActionParams, e: MouseEvent | KeyboardEvent) => void;\n /** Callback for the node click */\n onClick?: (nodeId: NodeProps['id'], e: MouseEvent | KeyboardEvent) => void;\n /** Callback for node deletion */\n onDelete?: (params: ActionParams, e: MouseEvent | KeyboardEvent) => void;\n /** Actions for the node click */\n actions?: Action[];\n}\n\nexport interface NodeComponentProps extends NodeProps, NodeComponentData {\n referencedNode?: NodeProps;\n}\n\nexport interface AdditionalDataItemProps {\n id: string;\n label: string;\n value: string;\n}\nexport interface ActionParams {\n actionId: string;\n nodeId: NodeProps['id'];\n additionalData?: unknown;\n}\n\nexport interface NodeLibraryItem extends LibraryItem {\n type: NodeType;\n items?: NodeLibraryItem[];\n}\n\nexport const START_NODETYPE: NodeType = Object.freeze({\n id: 'start',\n name: 'start',\n color: 'green',\n icon: 'circle',\n minConnectors: 1,\n defaults: {\n node: {\n label: 'Start'\n },\n connector: []\n }\n});\n\nexport const STOP_NODETYPE: NodeType = Object.freeze({\n id: 'stop',\n name: 'stop',\n color: 'red',\n icon: 'circle',\n minConnectors: 0,\n defaults: {\n node: {\n label: 'Stop'\n },\n connector: []\n }\n});\n"]}