@kineticdata/react 6.0.5 → 6.1.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 (151) hide show
  1. package/README.md +110 -110
  2. package/assets/task/icons/defer.svg +12 -12
  3. package/assets/task/icons/drag-handle.svg +3 -3
  4. package/assets/task/icons/filter.svg +11 -11
  5. package/assets/task/icons/loop.svg +10 -10
  6. package/assets/task/icons/plus_small.svg +5 -5
  7. package/assets/task/icons/routine.svg +9 -9
  8. package/assets/task/icons/scale-minus.svg +11 -11
  9. package/assets/task/icons/scale-plus.svg +13 -13
  10. package/assets/task/icons/start.svg +11 -11
  11. package/assets/task/icons/stop.svg +8 -8
  12. package/lib/apis/core/activity.js +4 -4
  13. package/lib/apis/core/attributeDefinitions.js +64 -6
  14. package/lib/apis/core/attributeDefinitions.test.js +7 -4
  15. package/lib/apis/core/authentication.js +12 -1
  16. package/lib/apis/core/bridgeModels.test.js +46 -23
  17. package/lib/apis/core/bridgedresources.js +41 -41
  18. package/lib/apis/core/fileResources.js +2 -6
  19. package/lib/apis/core/forms.js +51 -2
  20. package/lib/apis/core/forms.test.js +32 -19
  21. package/lib/apis/core/integrations.js +61 -0
  22. package/lib/apis/core/kapps.js +49 -0
  23. package/lib/apis/core/kapps.test.js +16 -10
  24. package/lib/apis/core/notices.js +7 -0
  25. package/lib/apis/core/securityPolicyDefinitions.test.js +7 -4
  26. package/lib/apis/core/space.js +18 -0
  27. package/lib/apis/core/space.test.js +16 -10
  28. package/lib/apis/core/submissionActivities.js +38 -0
  29. package/lib/apis/core/submissions.js +114 -15
  30. package/lib/apis/core/translations.test.js +126 -55
  31. package/lib/apis/core/userPreferences.js +59 -0
  32. package/lib/apis/core/webApis.js +32 -2
  33. package/lib/apis/core/webhooks.test.js +7 -4
  34. package/lib/apis/http.js +30 -5
  35. package/lib/apis/index.js +48 -0
  36. package/lib/apis/integrator/index.js +337 -0
  37. package/lib/apis/system/index.js +64 -12
  38. package/lib/apis/task/index.js +9 -2
  39. package/lib/components/agent/filestore/FilestoreForm.js +1 -1
  40. package/lib/components/common/AttributeSelect.js +11 -2
  41. package/lib/components/common/BridgeSelect.js +3 -1
  42. package/lib/components/common/ConnectionSelect.js +73 -0
  43. package/lib/components/common/FormSelect.js +3 -1
  44. package/lib/components/common/NodeSelect.js +1 -0
  45. package/lib/components/common/StaticSelect.js +16 -6
  46. package/lib/components/common/TableInput.js +4 -1
  47. package/lib/components/common/TeamSelect.js +3 -1
  48. package/lib/components/common/ToastContainer.js +34 -10
  49. package/lib/components/common/Typeahead.js +62 -23
  50. package/lib/components/common/UserSelect.js +3 -1
  51. package/lib/components/common/authentication/AuthenticationContainer.js +121 -55
  52. package/lib/components/common/authentication/RequestInterceptor.js +1 -1
  53. package/lib/components/common/preferences/PreferencesProvider.js +461 -0
  54. package/lib/components/core/attribute_definition/AttributeDefinitionForm.js +10 -7
  55. package/lib/components/core/bridge_model/BridgeModelTable.js +19 -0
  56. package/lib/components/core/bridge_model_attribute/BridgeModelAttributeForm.js +6 -9
  57. package/lib/components/core/bridge_model_attribute/BridgeModelAttributeTable.js +0 -4
  58. package/lib/components/core/bridge_model_qualification/BridgeModelQualificationForm.js +7 -10
  59. package/lib/components/core/bridge_model_qualification/BridgeModelQualificationTable.js +2 -15
  60. package/lib/components/core/category/CategoryForm.js +4 -1
  61. package/lib/components/core/category/CategoryTable.js +2 -2
  62. package/lib/components/core/core_form/CoreForm.js +18 -10
  63. package/lib/components/core/field_definition/FieldDefinitionForm.js +3 -3
  64. package/lib/components/core/file_resource/FileResourceForm.js +2 -1
  65. package/lib/components/core/file_resource/FileResourceTable.js +14 -7
  66. package/lib/components/core/form/FormForm.js +42 -19
  67. package/lib/components/core/form/FormTable.js +13 -14
  68. package/lib/components/core/form_type/FormTypeForm.js +3 -0
  69. package/lib/components/core/i18n/Moment.js +1 -0
  70. package/lib/components/core/integration/IntegrationForm.js +232 -0
  71. package/lib/components/core/integration/IntegrationTable.js +142 -0
  72. package/lib/components/core/kapp/KappForm.js +18 -5
  73. package/lib/components/core/kapp/KappTable.js +3 -3
  74. package/lib/components/core/log/LogTable.js +1 -1
  75. package/lib/components/core/security_definition/SecurityDefinitionForm.js +48 -10
  76. package/lib/components/core/space/SpaceForm.js +17 -36
  77. package/lib/components/core/submission/DatastoreSubmissionTable.js +4 -4
  78. package/lib/components/core/submission/FormSubmissionTable.js +12 -7
  79. package/lib/components/core/submission/KappSubmissionTable.js +4 -4
  80. package/lib/components/core/submission/SubmissionActivityForm.js +79 -0
  81. package/lib/components/core/submission/SubmissionForm.js +15 -3
  82. package/lib/components/core/team/TeamTable.js +17 -7
  83. package/lib/components/core/translation/EntryTable.js +8 -7
  84. package/lib/components/core/user/UserForm.js +2 -0
  85. package/lib/components/core/user/UserTable.js +22 -22
  86. package/lib/components/core/webapi/WebApiForm.js +5 -2
  87. package/lib/components/core/webapi/WebApiTable.js +2 -2
  88. package/lib/components/core/webhook/WebhookForm.js +43 -33
  89. package/lib/components/core/webhook/WebhookTable.js +16 -16
  90. package/lib/components/core/webhook_job/WebhookJobTable.js +17 -6
  91. package/lib/components/form/Form.helpers.js +10 -4
  92. package/lib/components/form/Form.js +264 -171
  93. package/lib/components/form/Form.models.js +6 -1
  94. package/lib/components/form/FormState.js +9 -5
  95. package/lib/components/form/SimpleForm.js +2 -2
  96. package/lib/components/form/defaults/CodeField.js +44 -1
  97. package/lib/components/index.js +152 -3
  98. package/lib/components/integrator/connection/ConnectionForm.js +156 -0
  99. package/lib/components/integrator/connection/ConnectionTable.js +82 -0
  100. package/lib/components/integrator/connection/config_fields/http.js +570 -0
  101. package/lib/components/integrator/connection/config_fields/sql.js +123 -0
  102. package/lib/components/integrator/integrationTypes.js +120 -0
  103. package/lib/components/integrator/operation/OperationForm.js +148 -0
  104. package/lib/components/integrator/operation/OperationTable.js +62 -0
  105. package/lib/components/integrator/operation/config_fields/http.js +185 -0
  106. package/lib/components/integrator/operation/config_fields/sql.js +81 -0
  107. package/lib/components/system/SystemSecurityForm.js +1 -1
  108. package/lib/components/system/SystemTaskAdapterForm.js +9 -9
  109. package/lib/components/system/SystemUserForm.js +2 -0
  110. package/lib/components/system/helpers.js +123 -100
  111. package/lib/components/system/spaces/SystemSpaceForm.js +9 -37
  112. package/lib/components/system/spaces/SystemTenantForm.js +276 -104
  113. package/lib/components/system/spaces/SystemTenantMigrateForm.js +449 -0
  114. package/lib/components/system/spaces/SystemTenantTable.js +20 -16
  115. package/lib/components/table/Table.js +75 -15
  116. package/lib/components/table/Table.redux.js +297 -73
  117. package/lib/components/table/defaults/FilterControl.js +24 -0
  118. package/lib/components/table/defaults/index.js +2 -0
  119. package/lib/components/table/tests/Table.test.js +22 -22
  120. package/lib/components/table/tests/components.js +9 -2
  121. package/lib/components/task/builder/Connector.js +51 -41
  122. package/lib/components/task/builder/ConnectorForm.js +11 -7
  123. package/lib/components/task/builder/Node.js +31 -35
  124. package/lib/components/task/builder/NodeForm.js +93 -22
  125. package/lib/components/task/builder/NodeParametersForm.js +29 -17
  126. package/lib/components/task/builder/SvgCanvas.js +3 -17
  127. package/lib/components/task/builder/TaskDefinitionConfigForm.js +18 -50
  128. package/lib/components/task/builder/TreeBuilder.js +23 -3
  129. package/lib/components/task/builder/builder.redux.js +342 -197
  130. package/lib/components/task/builder/constants.js +10 -2
  131. package/lib/components/task/builder/helpers.js +231 -81
  132. package/lib/components/task/builder/models.js +7 -6
  133. package/lib/components/task/category/TaskCategoryTable.js +3 -3
  134. package/lib/components/task/common/UsageTable.js +9 -2
  135. package/lib/components/task/handlers/HandlerTable.js +44 -37
  136. package/lib/components/task/policy_rule/PolicyRuleTable.js +3 -3
  137. package/lib/components/task/runs/CreateManualTriggerForm.js +2 -0
  138. package/lib/components/task/runs/RunTable.js +10 -14
  139. package/lib/components/task/runs/RunTaskTable.js +1 -1
  140. package/lib/components/task/sources/SourceTable.js +2 -2
  141. package/lib/components/task/triggers/TriggerTable.js +2 -2
  142. package/lib/components/task/workflows/LinkedWorkflowTable.js +16 -11
  143. package/lib/components/task/workflows/WorkflowForm.js +27 -8
  144. package/lib/components/task/workflows/WorkflowTable.js +27 -26
  145. package/lib/helpers/index.js +307 -74
  146. package/lib/index.js +2 -1
  147. package/lib/saga.js +4 -4
  148. package/lib/store.js +2 -1
  149. package/package.json +7 -6
  150. package/proxyhelper.js +201 -176
  151. package/CHANGELOG.md +0 -94
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.unmountTreeBuilder = exports.mountTreeBuilder = exports.configureTreeBuilder = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
10
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime"));
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
+ var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
13
  var _effects = require("redux-saga/effects");
13
14
  var _immutable = require("immutable");
@@ -16,6 +17,7 @@ var _store = require("../../../store");
16
17
  var _models = require("./models");
17
18
  var _apis = require("../../../apis");
18
19
  var _helpers = require("./helpers");
20
+ var _constants = require("./constants");
19
21
  var mountTreeBuilder = exports.mountTreeBuilder = function mountTreeBuilder(treeKey) {
20
22
  return (0, _store.dispatch)('TREE_MOUNT', {
21
23
  treeKey: treeKey
@@ -43,7 +45,7 @@ var remember = function remember(state, treeKey) {
43
45
  (0, _store.regSaga)((0, _effects.takeEvery)('TREE_CONFIGURE', function (_ref) {
44
46
  var payload = _ref.payload;
45
47
  return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee() {
46
- var name, sourceGroup, sourceName, treeKey, platformSourceName, webApiProps, workflowProps, _yield$all, _yield$all2, _yield$all2$, tree, treeError, _yield$all2$2, workflow, workflowError, categories, _yield$all2$3, webApi, webApiError, workflowObject, workflowObjectError, _yield$call, platformItem, platformItemError, _yield$call2, linkedWorkflow, linkedError, treeObject, loadError;
48
+ var _treeObject$treeJson, _treeObject$treeJson$, name, sourceGroup, sourceName, treeKey, platformSourceName, webApiProps, workflowProps, _yield$all, _yield$all2, _yield$all2$, tree, treeError, _yield$all2$2, workflow, workflowError, categories, _yield$all2$3$connect, connections, _yield$all2$3, webApi, webApiError, kappSlug, formSlug, workflowObject, workflowObjectError, _yield$call, platformItem, platformItemError, _yield$call2, linkedWorkflow, linkedError, slugs, treeObject, loadError, operations;
47
49
  return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) {
48
50
  while (1) switch (_context.prev = _context.next) {
49
51
  case 0:
@@ -61,18 +63,20 @@ var remember = function remember(state, treeKey) {
61
63
  include: 'bindings,categories,details,treeJson,inputs,outputs'
62
64
  }) : {},
63
65
  // Fetch the workflow if it is a linked workflow
64
- workflowProps ? (0, _effects.call)(_apis.fetchWorkflow, (0, _objectSpread2["default"])({}, workflowProps)) : {},
66
+ workflowProps ? (0, _effects.call)(_apis.fetchWorkflow, (0, _objectSpread3["default"])({}, workflowProps)) : {},
65
67
  // Fetch task categories
66
68
  (0, _effects.call)(_apis.fetchTaskCategories, {
67
- include: 'handlers.results,handlers.parameters,trees.parameters,trees.inputs,trees.outputs'
69
+ include: 'handlers.results,handlers.parameters,handlers.details,trees.parameters,trees.inputs,trees.outputs,trees.details'
68
70
  }),
71
+ // Fetch connections
72
+ (0, _effects.call)(_apis.fetchConnections),
69
73
  // Fetch the webAPI if applicable
70
- webApiProps ? (0, _effects.call)(_apis.fetchWebApi, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, webApiProps), {}, {
74
+ webApiProps ? (0, _effects.call)(_apis.fetchWebApi, (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, webApiProps), {}, {
71
75
  include: 'details,securityPolicies'
72
76
  })) : {}]);
73
77
  case 6:
74
78
  _yield$all = _context.sent;
75
- _yield$all2 = (0, _slicedToArray2["default"])(_yield$all, 4);
79
+ _yield$all2 = (0, _slicedToArray2["default"])(_yield$all, 5);
76
80
  _yield$all2$ = _yield$all2[0];
77
81
  tree = _yield$all2$.tree;
78
82
  treeError = _yield$all2$.error;
@@ -80,76 +84,186 @@ var remember = function remember(state, treeKey) {
80
84
  workflow = _yield$all2$2.workflow;
81
85
  workflowError = _yield$all2$2.error;
82
86
  categories = _yield$all2[2].categories;
83
- _yield$all2$3 = _yield$all2[3];
87
+ _yield$all2$3$connect = _yield$all2[3].connections;
88
+ connections = _yield$all2$3$connect === void 0 ? [] : _yield$all2$3$connect;
89
+ _yield$all2$3 = _yield$all2[4];
84
90
  webApi = _yield$all2$3.webApi;
85
91
  webApiError = _yield$all2$3.error;
92
+ kappSlug = (webApiProps === null || webApiProps === void 0 ? void 0 : webApiProps.kappSlug) || (workflowProps === null || workflowProps === void 0 ? void 0 : workflowProps.kappSlug);
93
+ formSlug = workflowProps === null || workflowProps === void 0 ? void 0 : workflowProps.formSlug;
86
94
  workflowObject = workflow;
87
95
  workflowObjectError = workflowError; // If a tree was fetched and the tree has platform item data, fetch the
88
96
  // platform item and then retrieve the workflow
89
97
  if (!(tree && tree.platformItemId && tree.platformItemType)) {
90
- _context.next = 37;
98
+ _context.next = 42;
91
99
  break;
92
100
  }
93
- _context.next = 23;
101
+ _context.next = 27;
94
102
  return (0, _effects.call)(_apis.fetchPlatformItem, {
95
103
  type: tree.platformItemType,
96
104
  id: tree.platformItemId
97
105
  });
98
- case 23:
106
+ case 27:
99
107
  _yield$call = _context.sent;
100
108
  platformItem = _yield$call.platformItem;
101
109
  platformItemError = _yield$call.error;
102
110
  if (!platformItem) {
103
- _context.next = 36;
111
+ _context.next = 41;
104
112
  break;
105
113
  }
106
- _context.next = 29;
107
- return (0, _effects.call)(_apis.fetchWorkflow, (0, _objectSpread2["default"])({
114
+ _context.next = 33;
115
+ return (0, _effects.call)(_apis.fetchWorkflow, (0, _objectSpread3["default"])({
108
116
  workflowId: sourceGroup
109
117
  }, getPlatformItemSlugs(platformItem)));
110
- case 29:
118
+ case 33:
111
119
  _yield$call2 = _context.sent;
112
120
  linkedWorkflow = _yield$call2.workflow;
113
121
  linkedError = _yield$call2.error;
114
122
  workflowObject = linkedWorkflow;
115
123
  workflowObjectError = linkedError;
116
- _context.next = 37;
124
+ // If workflow was loaded via the old tree route, set the kapp and
125
+ // form slugs from the platform item
126
+ if (!workflowProps) {
127
+ slugs = getPlatformItemSlugs(platformItem);
128
+ if (!kappSlug) {
129
+ kappSlug = slugs === null || slugs === void 0 ? void 0 : slugs.kappSlug;
130
+ }
131
+ if (!formSlug) {
132
+ formSlug = slugs === null || slugs === void 0 ? void 0 : slugs.formSlug;
133
+ }
134
+ }
135
+ _context.next = 42;
117
136
  break;
118
- case 36:
137
+ case 41:
119
138
  // If platform item was not retrieved, show an error because we don't
120
139
  // want to render a workflow using a tree route
121
140
  workflowObjectError = platformItemError || 'Failed to load linked workflow.';
122
- case 37:
141
+ case 42:
123
142
  // If workflow, set sourceName to platformSourceName since the value is
124
143
  // needed when creating new runs
125
- treeObject = workflowObject ? (0, _objectSpread2["default"])({
144
+ treeObject = workflowObject ? (0, _objectSpread3["default"])({
126
145
  sourceName: platformSourceName
127
146
  }, workflowObject) : tree;
128
- loadError = workflowObjectError || treeError || webApiError;
129
- _context.next = 41;
130
- return (0, _effects.put)((0, _store.action)('TREE_LOADED', {
147
+ loadError = workflowObjectError || treeError || webApiError; // Find the operation ids of any integration nodes
148
+ operations = (treeObject === null || treeObject === void 0 ? void 0 : (_treeObject$treeJson = treeObject.treeJson) === null || _treeObject$treeJson === void 0 ? void 0 : (_treeObject$treeJson$ = _treeObject$treeJson.nodes) === null || _treeObject$treeJson$ === void 0 ? void 0 : _treeObject$treeJson$.map(function (node) {
149
+ var _node$parameters$find, _node$parameters$find2;
150
+ return node.definitionId.startsWith("".concat(_constants.ADVANCED_HANDLER_NAME_INTEGRATION, "_v")) ? {
151
+ id: (_node$parameters$find = node.parameters.find(function (p) {
152
+ return p.id === 'operation';
153
+ })) === null || _node$parameters$find === void 0 ? void 0 : _node$parameters$find.value,
154
+ connectionId: (_node$parameters$find2 = node.parameters.find(function (p) {
155
+ return p.id === 'connection';
156
+ })) === null || _node$parameters$find2 === void 0 ? void 0 : _node$parameters$find2.value
157
+ } : null;
158
+ }).filter(Boolean)) || [];
159
+ _context.next = 47;
160
+ return (0, _effects.all)([(0, _effects.put)((0, _store.action)('TREE_LOADED', {
131
161
  categories: categories,
132
- kappSlug: (webApiProps === null || webApiProps === void 0 ? void 0 : webApiProps.kappSlug) || (workflowProps === null || workflowProps === void 0 ? void 0 : workflowProps.kappSlug),
133
- formSlug: workflowProps === null || workflowProps === void 0 ? void 0 : workflowProps.formSlug,
162
+ connections: connections,
163
+ kappSlug: kappSlug,
164
+ formSlug: formSlug,
134
165
  treeKey: treeKey,
135
166
  tree:
136
167
  // Don't set the tree if it's for a webApi but the webApi errors
137
168
  treeObject && (!webApiProps || webApi) ? (0, _models.deserializeTree)(treeObject) : null,
138
169
  webApi: webApi ? (0, _models.deserializeWebApi)(webApi, webApiProps.kappSlug) : null,
139
170
  error: loadError ? loadError.message || loadError : null
140
- }));
141
- case 41:
142
- _context.next = 46;
171
+ })), operations.length > 0 ? (0, _effects.put)((0, _store.action)('TREE_LOAD_OPERATIONS', {
172
+ treeKey: treeKey,
173
+ operations: operations
174
+ })) : null]);
175
+ case 47:
176
+ _context.next = 52;
143
177
  break;
144
- case 43:
145
- _context.prev = 43;
178
+ case 49:
179
+ _context.prev = 49;
146
180
  _context.t0 = _context["catch"](0);
147
181
  console.error('Caught error loading tree', _context.t0);
148
- case 46:
182
+ case 52:
149
183
  case "end":
150
184
  return _context.stop();
151
185
  }
152
- }, _callee, null, [[0, 43]]);
186
+ }, _callee, null, [[0, 49]]);
187
+ })();
188
+ }));
189
+ (0, _store.regSaga)((0, _effects.takeEvery)('TREE_LOAD_CONNECTIONS', function (_ref2) {
190
+ var payload = _ref2.payload;
191
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() {
192
+ var treeKey, _yield$call3, _yield$call3$connecti, connections;
193
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) {
194
+ while (1) switch (_context2.prev = _context2.next) {
195
+ case 0:
196
+ _context2.prev = 0;
197
+ treeKey = payload.treeKey;
198
+ _context2.next = 4;
199
+ return (0, _effects.call)(_apis.fetchConnections);
200
+ case 4:
201
+ _yield$call3 = _context2.sent;
202
+ _yield$call3$connecti = _yield$call3.connections;
203
+ connections = _yield$call3$connecti === void 0 ? [] : _yield$call3$connecti;
204
+ _context2.next = 9;
205
+ return (0, _effects.put)((0, _store.action)('TREE_INTEGRATION_DATA_LOADED', {
206
+ connections: connections,
207
+ treeKey: treeKey
208
+ }));
209
+ case 9:
210
+ _context2.next = 14;
211
+ break;
212
+ case 11:
213
+ _context2.prev = 11;
214
+ _context2.t0 = _context2["catch"](0);
215
+ console.error('Caught error loading tree integration data', _context2.t0);
216
+ case 14:
217
+ case "end":
218
+ return _context2.stop();
219
+ }
220
+ }, _callee2, null, [[0, 11]]);
221
+ })();
222
+ }));
223
+ (0, _store.regSaga)((0, _effects.takeEvery)('TREE_LOAD_OPERATIONS', function (_ref3) {
224
+ var payload = _ref3.payload;
225
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() {
226
+ var treeKey, connectionId, _payload$operationIds, operationIds, operationsToLoad, _yield, _yield$operations, operations, loadedOperationIds;
227
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context3) {
228
+ while (1) switch (_context3.prev = _context3.next) {
229
+ case 0:
230
+ _context3.prev = 0;
231
+ treeKey = payload.treeKey, connectionId = payload.connectionId, _payload$operationIds = payload.operationIds, operationIds = _payload$operationIds === void 0 ? [] : _payload$operationIds, operationsToLoad = payload.operations;
232
+ _context3.next = 4;
233
+ return connectionId ? (0, _effects.call)(_apis.fetchOperations, {
234
+ connectionId: connectionId
235
+ }) : (0, _effects.call)(_apis.fetchBulkOperations, {
236
+ ids: operationsToLoad ? operationsToLoad.map(function (op) {
237
+ return op.id;
238
+ }) : operationIds
239
+ });
240
+ case 4:
241
+ _yield = _context3.sent;
242
+ _yield$operations = _yield.operations;
243
+ operations = _yield$operations === void 0 ? [] : _yield$operations;
244
+ loadedOperationIds = operations.reduce(function (ids, op) {
245
+ return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, ids), {}, (0, _defineProperty2["default"])({}, op.id, true));
246
+ }, {});
247
+ _context3.next = 10;
248
+ return (0, _effects.put)((0, _store.action)('TREE_INTEGRATION_DATA_LOADED', {
249
+ missing: operationsToLoad ? operationsToLoad.filter(function (op) {
250
+ return !loadedOperationIds[op.id];
251
+ }) : null,
252
+ operations: operations,
253
+ treeKey: treeKey
254
+ }));
255
+ case 10:
256
+ _context3.next = 15;
257
+ break;
258
+ case 12:
259
+ _context3.prev = 12;
260
+ _context3.t0 = _context3["catch"](0);
261
+ console.error('Caught error loading tree integration data', _context3.t0);
262
+ case 15:
263
+ case "end":
264
+ return _context3.stop();
265
+ }
266
+ }, _callee3, null, [[0, 12]]);
153
267
  })();
154
268
  }));
155
269
  var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
@@ -165,23 +279,23 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
165
279
  } : {}
166
280
  );
167
281
  };
168
- (0, _store.regSaga)((0, _effects.takeEvery)('TREE_SAVE', function (_ref2) {
169
- var payload = _ref2.payload;
170
- return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() {
171
- var newName, onError, onSave, overwrite, treeKey, _yield$select, kappSlug, formSlug, lastSave, lastWebApi, tree, webApi, name, sourceGroup, sourceName, _yield, error1, newTree, newWorkflow, _yield2, error2, error;
172
- return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) {
173
- while (1) switch (_context2.prev = _context2.next) {
282
+ (0, _store.regSaga)((0, _effects.takeEvery)('TREE_SAVE', function (_ref4) {
283
+ var payload = _ref4.payload;
284
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() {
285
+ var newName, onError, onSave, overwrite, treeKey, _yield$select, kappSlug, formSlug, lastSave, lastWebApi, tree, webApi, name, sourceGroup, sourceName, _yield2, error1, newTree, newWorkflow, _yield3, error2, error;
286
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context4) {
287
+ while (1) switch (_context4.prev = _context4.next) {
174
288
  case 0:
175
- _context2.prev = 0;
289
+ _context4.prev = 0;
176
290
  // because of the optimistic locking functionality newName / overwrite can
177
291
  // be passed as options to the builder's save function
178
292
  newName = payload.newName, onError = payload.onError, onSave = payload.onSave, overwrite = payload.overwrite, treeKey = payload.treeKey;
179
- _context2.next = 4;
293
+ _context4.next = 4;
180
294
  return (0, _effects.select)(function (state) {
181
295
  return state.getIn(['trees', treeKey]);
182
296
  });
183
297
  case 4:
184
- _yield$select = _context2.sent;
298
+ _yield$select = _context4.sent;
185
299
  kappSlug = _yield$select.kappSlug;
186
300
  formSlug = _yield$select.formSlug;
187
301
  lastSave = _yield$select.lastSave;
@@ -192,15 +306,15 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
192
306
  // contents, otherwise just an update
193
307
  // additionally, if the tree is a linked workflow then we call a core
194
308
  // endpoint to create the workflow
195
- _context2.next = 14;
309
+ _context4.next = 14;
196
310
  return newName ? tree.event ? (0, _effects.call)(_apis.createWorkflow, {
197
- workflow: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _models.serializeTree)(tree)), {}, {
311
+ workflow: (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, (0, _models.serializeTree)(tree)), {}, {
198
312
  name: newName
199
313
  }),
200
314
  kappSlug: kappSlug,
201
315
  formSlug: formSlug
202
316
  }) : (0, _effects.call)(_apis.createTree, {
203
- tree: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _models.serializeTree)(tree, true)), {}, {
317
+ tree: (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, (0, _models.serializeTree)(tree, true)), {}, {
204
318
  name: newName
205
319
  })
206
320
  }) : tree.event ? (0, _effects.call)(_apis.updateWorkflow, {
@@ -215,21 +329,21 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
215
329
  tree: (0, _models.serializeTree)(tree, overwrite)
216
330
  });
217
331
  case 14:
218
- _yield = _context2.sent;
219
- error1 = _yield.error;
220
- newTree = _yield.tree;
221
- newWorkflow = _yield.workflow;
222
- _context2.next = 20;
332
+ _yield2 = _context4.sent;
333
+ error1 = _yield2.error;
334
+ newTree = _yield2.tree;
335
+ newWorkflow = _yield2.workflow;
336
+ _context4.next = 20;
223
337
  return webApi && !error1 ? (0, _effects.call)(_apis.updateWebApi, {
224
338
  slug: lastWebApi.get('slug'),
225
339
  kappSlug: kappSlug,
226
340
  webApi: webApi
227
341
  }) : {};
228
342
  case 20:
229
- _yield2 = _context2.sent;
230
- error2 = _yield2.error;
343
+ _yield3 = _context4.sent;
344
+ error2 = _yield3.error;
231
345
  error = error1 || error2; // dispatch the appropriate action based on the result of the call above
232
- _context2.next = 25;
346
+ _context4.next = 25;
233
347
  return (0, _effects.put)(error ? (0, _store.action)('TREE_SAVE_ERROR', {
234
348
  treeKey: treeKey,
235
349
  error: error.message || error,
@@ -240,125 +354,131 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
240
354
  tree: newTree || newWorkflow,
241
355
  webApi: webApi,
242
356
  onSave: onSave,
243
- scope: {
357
+ scope: tree.event ? {
244
358
  kappSlug: kappSlug,
245
359
  formSlug: formSlug
246
- }
360
+ } : undefined
247
361
  }));
248
362
  case 25:
249
- _context2.next = 30;
363
+ _context4.next = 30;
250
364
  break;
251
365
  case 27:
252
- _context2.prev = 27;
253
- _context2.t0 = _context2["catch"](0);
254
- console.error(_context2.t0);
366
+ _context4.prev = 27;
367
+ _context4.t0 = _context4["catch"](0);
368
+ console.error(_context4.t0);
255
369
  case 30:
256
370
  case "end":
257
- return _context2.stop();
371
+ return _context4.stop();
258
372
  }
259
- }, _callee2, null, [[0, 27]]);
373
+ }, _callee4, null, [[0, 27]]);
260
374
  })();
261
375
  }));
262
- (0, _store.regSaga)((0, _effects.takeEvery)('TREE_SAVE_ERROR', function (_ref3) {
263
- var _ref3$payload = _ref3.payload,
264
- error = _ref3$payload.error,
265
- onError = _ref3$payload.onError;
266
- return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() {
267
- return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context3) {
268
- while (1) switch (_context3.prev = _context3.next) {
376
+ (0, _store.regSaga)((0, _effects.takeEvery)('TREE_SAVE_ERROR', function (_ref5) {
377
+ var _ref5$payload = _ref5.payload,
378
+ error = _ref5$payload.error,
379
+ onError = _ref5$payload.onError;
380
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee5() {
381
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee5$(_context5) {
382
+ while (1) switch (_context5.prev = _context5.next) {
269
383
  case 0:
270
- _context3.prev = 0;
384
+ _context5.prev = 0;
271
385
  if (!(0, _lodashEs.isFunction)(onError)) {
272
- _context3.next = 4;
386
+ _context5.next = 4;
273
387
  break;
274
388
  }
275
- _context3.next = 4;
389
+ _context5.next = 4;
276
390
  return (0, _effects.call)(onError, error);
277
391
  case 4:
278
- _context3.next = 9;
392
+ _context5.next = 9;
279
393
  break;
280
394
  case 6:
281
- _context3.prev = 6;
282
- _context3.t0 = _context3["catch"](0);
283
- console.error(_context3.t0);
395
+ _context5.prev = 6;
396
+ _context5.t0 = _context5["catch"](0);
397
+ console.error(_context5.t0);
284
398
  case 9:
285
399
  case "end":
286
- return _context3.stop();
400
+ return _context5.stop();
287
401
  }
288
- }, _callee3, null, [[0, 6]]);
402
+ }, _callee5, null, [[0, 6]]);
289
403
  })();
290
404
  }));
291
- (0, _store.regSaga)((0, _effects.takeEvery)('TREE_SAVE_SUCCESS', function (_ref4) {
292
- var _ref4$payload = _ref4.payload,
293
- onSave = _ref4$payload.onSave,
294
- previousTree = _ref4$payload.previousTree,
295
- treeKey = _ref4$payload.treeKey,
296
- scope = _ref4$payload.scope;
297
- return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() {
405
+ (0, _store.regSaga)((0, _effects.takeEvery)('TREE_SAVE_SUCCESS', function (_ref6) {
406
+ var _ref6$payload = _ref6.payload,
407
+ onSave = _ref6$payload.onSave,
408
+ previousTree = _ref6$payload.previousTree,
409
+ treeKey = _ref6$payload.treeKey,
410
+ scope = _ref6$payload.scope;
411
+ return /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee6() {
298
412
  var tree;
299
- return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context4) {
300
- while (1) switch (_context4.prev = _context4.next) {
413
+ return (0, _regeneratorRuntime2["default"])().wrap(function _callee6$(_context6) {
414
+ while (1) switch (_context6.prev = _context6.next) {
301
415
  case 0:
302
- _context4.prev = 0;
416
+ _context6.prev = 0;
303
417
  if (!(0, _lodashEs.isFunction)(onSave)) {
304
- _context4.next = 7;
418
+ _context6.next = 7;
305
419
  break;
306
420
  }
307
- _context4.next = 4;
421
+ _context6.next = 4;
308
422
  return (0, _effects.select)(function (state) {
309
423
  return state.getIn(['trees', treeKey, 'tree']);
310
424
  });
311
425
  case 4:
312
- tree = _context4.sent;
313
- _context4.next = 7;
426
+ tree = _context6.sent;
427
+ _context6.next = 7;
314
428
  return (0, _effects.call)(onSave, tree, previousTree, scope);
315
429
  case 7:
316
- _context4.next = 12;
430
+ _context6.next = 12;
317
431
  break;
318
432
  case 9:
319
- _context4.prev = 9;
320
- _context4.t0 = _context4["catch"](0);
321
- console.error(_context4.t0);
433
+ _context6.prev = 9;
434
+ _context6.t0 = _context6["catch"](0);
435
+ console.error(_context6.t0);
322
436
  case 12:
323
437
  case "end":
324
- return _context4.stop();
438
+ return _context6.stop();
325
439
  }
326
- }, _callee4, null, [[0, 9]]);
440
+ }, _callee6, null, [[0, 9]]);
327
441
  })();
328
442
  }));
329
443
  (0, _store.regHandlers)({
330
444
  // the TreeBuilder component does nothing while the tree state is undefined,
331
445
  // on mount we set it to null to signal to the component to dispatch the
332
446
  // configure action with its configuration props
333
- TREE_MOUNT: function TREE_MOUNT(state, _ref5) {
334
- var treeKey = _ref5.payload.treeKey;
447
+ TREE_MOUNT: function TREE_MOUNT(state, _ref7) {
448
+ var treeKey = _ref7.payload.treeKey;
335
449
  return state.setIn(['trees', treeKey], null);
336
450
  },
337
- TREE_CONFIGURE: function TREE_CONFIGURE(state, _ref6) {
338
- var treeKey = _ref6.payload.treeKey;
451
+ TREE_CONFIGURE: function TREE_CONFIGURE(state, _ref8) {
452
+ var treeKey = _ref8.payload.treeKey;
339
453
  return state.setIn(['trees', treeKey], (0, _models.TreeBuilderState)());
340
454
  },
341
- TREE_UNMOUNT: function TREE_UNMOUNT(state, _ref7) {
342
- var treeKey = _ref7.payload.treeKey;
455
+ TREE_UNMOUNT: function TREE_UNMOUNT(state, _ref9) {
456
+ var treeKey = _ref9.payload.treeKey;
343
457
  return state.deleteIn(['trees', treeKey]);
344
458
  },
345
- TREE_LOADED: function TREE_LOADED(state, _ref8) {
346
- var _ref8$payload = _ref8.payload,
347
- categories = _ref8$payload.categories,
348
- kappSlug = _ref8$payload.kappSlug,
349
- formSlug = _ref8$payload.formSlug,
350
- treeKey = _ref8$payload.treeKey,
351
- tree = _ref8$payload.tree,
352
- webApi = _ref8$payload.webApi,
353
- error = _ref8$payload.error;
459
+ TREE_LOADED: function TREE_LOADED(state, _ref10) {
460
+ var _ref10$payload = _ref10.payload,
461
+ categories = _ref10$payload.categories,
462
+ connections = _ref10$payload.connections,
463
+ kappSlug = _ref10$payload.kappSlug,
464
+ formSlug = _ref10$payload.formSlug,
465
+ treeKey = _ref10$payload.treeKey,
466
+ tree = _ref10$payload.tree,
467
+ webApi = _ref10$payload.webApi,
468
+ error = _ref10$payload.error;
354
469
  return state.mergeIn(['trees', treeKey], {
470
+ connections: (0, _immutable.fromJS)(connections).sortBy(function (conn) {
471
+ return conn.name;
472
+ }).reduce(function (reduction, conn) {
473
+ return reduction.set(conn.get('id'), conn.set('operations', (0, _immutable.OrderedMap)()));
474
+ }, (0, _immutable.OrderedMap)()),
355
475
  kappSlug: kappSlug,
356
476
  formSlug: formSlug,
357
477
  lastSave: tree,
358
478
  lastWebApi: webApi,
359
479
  loading: false,
360
480
  tasks: (0, _immutable.List)(categories).map(function (category) {
361
- return category.name === 'System Controls' ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, category), {}, {
481
+ return category.name === 'System Controls' ? (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, category), {}, {
362
482
  handlers: [].concat((0, _toConsumableArray2["default"])(category.handlers), [tree ? (0, _helpers.treeReturnTask)(tree) : null]).filter(Boolean)
363
483
  }) : category;
364
484
  }).flatMap(function (category) {
@@ -373,26 +493,51 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
373
493
  error: error
374
494
  });
375
495
  },
376
- TREE_SAVE: function TREE_SAVE(state, _ref9) {
377
- var treeKey = _ref9.payload.treeKey;
496
+ TREE_INTEGRATION_DATA_LOADED: function TREE_INTEGRATION_DATA_LOADED(state, _ref11) {
497
+ var _ref11$payload = _ref11.payload,
498
+ treeKey = _ref11$payload.treeKey,
499
+ connections = _ref11$payload.connections,
500
+ operations = _ref11$payload.operations,
501
+ missing = _ref11$payload.missing;
502
+ return state.updateIn(['trees', treeKey, 'connections'], function (connectionsMap) {
503
+ // Update connections map in state if data was provided
504
+ var newConnectionsMap = connections ? (0, _immutable.fromJS)(connections).sortBy(function (conn) {
505
+ return conn.name;
506
+ }).reduce(function (reduction, conn) {
507
+ return reduction.set(conn.get('id'), conn.set('operations', connectionsMap.getIn([conn.get('id'), 'operations']) || (0, _immutable.OrderedMap)()));
508
+ }, (0, _immutable.OrderedMap)()) : connectionsMap;
509
+
510
+ // Update the operations maps in each connection if data was provided
511
+ var newConnectionsWithOperationsMap = operations ? (0, _immutable.fromJS)(operations).reduce(function (map, op) {
512
+ return map.setIn([op.get('connectionId'), 'operations', op.get('id')], op);
513
+ }, newConnectionsMap) : newConnectionsMap;
514
+
515
+ // Update the operations maps in each connection to set missing values
516
+ return missing ? (0, _immutable.fromJS)(missing).reduce(function (map, op) {
517
+ return map.has(op.get('connectionId')) ? map.setIn([op.get('connectionId'), 'operations', op.get('id')], null) : map;
518
+ }, newConnectionsWithOperationsMap) : newConnectionsWithOperationsMap;
519
+ });
520
+ },
521
+ TREE_SAVE: function TREE_SAVE(state, _ref12) {
522
+ var treeKey = _ref12.payload.treeKey;
378
523
  return state.mergeIn(['trees', treeKey], {
379
524
  saving: true
380
525
  });
381
526
  },
382
- TREE_SAVE_ERROR: function TREE_SAVE_ERROR(state, _ref10) {
383
- var _ref10$payload = _ref10.payload,
384
- treeKey = _ref10$payload.treeKey,
385
- error = _ref10$payload.error;
527
+ TREE_SAVE_ERROR: function TREE_SAVE_ERROR(state, _ref13) {
528
+ var _ref13$payload = _ref13.payload,
529
+ treeKey = _ref13$payload.treeKey,
530
+ error = _ref13$payload.error;
386
531
  return state.mergeIn(['trees', treeKey], {
387
532
  error: error,
388
533
  saving: false
389
534
  });
390
535
  },
391
- TREE_SAVE_SUCCESS: function TREE_SAVE_SUCCESS(state, _ref11) {
392
- var _ref11$payload = _ref11.payload,
393
- tree = _ref11$payload.tree,
394
- treeKey = _ref11$payload.treeKey,
395
- webApi = _ref11$payload.webApi;
536
+ TREE_SAVE_SUCCESS: function TREE_SAVE_SUCCESS(state, _ref14) {
537
+ var _ref14$payload = _ref14.payload,
538
+ tree = _ref14$payload.tree,
539
+ treeKey = _ref14$payload.treeKey,
540
+ webApi = _ref14$payload.webApi;
396
541
  var newTree = state.getIn(['trees', treeKey, 'tree']).merge({
397
542
  name: tree.name,
398
543
  sourceGroup: tree.sourceGroup,
@@ -408,8 +553,8 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
408
553
  webApi: webApi
409
554
  });
410
555
  },
411
- TREE_UNDO: function TREE_UNDO(state, _ref12) {
412
- var treeKey = _ref12.payload.treeKey;
556
+ TREE_UNDO: function TREE_UNDO(state, _ref15) {
557
+ var treeKey = _ref15.payload.treeKey;
413
558
  return state.getIn(['trees', treeKey, 'undoStack']).isEmpty() ? state : state.updateIn(['trees', treeKey], function (builderState) {
414
559
  return builderState.merge({
415
560
  tree: builderState.undoStack.last().tree,
@@ -422,8 +567,8 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
422
567
  });
423
568
  }).updateIn(['trees', treeKey], synchronizeRoutineDefinition);
424
569
  },
425
- TREE_REDO: function TREE_REDO(state, _ref13) {
426
- var treeKey = _ref13.payload.treeKey;
570
+ TREE_REDO: function TREE_REDO(state, _ref16) {
571
+ var treeKey = _ref16.payload.treeKey;
427
572
  return state.getIn(['trees', treeKey, 'redoStack']).isEmpty() ? state : state.updateIn(['trees', treeKey], function (builderState) {
428
573
  return builderState.merge({
429
574
  tree: builderState.redoStack.last().tree,
@@ -436,24 +581,24 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
436
581
  });
437
582
  }).updateIn(['trees', treeKey], synchronizeRoutineDefinition);
438
583
  },
439
- TREE_UPDATE: function TREE_UPDATE(state, _ref14) {
440
- var _ref14$payload = _ref14.payload,
441
- tree = _ref14$payload.tree,
442
- treeKey = _ref14$payload.treeKey;
584
+ TREE_UPDATE: function TREE_UPDATE(state, _ref17) {
585
+ var _ref17$payload = _ref17.payload,
586
+ tree = _ref17$payload.tree,
587
+ treeKey = _ref17$payload.treeKey;
443
588
  return remember(state, treeKey).setIn(['trees', treeKey, 'tree'], tree);
444
589
  },
445
- TREE_UPDATE_NODE: function TREE_UPDATE_NODE(state, _ref15) {
446
- var _ref15$payload = _ref15.payload,
447
- treeKey = _ref15$payload.treeKey,
448
- id = _ref15$payload.id,
449
- messages = _ref15$payload.messages,
450
- deferrable = _ref15$payload.deferrable,
451
- defers = _ref15$payload.defers,
452
- definitionId = _ref15$payload.definitionId,
453
- dependencies = _ref15$payload.dependencies,
454
- name = _ref15$payload.name,
455
- parameters = _ref15$payload.parameters,
456
- visible = _ref15$payload.visible;
590
+ TREE_UPDATE_NODE: function TREE_UPDATE_NODE(state, _ref18) {
591
+ var _ref18$payload = _ref18.payload,
592
+ treeKey = _ref18$payload.treeKey,
593
+ id = _ref18$payload.id,
594
+ messages = _ref18$payload.messages,
595
+ deferrable = _ref18$payload.deferrable,
596
+ defers = _ref18$payload.defers,
597
+ definitionId = _ref18$payload.definitionId,
598
+ dependencies = _ref18$payload.dependencies,
599
+ name = _ref18$payload.name,
600
+ parameters = _ref18$payload.parameters,
601
+ visible = _ref18$payload.visible;
457
602
  return remember(state, treeKey).mergeIn(['trees', treeKey, 'tree', 'nodes', id], {
458
603
  deferrable: deferrable,
459
604
  defers: defers,
@@ -464,28 +609,28 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
464
609
  visible: visible
465
610
  }).updateIn(['trees', treeKey, 'tree'], (0, _helpers.renameDependencies)(dependencies, name));
466
611
  },
467
- TREE_UPDATE_NODE_POSITION: function TREE_UPDATE_NODE_POSITION(state, _ref16) {
468
- var _ref16$payload = _ref16.payload,
469
- treeKey = _ref16$payload.treeKey,
470
- id = _ref16$payload.id,
471
- position = _ref16$payload.position;
612
+ TREE_UPDATE_NODE_POSITION: function TREE_UPDATE_NODE_POSITION(state, _ref19) {
613
+ var _ref19$payload = _ref19.payload,
614
+ treeKey = _ref19$payload.treeKey,
615
+ id = _ref19$payload.id,
616
+ position = _ref19$payload.position;
472
617
  return remember(state, treeKey).setIn(['trees', treeKey, 'tree', 'nodes', id, 'position'], position);
473
618
  },
474
- TREE_REMOVE_NODE: function TREE_REMOVE_NODE(state, _ref17) {
475
- var _ref17$payload = _ref17.payload,
476
- treeKey = _ref17$payload.treeKey,
477
- id = _ref17$payload.id;
619
+ TREE_REMOVE_NODE: function TREE_REMOVE_NODE(state, _ref20) {
620
+ var _ref20$payload = _ref20.payload,
621
+ treeKey = _ref20$payload.treeKey,
622
+ id = _ref20$payload.id;
478
623
  return remember(state, treeKey).deleteIn(['trees', treeKey, 'tree', 'nodes', id]).updateIn(['trees', treeKey, 'tree', 'connectors'], function (connectors) {
479
624
  return connectors.filter(function (connector) {
480
625
  return connector.headId !== id && connector.tailId !== id;
481
626
  });
482
627
  });
483
628
  },
484
- TREE_ADD_CONNECTOR: function TREE_ADD_CONNECTOR(state, _ref18) {
485
- var _ref18$payload = _ref18.payload,
486
- treeKey = _ref18$payload.treeKey,
487
- headId = _ref18$payload.headId,
488
- tailId = _ref18$payload.tailId;
629
+ TREE_ADD_CONNECTOR: function TREE_ADD_CONNECTOR(state, _ref21) {
630
+ var _ref21$payload = _ref21.payload,
631
+ treeKey = _ref21$payload.treeKey,
632
+ headId = _ref21$payload.headId,
633
+ tailId = _ref21$payload.tailId;
489
634
  return remember(state, treeKey).updateIn(['trees', treeKey, 'tree'], function (tree) {
490
635
  return tree.update('connectors', function (connectors) {
491
636
  return connectors.set(tree.nextConnectorId, (0, _models.Connector)({
@@ -498,46 +643,46 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
498
643
  });
499
644
  });
500
645
  },
501
- TREE_UPDATE_CONNECTOR: function TREE_UPDATE_CONNECTOR(state, _ref19) {
502
- var _ref19$payload = _ref19.payload,
503
- treeKey = _ref19$payload.treeKey,
504
- id = _ref19$payload.id,
505
- type = _ref19$payload.type,
506
- label = _ref19$payload.label,
507
- condition = _ref19$payload.condition;
646
+ TREE_UPDATE_CONNECTOR: function TREE_UPDATE_CONNECTOR(state, _ref22) {
647
+ var _ref22$payload = _ref22.payload,
648
+ treeKey = _ref22$payload.treeKey,
649
+ id = _ref22$payload.id,
650
+ type = _ref22$payload.type,
651
+ label = _ref22$payload.label,
652
+ condition = _ref22$payload.condition;
508
653
  return state.hasIn(['trees', treeKey, 'tree', 'connectors', id]) ? remember(state, treeKey).mergeIn(['trees', treeKey, 'tree', 'connectors', id], {
509
654
  type: type,
510
655
  label: label,
511
656
  condition: condition
512
657
  }) : state;
513
658
  },
514
- TREE_REMOVE_CONNECTOR: function TREE_REMOVE_CONNECTOR(state, _ref20) {
515
- var _ref20$payload = _ref20.payload,
516
- treeKey = _ref20$payload.treeKey,
517
- id = _ref20$payload.id;
659
+ TREE_REMOVE_CONNECTOR: function TREE_REMOVE_CONNECTOR(state, _ref23) {
660
+ var _ref23$payload = _ref23.payload,
661
+ treeKey = _ref23$payload.treeKey,
662
+ id = _ref23$payload.id;
518
663
  return remember(state, treeKey).deleteIn(['trees', treeKey, 'tree', 'connectors', id]);
519
664
  },
520
- TREE_UPDATE_CONNECTOR_HEAD: function TREE_UPDATE_CONNECTOR_HEAD(state, _ref21) {
521
- var _ref21$payload = _ref21.payload,
522
- treeKey = _ref21$payload.treeKey,
523
- id = _ref21$payload.id,
524
- nodeId = _ref21$payload.nodeId;
665
+ TREE_UPDATE_CONNECTOR_HEAD: function TREE_UPDATE_CONNECTOR_HEAD(state, _ref24) {
666
+ var _ref24$payload = _ref24.payload,
667
+ treeKey = _ref24$payload.treeKey,
668
+ id = _ref24$payload.id,
669
+ nodeId = _ref24$payload.nodeId;
525
670
  return remember(state, treeKey).setIn(['trees', treeKey, 'tree', 'connectors', id, 'headId'], nodeId);
526
671
  },
527
- TREE_UPDATE_CONNECTOR_TAIL: function TREE_UPDATE_CONNECTOR_TAIL(state, _ref22) {
528
- var _ref22$payload = _ref22.payload,
529
- treeKey = _ref22$payload.treeKey,
530
- id = _ref22$payload.id,
531
- nodeId = _ref22$payload.nodeId;
672
+ TREE_UPDATE_CONNECTOR_TAIL: function TREE_UPDATE_CONNECTOR_TAIL(state, _ref25) {
673
+ var _ref25$payload = _ref25.payload,
674
+ treeKey = _ref25$payload.treeKey,
675
+ id = _ref25$payload.id,
676
+ nodeId = _ref25$payload.nodeId;
532
677
  return remember(state, treeKey).setIn(['trees', treeKey, 'tree', 'connectors', id, 'tailId'], nodeId);
533
678
  },
534
- TREE_UPDATE_SETTINGS: function TREE_UPDATE_SETTINGS(state, _ref23) {
535
- var _ref23$payload = _ref23.payload,
536
- treeKey = _ref23$payload.treeKey,
537
- values = _ref23$payload.values;
679
+ TREE_UPDATE_SETTINGS: function TREE_UPDATE_SETTINGS(state, _ref26) {
680
+ var _ref26$payload = _ref26.payload,
681
+ treeKey = _ref26$payload.treeKey,
682
+ values = _ref26$payload.values;
538
683
  // If the updated settings are for a routine we rebuild the "Tree Input"
539
684
  // bindings.
540
- var bindings = values.inputs ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state.getIn(['trees', treeKey, 'tree', 'bindings'])), {}, {
685
+ var bindings = values.inputs ? (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, state.getIn(['trees', treeKey, 'tree', 'bindings'])), {}, {
541
686
  'Tree Input': values.inputs.groupBy(function (input) {
542
687
  return input.get('name');
543
688
  }).map(function (list) {
@@ -546,14 +691,14 @@ var getPlatformItemSlugs = function getPlatformItemSlugs(platformItem) {
546
691
  return "<%=@inputs['".concat(name, "']%>");
547
692
  }).toJS()
548
693
  }) : state.getIn(['trees', treeKey, 'tree', 'bindings']);
549
- return remember(state, treeKey).mergeIn(['trees', treeKey, 'tree'], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, values), {}, {
694
+ return remember(state, treeKey).mergeIn(['trees', treeKey, 'tree'], (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, values), {}, {
550
695
  bindings: bindings
551
696
  })).updateIn(['trees', treeKey], synchronizeRoutineDefinition);
552
697
  },
553
- TREE_UPDATE_WEB_API: function TREE_UPDATE_WEB_API(state, _ref24) {
554
- var _ref24$payload = _ref24.payload,
555
- treeKey = _ref24$payload.treeKey,
556
- values = _ref24$payload.values;
698
+ TREE_UPDATE_WEB_API: function TREE_UPDATE_WEB_API(state, _ref27) {
699
+ var _ref27$payload = _ref27.payload,
700
+ treeKey = _ref27$payload.treeKey,
701
+ values = _ref27$payload.values;
557
702
  return remember(state, treeKey).mergeIn(['trees', treeKey, 'webApi'], values).setIn(['trees', treeKey, 'tree', 'name'], values.slug).setIn(['trees', treeKey, 'tree', 'ownerEmail'], values.ownerEmail);
558
703
  }
559
704
  });
@@ -564,18 +709,18 @@ var synchronizeRoutineDefinition = function synchronizeRoutineDefinition(treeBui
564
709
  outputs = tree.outputs;
565
710
  return treeBuilderState.update('tasks', function (tasks) {
566
711
  return tasks.map(function (task, taskDefinitionId) {
567
- return definitionId === taskDefinitionId ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, task), {}, {
712
+ return definitionId === taskDefinitionId ? (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, task), {}, {
568
713
  inputs: inputs.toJS(),
569
714
  outputs: outputs.toJS()
570
715
  }) : taskDefinitionId === 'system_tree_return_v1' ? (0, _helpers.treeReturnTask)(tree) : task;
571
716
  });
572
717
  });
573
718
  };
574
- var getWebApiProps = function getWebApiProps(_ref25) {
575
- var name = _ref25.name,
576
- platformSourceName = _ref25.platformSourceName,
577
- sourceGroup = _ref25.sourceGroup,
578
- sourceName = _ref25.sourceName;
719
+ var getWebApiProps = function getWebApiProps(_ref28) {
720
+ var name = _ref28.name,
721
+ platformSourceName = _ref28.platformSourceName,
722
+ sourceGroup = _ref28.sourceGroup,
723
+ sourceName = _ref28.sourceName;
579
724
  if (sourceName === platformSourceName && sourceGroup.startsWith('WebApis')) {
580
725
  var kappSlug = sourceGroup.startsWith('WebApis > ') ? sourceGroup.replace('WebApis > ', '') : undefined;
581
726
  var slug = name;
@@ -586,11 +731,11 @@ var getWebApiProps = function getWebApiProps(_ref25) {
586
731
  }
587
732
  return null;
588
733
  };
589
- var getWorkflowProps = function getWorkflowProps(_ref26) {
590
- var type = _ref26.type,
591
- sourceGroup = _ref26.sourceGroup,
592
- kappSlug = _ref26.kappSlug,
593
- formSlug = _ref26.formSlug;
734
+ var getWorkflowProps = function getWorkflowProps(_ref29) {
735
+ var type = _ref29.type,
736
+ sourceGroup = _ref29.sourceGroup,
737
+ kappSlug = _ref29.kappSlug,
738
+ formSlug = _ref29.formSlug;
594
739
  if (type === 'workflow') {
595
740
  return {
596
741
  workflowId: sourceGroup,