@lingk/sync 0.0.52 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/main.js CHANGED
@@ -4386,13 +4386,13 @@ module.exports =
4386
4386
  module.exports = require("react");
4387
4387
 
4388
4388
  /***/ },
4389
- /* 3 */
4389
+ /* 3 */,
4390
+ /* 4 */
4390
4391
  /***/ function(module, exports) {
4391
4392
 
4392
4393
  module.exports = require("redux-form");
4393
4394
 
4394
4395
  /***/ },
4395
- /* 4 */,
4396
4396
  /* 5 */
4397
4397
  /***/ function(module, exports, __webpack_require__) {
4398
4398
 
@@ -4447,7 +4447,8 @@ module.exports =
4447
4447
  return props.reset();
4448
4448
  }, 100);
4449
4449
  },
4450
- style: { float: 'right', marginRight: 14 }
4450
+ style: { float: 'right', marginRight: 14 },
4451
+ disabled: props.finishDisabled
4451
4452
  },
4452
4453
  props.nav.last ? 'Finish' : 'Save And Exit'
4453
4454
  )
@@ -4521,28 +4522,43 @@ module.exports =
4521
4522
  if (wizard.savedBundles && wizard.savedBundles.bundles) {
4522
4523
  var resourceGroups = wizard.savedBundles.bundles.map(function (bundle, index) {
4523
4524
 
4524
- //get bundle resource and destinationKey
4525
+ console.log(bundle);
4526
+
4527
+ // get bundle resource
4525
4528
  var bundleResource = wizard.destinationMetadata.find(function (rsc) {
4526
4529
  return rsc.type === bundle.name;
4527
4530
  });
4528
- var bundleProperty = bundleResource.properties.find(function (prop) {
4529
- return prop.name === bundle.destinationKey;
4531
+ //get bundle destinationKeys
4532
+ var destinationKeys = bundle.destinationKeys.map(function (dk) {
4533
+ var bundleProperty = bundleResource.properties.find(function (prop) {
4534
+ return prop.name === dk;
4535
+ });
4536
+ return bundleProperty && bundleProperty.label || 'externalId';
4530
4537
  });
4531
4538
 
4532
- //get resource and sourceKey from first rsc in bundle (check both metadatas)
4533
- var primaryResourceProvider = bundle.resources[0].provider.charAt(0).toUpperCase() + bundle.resources[0].provider.slice(1).replace('Reader', '');
4534
- var primaryDataSourceMetadata = primaryResourceProvider === step.destinationProvider ? wizard.destinationMetadata : wizard.sourceMetadata;
4535
- var sourceKeyResource = primaryDataSourceMetadata.find(function (r) {
4536
- return r.type === bundle.resources[0].resourceName;
4537
- });
4538
- var sourceKeyProperty = sourceKeyResource.properties.find(function (prop) {
4539
- return prop.name === bundle.sourceKey;
4539
+ var sourceKeysObjects = [];
4540
+ var sourceKeys = bundle.sourceKeys.map(function (sk, i) {
4541
+ var sourceKeyResourceObj = bundle.resources.find(function (r) {
4542
+ return r.resourceName === bundle.sourceKeysObjects[i];
4543
+ });
4544
+ var sourceKeyResourceProvider = sourceKeyResourceObj.provider.slice(1).replace('Reader', '');
4545
+ var primaryDataSourceMetadata = sourceKeyResourceProvider === step.destinationProvider ? wizard.destinationMetadata : wizard.sourceMetadata;
4546
+ var sourceKeyResource = primaryDataSourceMetadata.find(function (r) {
4547
+ return r.type === bundle.sourceKeysObjects[i];
4548
+ });
4549
+ sourceKeysObjects.push(sourceKeyResource.name);
4550
+ var sourceKeyProperty = sourceKeyResource.properties.find(function (prop) {
4551
+ return prop.name === sk;
4552
+ });
4553
+ return sourceKeyProperty.label;
4540
4554
  });
4541
4555
 
4542
4556
  return {
4543
4557
  name: bundleResource.name,
4544
- sourceKey: sourceKeyProperty.label,
4545
- destinationKey: bundleProperty.label,
4558
+ sourceKeys: sourceKeys,
4559
+ sourceKeysObjects: sourceKeysObjects,
4560
+ destinationKeys: destinationKeys,
4561
+ customExternalKeys: bundle.customExternalKeys,
4546
4562
  provider: bundle.provider.charAt(0).toUpperCase() + bundle.provider.slice(1),
4547
4563
  resources: bundle.resources && bundle.resources.map(function (rsc) {
4548
4564
 
@@ -4556,7 +4572,9 @@ module.exports =
4556
4572
  return prop.name === rsc.joinKeyName;
4557
4573
  });
4558
4574
 
4559
- //get resource and primaryKey for first resource in bundle (check both metadatas, already have correct one)
4575
+ //get resource and primaryKey for first resource in bundle (check both metadatas)
4576
+ var primaryResourceProvider = bundle.resources[0].provider.charAt(0).toUpperCase() + bundle.resources[0].provider.slice(1).replace('Reader', '');
4577
+ var primaryDataSourceMetadata = primaryResourceProvider === step.destinationProvider ? wizard.destinationMetadata : wizard.sourceMetadata;
4560
4578
  var rscPrimaryResource = primaryDataSourceMetadata.find(function (r) {
4561
4579
  return r.type === bundle.resources[0].resourceName;
4562
4580
  });
@@ -4593,7 +4611,7 @@ module.exports =
4593
4611
  resourceToName: destinationResource.name,
4594
4612
  propertyToName: destinationProperty.label,
4595
4613
  transformations: m.transformations && m.transformations.length > 0 ? m.transformations : [{ type: 'none' }]
4596
- }, m.isDestinationResource && { dataSourceIsDestinationEntity: true });
4614
+ }, m.isDestinationResource && { dataSourceIsDestinationEntity: true }, m.isExternalKeyMapping && { isExternalKeyMapping: true });
4597
4615
  })
4598
4616
  };
4599
4617
  });
@@ -5636,9 +5654,9 @@ module.exports =
5636
5654
  isBundleStep ? _react2.default.createElement(
5637
5655
  'div',
5638
5656
  { style: { position: 'absolute', right: 0, top: -2, zIndex: 99 } },
5639
- _react2.default.createElement(Select, { label: 'Target', type: 'brand', style: { height: 40 }, menuAlign: 'right',
5640
- onSelect: this.addDefaultResourceGroup, values: destinationSchema, title: 'Add Sync Operation',
5641
- minWidth: 260
5657
+ _react2.default.createElement(Select, { label: '' + step.destinationProvider, type: 'brand', style: { height: 40 }, menuAlign: 'right',
5658
+ onSelect: this.addDefaultResourceGroup, values: destinationSchema, title: 'Add Target Object',
5659
+ minWidth: 260, fieldPropLabel: 'name'
5642
5660
  })
5643
5661
  ) : null
5644
5662
  ),
@@ -16976,7 +16994,7 @@ module.exports =
16976
16994
  };
16977
16995
  }
16978
16996
 
16979
- function callGenerateRecipe(tenantId, appId, typeGuid, title, piGuid, mappingGuidDeleteThis) {
16997
+ function callGenerateRecipe(tenantId, appId, typeGuid, title, piGuid, mappingGuid, destinationMetadata) {
16980
16998
  return function (dispatch, getState, api) {
16981
16999
  var _getState6 = getState(),
16982
17000
  config = _getState6.config;
@@ -16989,7 +17007,8 @@ module.exports =
16989
17007
  "integrationTypeId": 2, // 1 = Lingk, 2 = Salesforce
16990
17008
  "name": title,
16991
17009
  "integrationTypeGuid": typeGuid,
16992
- "schemaMappingGuid": mappingGuidDeleteThis
17010
+ "schemaMappingGuid": mappingGuid,
17011
+ "destinationMetadata": destinationMetadata
16993
17012
  }
16994
17013
  }).then(function (res) {
16995
17014
  return res;
@@ -16997,16 +17016,17 @@ module.exports =
16997
17016
  };
16998
17017
  }
16999
17018
 
17000
- function submitWizardData(tenantId, appId, bundles, mappings, configuration, title, deployment, typeGuid, onGenerate, onFinish) {
17019
+ function submitWizardData(tenantId, appId, bundles, mappings, configuration, title, deployment, typeGuid, onGenerate, onFinish, destinationMetadata) {
17001
17020
  return function (dispatch) {
17002
17021
  dispatch(callPostBundles(tenantId, appId, bundles)).then(function (bundlePack) {
17003
17022
  dispatch(callPostMapping(tenantId, appId, mappings)).then(function (map) {
17004
17023
  dispatch(callPostProductizedIntegration(tenantId, appId, map.schemaMappingGuid, bundlePack.bundlePackGuid, configuration, title, typeGuid)).then(function (pi) {
17005
17024
  if (map.mappings && map.mappings.length > 0 && deployment) {
17006
- dispatch(callGenerateRecipe(tenantId, appId, typeGuid, title, pi.productizedIntegrationGuid, map.schemaMappingGuid)).then(function (generatedRecipe) {
17025
+ dispatch(callGenerateRecipe(tenantId, appId, typeGuid, title, pi.productizedIntegrationGuid, map.schemaMappingGuid, destinationMetadata)).then(function (generatedRecipe) {
17007
17026
  onGenerate();
17008
17027
  if (deployment) {
17009
17028
  if (deployment.type === 'once') {
17029
+ dispatch(callDeployTrigger(generatedRecipe, pi.productizedIntegrationGuid, map.schemaMappingGuid)); //deploy anyway, so user can schedule later
17010
17030
  dispatch(callExecuteTransformer(generatedRecipe.Id)).then(function (response) {
17011
17031
  dispatch(callLookupLogData(response.externalExecutionId, 0, onFinish, generatedRecipe, pi.productizedIntegrationGuid, map.schemaMappingGuid));
17012
17032
  });
@@ -17119,11 +17139,13 @@ module.exports =
17119
17139
 
17120
17140
  var TRANS_API_URL = config.TRANS_API_URL;
17121
17141
 
17122
- return api.put('transformer/deploy/' + generatedRecipe.BaseId, {
17142
+ return api.put('transformer/deploy/' + generatedRecipe.Id, {
17123
17143
  endpoint: TRANS_API_URL,
17124
17144
  data: { deployed: true }
17125
17145
  }).then(function () {
17126
- onFinish(generatedRecipe, piGuid, mapGuid);
17146
+ if (onFinish) {
17147
+ onFinish(generatedRecipe, piGuid, mapGuid);
17148
+ }
17127
17149
  });
17128
17150
  };
17129
17151
  }
@@ -17156,10 +17178,13 @@ module.exports =
17156
17178
  return api.get(tenantId + '/productizedintegrations', {
17157
17179
  endpoint: TRANS_API_URL
17158
17180
  }).then(function (data) {
17181
+ var PI = data.find(function (pi) {
17182
+ return pi.ProductizedIntegrationGuid === piGuid;
17183
+ });
17159
17184
  var config = {};
17160
17185
  var savedSourceEndpoint = null;
17161
17186
  var savedDestinationEndpoint = null;
17162
- data[0].Configuration.forEach(function (c) {
17187
+ PI.Configuration.forEach(function (c) {
17163
17188
  config[c.Key] = c.Value;
17164
17189
  if (c.Key === 'sourceEndpoint') {
17165
17190
  savedSourceEndpoint = c.Value;
@@ -17172,7 +17197,7 @@ module.exports =
17172
17197
  type: types.SET_WIZARD_SAVED_CONFIGURATION,
17173
17198
  data: config
17174
17199
  });
17175
- return Promise.all([dispatch(tryGetMetadata(tenantId, accountId, 'source', providers.source, metadataEndpoints.source, savedSourceEndpoint)), dispatch(tryGetMetadata(tenantId, accountId, 'destination', providers.destination, metadataEndpoints.destination, savedDestinationEndpoint)), dispatch(callGetMapping(tenantId, accountId, data[0].SchemaMappingGuid)), dispatch(callGetBundles(tenantId, accountId, data[0].BundlePackGuid)), dispatch(callGetTrigger(data[0].TransformerBaseId))]);
17200
+ return Promise.all([dispatch(tryGetMetadata(tenantId, accountId, 'source', providers.source, metadataEndpoints.source, savedSourceEndpoint)), dispatch(tryGetMetadata(tenantId, accountId, 'destination', providers.destination, metadataEndpoints.destination, savedDestinationEndpoint)), dispatch(callGetMapping(tenantId, accountId, PI.SchemaMappingGuid)), dispatch(callGetBundles(tenantId, accountId, PI.BundlePackGuid)), dispatch(callGetTrigger(PI.TransformerBaseId))]);
17176
17201
  });
17177
17202
  };
17178
17203
  } else return function (dispatch) {
@@ -18285,7 +18310,7 @@ module.exports =
18285
18310
 
18286
18311
  var _react2 = _interopRequireDefault(_react);
18287
18312
 
18288
- var _reduxForm = __webpack_require__(3);
18313
+ var _reduxForm = __webpack_require__(4);
18289
18314
 
18290
18315
  var _validate = __webpack_require__(6);
18291
18316
 
@@ -18369,7 +18394,7 @@ module.exports =
18369
18394
 
18370
18395
  var _react2 = _interopRequireDefault(_react);
18371
18396
 
18372
- var _reduxForm = __webpack_require__(3);
18397
+ var _reduxForm = __webpack_require__(4);
18373
18398
 
18374
18399
  var _validate = __webpack_require__(6);
18375
18400
 
@@ -18572,7 +18597,7 @@ module.exports =
18572
18597
 
18573
18598
  var _react2 = _interopRequireDefault(_react);
18574
18599
 
18575
- var _reduxForm = __webpack_require__(3);
18600
+ var _reduxForm = __webpack_require__(4);
18576
18601
 
18577
18602
  var _navButtons = __webpack_require__(5);
18578
18603
 
@@ -18753,7 +18778,7 @@ module.exports =
18753
18778
 
18754
18779
  var _react2 = _interopRequireDefault(_react);
18755
18780
 
18756
- var _reduxForm = __webpack_require__(3);
18781
+ var _reduxForm = __webpack_require__(4);
18757
18782
 
18758
18783
  var _validate = __webpack_require__(6);
18759
18784
 
@@ -18861,7 +18886,26 @@ module.exports =
18861
18886
  nav = _props3.nav,
18862
18887
  reset = _props3.reset,
18863
18888
  step = _props3.step,
18864
- formValues = _props3.formValues;
18889
+ formValues = _props3.formValues,
18890
+ change = _props3.change;
18891
+
18892
+
18893
+ var disable = true;
18894
+ if (step.options && formValues.deployment) {
18895
+ if (formValues.deployment.type === 'daily') {
18896
+ if (formValues.deployment.dailySchedule) {
18897
+ disable = false;
18898
+ }
18899
+ } else if (formValues.deployment.type === 'repeating') {
18900
+ var f = parseInt(formValues.deployment.frequency, 10);
18901
+ var u = formValues.deployment.frequencyUnit;
18902
+ if (u && f && (u === 'Minutes' && f > 14 && f <= 60 || u === 'Hours' && f > 0 && f <= 24)) {
18903
+ disable = false;
18904
+ }
18905
+ } else if (formValues.deployment.type === 'once') {
18906
+ disable = false;
18907
+ }
18908
+ }
18865
18909
 
18866
18910
  return _react2.default.createElement(
18867
18911
  'form',
@@ -18922,7 +18966,11 @@ module.exports =
18922
18966
  _react2.default.createElement(
18923
18967
  'div',
18924
18968
  { style: { width: 100, display: 'inline-block', verticalAlign: 'top' } },
18925
- _react2.default.createElement(_reduxForm.Field, { name: 'deployment.frequency', type: 'number', component: inputs.rfInput, label: 'Frequency' })
18969
+ _react2.default.createElement(inputs.Input, { type: 'number', value: formValues.deployment.frequency,
18970
+ onChange: function onChange(e) {
18971
+ return change('deployment.frequency', e.target.value);
18972
+ }, label: 'Frequency'
18973
+ })
18926
18974
  ),
18927
18975
  _react2.default.createElement(
18928
18976
  'div',
@@ -18935,7 +18983,7 @@ module.exports =
18935
18983
  ) : null
18936
18984
  ),
18937
18985
  _react2.default.createElement('br', null),
18938
- _react2.default.createElement(_navButtons2.default, { handleSubmit: handleSubmit, nav: nav, reset: reset, inputs: inputs }),
18986
+ _react2.default.createElement(_navButtons2.default, { finishDisabled: disable, handleSubmit: handleSubmit, nav: nav, reset: reset, inputs: inputs }),
18939
18987
  _react2.default.createElement('br', null),
18940
18988
  _react2.default.createElement('br', null)
18941
18989
  );
@@ -18971,7 +19019,7 @@ module.exports =
18971
19019
 
18972
19020
  var _react2 = _interopRequireDefault(_react);
18973
19021
 
18974
- var _reduxForm = __webpack_require__(3);
19022
+ var _reduxForm = __webpack_require__(4);
18975
19023
 
18976
19024
  var _validate = __webpack_require__(6);
18977
19025
 
@@ -19248,7 +19296,7 @@ module.exports =
19248
19296
 
19249
19297
  var _react2 = _interopRequireDefault(_react);
19250
19298
 
19251
- var _reduxForm = __webpack_require__(3);
19299
+ var _reduxForm = __webpack_require__(4);
19252
19300
 
19253
19301
  var _validate = __webpack_require__(6);
19254
19302
 
@@ -19349,7 +19397,7 @@ module.exports =
19349
19397
 
19350
19398
  var _react2 = _interopRequireDefault(_react);
19351
19399
 
19352
- var _reduxForm = __webpack_require__(3);
19400
+ var _reduxForm = __webpack_require__(4);
19353
19401
 
19354
19402
  var _validate = __webpack_require__(6);
19355
19403
 
@@ -19592,7 +19640,7 @@ module.exports =
19592
19640
 
19593
19641
  var _react2 = _interopRequireDefault(_react);
19594
19642
 
19595
- var _reduxForm = __webpack_require__(3);
19643
+ var _reduxForm = __webpack_require__(4);
19596
19644
 
19597
19645
  var _validate = __webpack_require__(6);
19598
19646
 
@@ -19708,7 +19756,7 @@ module.exports =
19708
19756
 
19709
19757
  var _react2 = _interopRequireDefault(_react);
19710
19758
 
19711
- var _reduxForm = __webpack_require__(3);
19759
+ var _reduxForm = __webpack_require__(4);
19712
19760
 
19713
19761
  var _validate = __webpack_require__(6);
19714
19762
 
@@ -19806,7 +19854,7 @@ module.exports =
19806
19854
 
19807
19855
  var _react2 = _interopRequireDefault(_react);
19808
19856
 
19809
- var _reduxForm = __webpack_require__(3);
19857
+ var _reduxForm = __webpack_require__(4);
19810
19858
 
19811
19859
  var _validate = __webpack_require__(6);
19812
19860
 
@@ -19941,7 +19989,7 @@ module.exports =
19941
19989
 
19942
19990
  var _react2 = _interopRequireDefault(_react);
19943
19991
 
19944
- var _reduxForm = __webpack_require__(3);
19992
+ var _reduxForm = __webpack_require__(4);
19945
19993
 
19946
19994
  var _validate = __webpack_require__(6);
19947
19995
 
@@ -20182,6 +20230,8 @@ module.exports =
20182
20230
  }, {
20183
20231
  key: 'render',
20184
20232
  value: function render() {
20233
+ var _this2 = this;
20234
+
20185
20235
  var _props10 = this.props,
20186
20236
  inputs = _props10.inputs,
20187
20237
  handleSubmit = _props10.handleSubmit,
@@ -20207,14 +20257,19 @@ module.exports =
20207
20257
  _react2.default.createElement(
20208
20258
  'div',
20209
20259
  { style: { fontSize: 20, display: 'inline-block' } },
20210
- 'Build Sync Operations'
20260
+ 'Map ',
20261
+ step.sourceProvider,
20262
+ ' Objects to ',
20263
+ step.destinationProvider
20211
20264
  ),
20212
20265
  _react2.default.createElement('br', null),
20213
20266
  _react2.default.createElement('br', null),
20214
20267
  _react2.default.createElement(
20215
20268
  'p',
20216
20269
  null,
20217
- 'Build Sync Operations by mapping one or many data sources to a single Salesforce target object.'
20270
+ 'Map one or many data sources to a single ',
20271
+ step.destinationProvider,
20272
+ ' target object.'
20218
20273
  ),
20219
20274
  _react2.default.createElement('br', null),
20220
20275
  resourceGroups && resourceGroups.length > 0 ? _react2.default.createElement(
@@ -20241,7 +20296,10 @@ module.exports =
20241
20296
  ) : null,
20242
20297
  resourceGroups && resourceGroups.length > 0 && this.state.showModal && _react2.default.createElement(_connectModal2.default, { inputs: inputs, hideModal: this.hideModal, bundle: this.state.selectedBundle,
20243
20298
  opened: this.state.showModal, change: change, resourceGroups: resourceGroups, step: step,
20244
- bundleIndex: this.state.selectedBundleIndex, sourceSchema: sourceSchema, destinationSchema: destinationSchema
20299
+ bundleIndex: this.state.selectedBundleIndex, sourceSchema: sourceSchema, destinationSchema: destinationSchema,
20300
+ update: function update() {
20301
+ return _this2.forceUpdate();
20302
+ }
20245
20303
  }),
20246
20304
  _react2.default.createElement('br', null),
20247
20305
  _react2.default.createElement(_navButtons2.default, { handleSubmit: handleSubmit, nav: nav, reset: reset, inputs: inputs,
@@ -20279,7 +20337,7 @@ module.exports =
20279
20337
 
20280
20338
  var _react2 = _interopRequireDefault(_react);
20281
20339
 
20282
- var _reduxForm = __webpack_require__(3);
20340
+ var _reduxForm = __webpack_require__(4);
20283
20341
 
20284
20342
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20285
20343
 
@@ -20375,10 +20433,10 @@ module.exports =
20375
20433
 
20376
20434
  var _react2 = _interopRequireDefault(_react);
20377
20435
 
20378
- var _reduxForm = __webpack_require__(3);
20379
-
20380
20436
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20381
20437
 
20438
+ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
20439
+
20382
20440
  var ConnectModal = function ConnectModal(props) {
20383
20441
  var inputs = props.inputs,
20384
20442
  opened = props.opened,
@@ -20388,71 +20446,292 @@ module.exports =
20388
20446
  hideModal = props.hideModal,
20389
20447
  step = props.step,
20390
20448
  sourceSchema = props.sourceSchema,
20391
- destinationSchema = props.destinationSchema;
20449
+ destinationSchema = props.destinationSchema,
20450
+ change = props.change;
20392
20451
 
20393
20452
  var Modal = inputs.Modal;
20453
+ var Select = inputs.Select;
20454
+ var Button = inputs.Button;
20455
+
20456
+ var closeModal = function closeModal() {
20457
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20458
+ var group = rgs[bundleIndex];
20459
+ group.mappings = group.mappings.filter(function (m) {
20460
+ return !m.isExternalKeyMapping;
20461
+ });
20462
+ group.sourceKeys.forEach(function (sk, i) {
20463
+ group.mappings.push({
20464
+ isExternalKeyMapping: true,
20465
+ resourceFromName: group.sourceKeysObjects[i],
20466
+ propertyFromName: sk,
20467
+ resourceToName: group.name,
20468
+ propertyToName: group.customExternalKeys ? group.destinationKeys[i] : 'externalId'
20469
+ });
20470
+ });
20471
+ change('resourceGroups', rgs);
20472
+ hideModal();
20473
+ };
20474
+
20475
+ var clickTab = function clickTab(bool) {
20476
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20477
+ var group = rgs[bundleIndex];
20478
+ group.customExternalKeys = bool;
20479
+ change('resourceGroups', rgs);
20480
+ props.update();
20481
+ };
20482
+
20483
+ var addRow = function addRow() {
20484
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20485
+ var group = rgs[bundleIndex];
20486
+ group.sourceKeys.push('');
20487
+ group.destinationKeys.push('');
20488
+ change('resourceGroups', rgs);
20489
+ props.update();
20490
+ };
20491
+
20492
+ var deleteRow = function deleteRow(i) {
20493
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20494
+ var group = rgs[bundleIndex];
20495
+ group.sourceKeys.splice(i, 1);
20496
+ group.destinationKeys.splice(i, 1);
20497
+ change('resourceGroups', rgs);
20498
+ props.update();
20499
+ };
20500
+
20501
+ var selectSourceKeyForLingk = function selectSourceKeyForLingk(key, section) {
20502
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20503
+ var group = rgs[bundleIndex];
20504
+ group.sourceKeys = [key];
20505
+ group.sourceKeysObjects = [section];
20506
+ change('resourceGroups', rgs);
20507
+ props.update();
20508
+ };
20509
+
20510
+ var selectCustomSourceKey = function selectCustomSourceKey(key, section, i) {
20511
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20512
+ var group = rgs[bundleIndex];
20513
+ group.sourceKeys[i] = key;
20514
+ group.sourceKeysObjects[i] = section;
20515
+ change('resourceGroups', rgs);
20516
+ props.update();
20517
+ };
20518
+
20519
+ var selectCustomDestinationKey = function selectCustomDestinationKey(key, i) {
20520
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20521
+ var group = rgs[bundleIndex];
20522
+ group.destinationKeys[i] = key;
20523
+ change('resourceGroups', rgs);
20524
+ props.update();
20525
+ };
20526
+
20527
+ var sectionLabels = [];
20528
+ var sectionProviders = [];
20529
+ var vals = bundle.resources.map(function (br, i) {
20530
+ sectionLabels.push(br.name);
20531
+ sectionProviders.push(br.provider);
20532
+ return bundle.resources[i].provider === step.destinationProvider ? destinationSchema && destinationSchema.find(function (defaultRsc) {
20533
+ return defaultRsc.name === bundle.resources[i].name;
20534
+ }) && destinationSchema.find(function (defaultRsc) {
20535
+ return defaultRsc.name === bundle.resources[i].name;
20536
+ }).properties : sourceSchema && sourceSchema.find(function (defaultRsc) {
20537
+ return defaultRsc.name === bundle.resources[i].name;
20538
+ }) && sourceSchema.find(function (defaultRsc) {
20539
+ return defaultRsc.name === bundle.resources[i].name;
20540
+ }).properties;
20541
+ });
20394
20542
 
20395
20543
  return _react2.default.createElement(
20396
20544
  Modal,
20397
- { opened: opened, hideModal: hideModal, title: 'Connect Source to Target' },
20545
+ { opened: opened, hideModal: closeModal, title: 'Connect Source to Target' },
20398
20546
  _react2.default.createElement(
20399
20547
  'div',
20400
20548
  null,
20401
- _react2.default.createElement(
20402
- 'p',
20403
- null,
20404
- 'Choose a Unique Key from both the Data Source and the Data Target.'
20405
- ),
20406
- _react2.default.createElement(
20407
- 'p',
20408
- null,
20409
- 'The chosen Source Key will be saved into ',
20410
- step.destinationProvider,
20411
- ' to prevent duplicate records.'
20412
- ),
20413
- _react2.default.createElement('br', null),
20414
20549
  _react2.default.createElement(
20415
20550
  'div',
20416
- { style: { display: 'inline-block', width: '50%' } },
20551
+ { className: 'connect-modal-tabs' },
20417
20552
  _react2.default.createElement(
20418
20553
  'div',
20419
- { className: 'labelz' },
20420
- 'Data Source Unique Key'
20554
+ { onClick: function onClick() {
20555
+ return clickTab(false);
20556
+ },
20557
+ className: 'connect-modal-tab' + (!resourceGroups[bundleIndex].customExternalKeys ? ' connect-modal-tab-selected' : '') },
20558
+ 'Use Lingk Unique ID',
20559
+ _react2.default.createElement('div', { className: 'connect-modal-tab-bar' })
20421
20560
  ),
20422
- _react2.default.createElement(_reduxForm.Field, { component: inputs.rfSelect, type: 'input', colorType: 'brand',
20423
- defaultLabel: bundle.resources[0].provider === step.destinationProvider ? 'Choose Key From ' + bundle.resources[0].name + ' (' + step.destinationProvider + ')' : 'Choose Key From ' + bundle.resources[0].name, buttonLabel: 'Choose Key',
20424
- name: 'resourceGroups.' + bundleIndex + '.sourceKey', selectedValue: resourceGroups[bundleIndex].sourceKey,
20425
- values: bundle.resources[0].provider === step.destinationProvider ? destinationSchema && destinationSchema.find(function (defaultRsc) {
20426
- return defaultRsc.name === bundle.resources[0].name;
20427
- }) && destinationSchema.find(function (defaultRsc) {
20428
- return defaultRsc.name === bundle.resources[0].name;
20429
- }).properties : sourceSchema && sourceSchema.find(function (defaultRsc) {
20430
- return defaultRsc.name === bundle.resources[0].name;
20431
- }) && sourceSchema.find(function (defaultRsc) {
20432
- return defaultRsc.name === bundle.resources[0].name;
20433
- }).properties
20434
- })
20561
+ _react2.default.createElement(
20562
+ 'div',
20563
+ { onClick: function onClick() {
20564
+ return clickTab(true);
20565
+ },
20566
+ className: 'connect-modal-tab' + (resourceGroups[bundleIndex].customExternalKeys ? ' connect-modal-tab-selected' : '') },
20567
+ 'Use Custom Unique IDs',
20568
+ _react2.default.createElement('div', { className: 'connect-modal-tab-bar' })
20569
+ )
20435
20570
  ),
20436
- _react2.default.createElement(
20571
+ resourceGroups[bundleIndex].customExternalKeys ? _react2.default.createElement(
20572
+ 'div',
20573
+ { style: { padding: '1em' } },
20574
+ _react2.default.createElement(
20575
+ 'p',
20576
+ null,
20577
+ 'Choose one or more Unique Keys from both the Data Source and the Data Target. These keys will be used to keep records synchronized.'
20578
+ ),
20579
+ _react2.default.createElement(
20580
+ 'div',
20581
+ null,
20582
+ _react2.default.createElement(
20583
+ 'div',
20584
+ { className: 'external-keys-row' },
20585
+ _react2.default.createElement(
20586
+ 'div',
20587
+ { className: 'external-keys-column' },
20588
+ _react2.default.createElement(
20589
+ 'div',
20590
+ { className: 'labelz' },
20591
+ 'Data Source Unique Key'
20592
+ )
20593
+ ),
20594
+ _react2.default.createElement('div', { style: { width: '6%', height: 1, display: 'inline-block' } }),
20595
+ _react2.default.createElement(
20596
+ 'div',
20597
+ { className: 'external-keys-column' },
20598
+ _react2.default.createElement(
20599
+ 'div',
20600
+ { className: 'labelz' },
20601
+ 'Data Target Unique Key'
20602
+ )
20603
+ )
20604
+ ),
20605
+ resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys.map(function (sk, i) {
20606
+ return _react2.default.createElement(
20607
+ 'div',
20608
+ { className: 'external-keys-row', key: i },
20609
+ _react2.default.createElement(
20610
+ 'div',
20611
+ { className: 'external-keys-column' },
20612
+ _react2.default.createElement(Select, { label: sk || 'Choose Key', menuItemStyle: { height: 20, padding: '1px 8px' },
20613
+ onSelect: function onSelect(v, iii, rtid, section) {
20614
+ return selectCustomSourceKey(v, section, i);
20615
+ },
20616
+ type: 'brand', fieldPropLabel: 'label',
20617
+ values: vals, sectionLabels: sectionLabels, sectionLabelSuffix: 'Fields',
20618
+ selectedValues: resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys.map(function (ks) {
20619
+ return { label: ks };
20620
+ })
20621
+ })
20622
+ ),
20623
+ _react2.default.createElement(
20624
+ 'div',
20625
+ { style: { width: '6%', textAlign: 'center', display: 'inline-block' } },
20626
+ '\u2192'
20627
+ ),
20628
+ _react2.default.createElement(
20629
+ 'div',
20630
+ { className: 'external-keys-column' },
20631
+ _react2.default.createElement(Select, { label: resourceGroups[bundleIndex].destinationKeys && resourceGroups[bundleIndex].destinationKeys[i] || 'Choose Key',
20632
+ menuItemStyle: { height: 20, padding: '1px 8px' },
20633
+ onSelect: function onSelect(v, iii, rtid, section) {
20634
+ return selectCustomDestinationKey(v, i);
20635
+ }, type: 'brand',
20636
+ values: [destinationSchema && destinationSchema.find(function (defaultRsc) {
20637
+ return defaultRsc.name === bundle.name;
20638
+ }) && destinationSchema.find(function (defaultRsc) {
20639
+ return defaultRsc.name === bundle.name;
20640
+ }).properties],
20641
+ sectionLabels: [bundle.name], sectionLabelSuffix: 'Fields', fieldPropLabel: 'label',
20642
+ selectedValues: resourceGroups[bundleIndex].destinationKeys && resourceGroups[bundleIndex].destinationKeys.map(function (ks) {
20643
+ return { label: ks };
20644
+ })
20645
+ })
20646
+ ),
20647
+ i !== 0 && _react2.default.createElement(
20648
+ 'div',
20649
+ { className: 'delete-external-key-row', onClick: function onClick() {
20650
+ return deleteRow(i);
20651
+ } },
20652
+ _react2.default.createElement(
20653
+ 'svg',
20654
+ { xmlns: 'http://www.w3.org/2000/svg', className: 'delete-external-key-svg',
20655
+ style: { width: 18, height: 18 }, viewBox: '0 0 60 60' },
20656
+ _react2.default.createElement('path', { style: { strokeWidth: 5, strokeLinecap: 'round' },
20657
+ d: 'M 15.674663,15.572746 L 44.587629,44.485711 M 45.118838,15.420972 L 15.522889,45.016920' })
20658
+ )
20659
+ )
20660
+ );
20661
+ }),
20662
+ resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys.length < 5 && _react2.default.createElement(
20663
+ 'div',
20664
+ { style: { paddingTop: 10, width: '47%', textAlign: 'center' } },
20665
+ _react2.default.createElement(
20666
+ Button,
20667
+ { type: 'neutral', onClick: addRow },
20668
+ 'Add More Keys'
20669
+ )
20670
+ )
20671
+ )
20672
+ ) : _react2.default.createElement(
20437
20673
  'div',
20438
- { style: { display: 'inline-block', width: '50%' } },
20674
+ { style: { padding: '1em' } },
20675
+ _react2.default.createElement(
20676
+ 'p',
20677
+ null,
20678
+ 'Choose a Unique Key from a data source object. A corresponding unique external id field will be created in the ',
20679
+ step.destinationProvider,
20680
+ ' ',
20681
+ bundle.name,
20682
+ ' object to keep records synchronized.'
20683
+ ),
20439
20684
  _react2.default.createElement(
20440
20685
  'div',
20441
- { className: 'labelz' },
20442
- 'Data Target Unique Key'
20686
+ { className: 'external-keys-row' },
20687
+ _react2.default.createElement(
20688
+ 'div',
20689
+ { className: 'external-keys-column' },
20690
+ _react2.default.createElement(
20691
+ 'div',
20692
+ { className: 'labelz' },
20693
+ 'Data Source Unique Key'
20694
+ )
20695
+ ),
20696
+ _react2.default.createElement('div', { style: { width: '6%', height: 1, display: 'inline-block' } }),
20697
+ _react2.default.createElement(
20698
+ 'div',
20699
+ { className: 'external-keys-column' },
20700
+ _react2.default.createElement(
20701
+ 'div',
20702
+ { className: 'labelz' },
20703
+ 'Data Target Unique Key'
20704
+ )
20705
+ )
20443
20706
  ),
20444
- _react2.default.createElement(_reduxForm.Field, { component: inputs.rfSelect, type: 'input', colorType: 'brand',
20445
- defaultLabel: 'Choose Key From ' + bundle.name, buttonLabel: 'Choose Key',
20446
- name: 'resourceGroups.' + bundleIndex + '.destinationKey',
20447
- selectedValue: resourceGroups[bundleIndex].destinationKey,
20448
- values: destinationSchema && destinationSchema.find(function (defaultRsc) {
20449
- return defaultRsc.name === bundle.name;
20450
- }) && destinationSchema.find(function (defaultRsc) {
20451
- return defaultRsc.name === bundle.name;
20452
- }).properties
20453
- })
20707
+ _react2.default.createElement(
20708
+ 'div',
20709
+ { className: 'external-keys-row' },
20710
+ _react2.default.createElement(
20711
+ 'div',
20712
+ { className: 'external-keys-column' },
20713
+ _react2.default.createElement(Select, { label: resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys[0] || 'Choose Key', menuItemStyle: { height: 20, padding: '1px 8px' },
20714
+ onSelect: function onSelect(v, i, rtid, section) {
20715
+ return selectSourceKeyForLingk(v, section);
20716
+ }, type: 'brand',
20717
+ values: vals, sectionLabels: sectionLabels, sectionLabelSuffix: 'Fields', fieldPropLabel: 'label',
20718
+ selectedValues: resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys.map(function (ks) {
20719
+ return { label: ks };
20720
+ })
20721
+ })
20722
+ ),
20723
+ _react2.default.createElement(
20724
+ 'div',
20725
+ { style: { width: '6%', textAlign: 'center', display: 'inline-block' } },
20726
+ '\u2192'
20727
+ ),
20728
+ _react2.default.createElement(
20729
+ 'div',
20730
+ { className: 'external-keys-column' },
20731
+ 'Lingk External ID'
20732
+ )
20733
+ )
20454
20734
  ),
20455
- _react2.default.createElement('br', null),
20456
20735
  _react2.default.createElement('br', null)
20457
20736
  )
20458
20737
  );
@@ -20538,6 +20817,11 @@ module.exports =
20538
20817
  var resourceGroups = [].concat(_toConsumableArray(formValues['resourceGroups']));
20539
20818
  var rscGroup = resourceGroups[resourceGroupIndex];
20540
20819
 
20820
+ //cant overwrite externalKey mapping
20821
+ if (rscGroup.mappings && rscGroup.mappings.find(function (m) {
20822
+ return m.propertyToName === field && m.isExternalKeyMapping;
20823
+ })) return;
20824
+
20541
20825
  //cant map multiple to same destination field
20542
20826
  rscGroup.mappings = rscGroup.mappings && rscGroup.mappings.filter(function (m) {
20543
20827
  return m.propertyToName !== field;
@@ -20657,7 +20941,11 @@ module.exports =
20657
20941
  _react2.default.createElement('div', { style: { height: 9 } }),
20658
20942
  schema && schema.find(function (r) {
20659
20943
  return r.name === rsc.name;
20660
- }).properties.map(function (field, ii) {
20944
+ }).properties.sort(function (a, b) {
20945
+ if (a.label < b.label) return -1;
20946
+ if (a.label > b.label) return 1;
20947
+ return 0;
20948
+ }).map(function (field, ii) {
20661
20949
  var style = {
20662
20950
  paddingLeft: 5,
20663
20951
  background: selectedField && selectedField === field.label ? '#dfe0e0' : 'initial',
@@ -20707,7 +20995,11 @@ module.exports =
20707
20995
  { className: 'scrolly', style: { height: 256, padding: '8px 12px' } },
20708
20996
  destinationSchema && destinationSchema.find(function (r) {
20709
20997
  return r.name === group.name;
20710
- }).properties.map(function (field, i) {
20998
+ }).properties.sort(function (a, b) {
20999
+ if (a.label < b.label) return -1;
21000
+ if (a.label > b.label) return 1;
21001
+ return 0;
21002
+ }).map(function (field, i) {
20711
21003
  return _react2.default.createElement(
20712
21004
  'div',
20713
21005
  { key: i, className: selectedField ? "wizard-map-field" : '', style: {
@@ -20739,7 +21031,7 @@ module.exports =
20739
21031
  /* 192 */
20740
21032
  /***/ function(module, exports, __webpack_require__) {
20741
21033
 
20742
- "use strict";
21034
+ 'use strict';
20743
21035
 
20744
21036
  Object.defineProperty(exports, "__esModule", {
20745
21037
  value: true
@@ -20756,24 +21048,26 @@ module.exports =
20756
21048
  var group = props.group;
20757
21049
 
20758
21050
  return _react2.default.createElement(
20759
- "div",
21051
+ 'div',
20760
21052
  { style: {
20761
21053
  minHeight: group.resources.length * 19
20762
21054
  } },
20763
21055
  group.resources && group.resources.map(function (rsc, ii) {
20764
21056
  var mapz = group.mappings && group.mappings.filter(function (m) {
20765
21057
  return m.resourceFromName === rsc.name;
21058
+ }).sort(function (a) {
21059
+ if (a.isExternalKeyMapping) return -1;else return 1;
20766
21060
  });
20767
21061
  var fieldNum = mapz ? mapz.length : 0;
20768
21062
  return _react2.default.createElement(
20769
- "div",
21063
+ 'div',
20770
21064
  { key: ii, style: {
20771
21065
  marginTop: ii !== 0 ? 10 : 0,
20772
21066
  height: fieldNum * 19,
20773
21067
  minHeight: 18
20774
21068
  } },
20775
21069
  _react2.default.createElement(
20776
- "strong",
21070
+ 'strong',
20777
21071
  null,
20778
21072
  rsc.name
20779
21073
  )
@@ -20788,34 +21082,36 @@ module.exports =
20788
21082
  clearOneMapping = props.clearOneMapping;
20789
21083
 
20790
21084
  return _react2.default.createElement(
20791
- "div",
21085
+ 'div',
20792
21086
  null,
20793
21087
  group.resources && group.resources.map(function (rsc, iii) {
20794
21088
  var mapz = group.mappings && group.mappings.filter(function (m) {
20795
21089
  return m.resourceFromName === rsc.name;
21090
+ }).sort(function (a) {
21091
+ if (a.isExternalKeyMapping) return -1;else return 1;
20796
21092
  });
20797
21093
  return _react2.default.createElement(
20798
- "div",
21094
+ 'div',
20799
21095
  { key: iii, style: {
20800
21096
  marginTop: iii !== 0 ? 10 : 0,
20801
21097
  minHeight: 18
20802
21098
  } },
20803
21099
  mapz && mapz.map(function (m, iv) {
20804
21100
  return _react2.default.createElement(
20805
- "div",
21101
+ 'div',
20806
21102
  { key: iv, style: { height: 19 } },
20807
- _react2.default.createElement(
20808
- "div",
20809
- { className: "x-clear-mapping",
21103
+ !m.isExternalKeyMapping ? _react2.default.createElement(
21104
+ 'div',
21105
+ { className: 'x-clear-mapping',
20810
21106
  onClick: function onClick() {
20811
21107
  clearOneMapping(i, m);
20812
21108
  } },
20813
- "x"
20814
- ),
21109
+ 'x'
21110
+ ) : _react2.default.createElement('div', { style: { width: 30, display: 'inline-block' } }),
20815
21111
  _react2.default.createElement(
20816
- "div",
20817
- { className: "mapping-entry" },
20818
- m.propertyFromName + " \u2192 " + m.propertyToName
21112
+ 'div',
21113
+ { className: 'mapping-entry' },
21114
+ m.propertyFromName + ' \u2192 ' + m.propertyToName
20819
21115
  )
20820
21116
  );
20821
21117
  })
@@ -20831,79 +21127,85 @@ module.exports =
20831
21127
 
20832
21128
  var icons = {
20833
21129
  none: _react2.default.createElement(
20834
- "svg",
20835
- { fill: "#CCCCCC", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20836
- _react2.default.createElement("path", { d: "M12 8V4l8 8-8 8v-4H4V8z" }),
20837
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" })
21130
+ 'svg',
21131
+ { fill: '#CCCCCC', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21132
+ _react2.default.createElement('path', { d: 'M12 8V4l8 8-8 8v-4H4V8z' }),
21133
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
20838
21134
  ),
20839
21135
  trim: _react2.default.createElement(
20840
- "svg",
20841
- { fill: "#000000", height: "16", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20842
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20843
- _react2.default.createElement("circle", { cx: "6", cy: "18", fill: "none", r: "2" }),
20844
- _react2.default.createElement("circle", { cx: "12", cy: "12", fill: "none", r: ".5" }),
20845
- _react2.default.createElement("circle", { cx: "6", cy: "6", fill: "none", r: "2" }),
20846
- _react2.default.createElement("path", { d: "M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z" })
21136
+ 'svg',
21137
+ { fill: '#000000', height: '16', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21138
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21139
+ _react2.default.createElement('circle', { cx: '6', cy: '18', fill: 'none', r: '2' }),
21140
+ _react2.default.createElement('circle', { cx: '12', cy: '12', fill: 'none', r: '.5' }),
21141
+ _react2.default.createElement('circle', { cx: '6', cy: '6', fill: 'none', r: '2' }),
21142
+ _react2.default.createElement('path', { d: 'M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z' })
20847
21143
  ),
20848
21144
  split: _react2.default.createElement(
20849
- "svg",
20850
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20851
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20852
- _react2.default.createElement("path", { d: "M14 4l2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z" })
21145
+ 'svg',
21146
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21147
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21148
+ _react2.default.createElement('path', { d: 'M14 4l2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z' })
20853
21149
  ),
20854
21150
  merge: _react2.default.createElement(
20855
- "svg",
20856
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20857
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20858
- _react2.default.createElement("path", { d: "M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z" })
21151
+ 'svg',
21152
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21153
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21154
+ _react2.default.createElement('path', { d: 'M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z' })
20859
21155
  ),
20860
21156
  date: _react2.default.createElement(
20861
- "svg",
20862
- { fill: "#000000", height: "18", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20863
- _react2.default.createElement("path", { d: "M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z" }),
20864
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" })
21157
+ 'svg',
21158
+ { fill: '#000000', height: '18', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21159
+ _react2.default.createElement('path', { d: 'M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z' }),
21160
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
20865
21161
  ),
20866
21162
  sigma: _react2.default.createElement(
20867
- "svg",
20868
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20869
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20870
- _react2.default.createElement("path", { d: "M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z" })
21163
+ 'svg',
21164
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21165
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21166
+ _react2.default.createElement('path', { d: 'M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z' })
20871
21167
  ),
20872
21168
  link: _react2.default.createElement(
20873
- "svg",
20874
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20875
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20876
- _react2.default.createElement("path", { d: "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" })
21169
+ 'svg',
21170
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21171
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21172
+ _react2.default.createElement('path', { d: 'M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z' })
20877
21173
  ),
20878
21174
  swap: _react2.default.createElement(
20879
- "svg",
20880
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20881
- _react2.default.createElement("path", { d: "M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z" }),
20882
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" })
21175
+ 'svg',
21176
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21177
+ _react2.default.createElement('path', { d: 'M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z' }),
21178
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
20883
21179
  )
20884
21180
  };
20885
21181
 
20886
21182
  return _react2.default.createElement(
20887
- "div",
21183
+ 'div',
20888
21184
  null,
20889
21185
  group.resources && group.resources.map(function (rsc, iii) {
20890
21186
  var mapz = group.mappings && group.mappings.filter(function (m) {
20891
21187
  return m.resourceFromName === rsc.name;
21188
+ }).sort(function (a) {
21189
+ if (a.isExternalKeyMapping) return -1;else return 1;
20892
21190
  });
20893
21191
  return _react2.default.createElement(
20894
- "div",
21192
+ 'div',
20895
21193
  { key: iii, style: {
20896
21194
  marginTop: iii !== 0 ? 10 : 0,
20897
21195
  minHeight: 18
20898
21196
  } },
20899
21197
  mapz && mapz.map(function (m, iv) {
20900
- return _react2.default.createElement(
20901
- "div",
20902
- { key: iv, className: "map-table-transform-icon", onClick: function onClick() {
20903
- return selectMapping(i, m);
20904
- } },
20905
- m.transformations && m.transformations[0] && icons[m.transformations[0].type] || icons['none']
20906
- );
21198
+ if (!m.isExternalKeyMapping) {
21199
+ return _react2.default.createElement(
21200
+ 'div',
21201
+ { key: iv, className: 'map-table-transform-icon', onClick: function onClick() {
21202
+ return selectMapping(i, m);
21203
+ } },
21204
+ m.transformations && m.transformations[0] && icons[m.transformations[0].type] || icons['none']
21205
+ );
21206
+ } else {
21207
+ return _react2.default.createElement('div', { key: iv, style: { height: 19, width: 24 } });
21208
+ }
20907
21209
  })
20908
21210
  );
20909
21211
  })
@@ -20912,7 +21214,7 @@ module.exports =
20912
21214
 
20913
21215
  var MapTableDestinationRow = exports.MapTableDestinationRow = function MapTableDestinationRow(props) {
20914
21216
  return _react2.default.createElement(
20915
- "strong",
21217
+ 'strong',
20916
21218
  { style: { fontSize: 16, whiteSpace: 'wrap' } },
20917
21219
  props.group.name
20918
21220
  );
@@ -20953,7 +21255,7 @@ module.exports =
20953
21255
 
20954
21256
  var _reactDraggable2 = _interopRequireDefault(_reactDraggable);
20955
21257
 
20956
- var _reduxForm = __webpack_require__(3);
21258
+ var _reduxForm = __webpack_require__(4);
20957
21259
 
20958
21260
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20959
21261
 
@@ -21323,8 +21625,10 @@ module.exports =
21323
21625
  onSelect: function onSelect(v, i, rtid, section) {
21324
21626
  return addDefaultEntity(resourceGroupIndex, v, i, section);
21325
21627
  }, type: 'neutral',
21326
- selectedValues: resourceGroups && resourceGroups[resourceGroupIndex] && resourceGroups[resourceGroupIndex].resources, values: [sourceSchema, filteredDestinationSchema],
21327
- sectionLabels: [step.sourceProvider, step.destinationProvider]
21628
+ selectedValues: resourceGroups && resourceGroups[resourceGroupIndex] && resourceGroups[resourceGroupIndex].resources,
21629
+ values: [sourceSchema, filteredDestinationSchema],
21630
+ sectionLabels: [step.sourceProvider, step.destinationProvider],
21631
+ sectionLabelSuffix: 'Objects', fieldPropLabel: 'name'
21328
21632
  })
21329
21633
  ) : null
21330
21634
  ) : null
@@ -21356,7 +21660,7 @@ module.exports =
21356
21660
 
21357
21661
  var _react2 = _interopRequireDefault(_react);
21358
21662
 
21359
- var _reduxForm = __webpack_require__(3);
21663
+ var _reduxForm = __webpack_require__(4);
21360
21664
 
21361
21665
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21362
21666
 
@@ -21445,7 +21749,7 @@ module.exports =
21445
21749
  { opened: opened, hideModal: hideModal, title: 'Transform Data' },
21446
21750
  _react2.default.createElement(
21447
21751
  'div',
21448
- null,
21752
+ { style: { padding: '1em' } },
21449
21753
  _react2.default.createElement(
21450
21754
  'div',
21451
21755
  null,
@@ -21560,7 +21864,7 @@ module.exports =
21560
21864
 
21561
21865
  var _react2 = _interopRequireDefault(_react);
21562
21866
 
21563
- var _reduxForm = __webpack_require__(3);
21867
+ var _reduxForm = __webpack_require__(4);
21564
21868
 
21565
21869
  var _reactRedux = __webpack_require__(141);
21566
21870
 
@@ -21685,23 +21989,37 @@ module.exports =
21685
21989
  var mappings = [];
21686
21990
  bundles.forEach(function (group, index) {
21687
21991
 
21688
- // get resource + name + destinationKey
21992
+ // get resource + name + destinationKeys
21689
21993
  var destinationResource = _this2.props.wizard.destinationMetadata ? _this2.props.wizard.destinationMetadata.find(function (rsc) {
21690
21994
  return rsc.name === group.name;
21691
21995
  }) : group;
21692
21996
  group.name = destinationResource.type;
21693
- group.destinationKey = destinationResource && destinationResource.properties && destinationResource.properties.find(function (prop) {
21694
- return prop.label === group.destinationKey;
21695
- }).name;
21696
-
21697
- // get sourceKey (check both metadatas)
21698
- var dataSourceMetadata = group.resources[0].provider === _this2.props.providers['destination'] ? _this2.props.wizard.destinationMetadata : _this2.props.wizard.sourceMetadata;
21699
- var sourceResource = dataSourceMetadata.find(function (metaRsc) {
21700
- return metaRsc.name === group.resources[0].name;
21997
+ if (group.destinationKeys) {
21998
+ group.destinationKeys = group.destinationKeys.map(function (dk) {
21999
+ return destinationResource && destinationResource.properties && destinationResource.properties.find(function (prop) {
22000
+ return prop.label === dk;
22001
+ }).name || "lingk__externalId__c";
22002
+ });
22003
+ } else {
22004
+ group.destinationKeys = ["lingk__externalId__c"];
22005
+ }
22006
+
22007
+ // get resource + name + sourceKeys
22008
+ var sourceKeysObjects = [];
22009
+ group.sourceKeys = group.sourceKeys.map(function (sk, i) {
22010
+ var sourceKeyResourceProvider = group.resources.find(function (r) {
22011
+ return r.name === group.sourceKeysObjects[i];
22012
+ }).provider;
22013
+ var dataSourceMetadata = sourceKeyResourceProvider === _this2.props.providers['destination'] ? _this2.props.wizard.destinationMetadata : _this2.props.wizard.sourceMetadata;
22014
+ var sourceResource = dataSourceMetadata.find(function (metaRsc) {
22015
+ return metaRsc.name === group.sourceKeysObjects[i];
22016
+ });
22017
+ sourceKeysObjects.push(sourceResource.type);
22018
+ return sourceResource && sourceResource.properties && sourceResource.properties.find(function (prop) {
22019
+ return prop.label === sk;
22020
+ }).name;
21701
22021
  });
21702
- group.sourceKey = sourceResource && sourceResource.properties && sourceResource.properties.find(function (prop) {
21703
- return prop.label === group.sourceKey;
21704
- }).name;
22022
+ group.sourceKeysObjects = sourceKeysObjects;
21705
22023
 
21706
22024
  if (group.mappings) {
21707
22025
  group.mappings.forEach(function (singleMapping) {
@@ -21740,7 +22058,7 @@ module.exports =
21740
22058
  resourceToName: destinationResource.type,
21741
22059
  propertyToName: destinationProperty.name,
21742
22060
  bundleIndex: index
21743
- }, singleMapping.dataSourceIsDestinationEntity && { isDestinationResource: true }, singleMapping.transformations && singleMapping.transformations.length > 0 && !singleMapping.transformations.every(function (t) {
22061
+ }, singleMapping.isExternalKeyMapping && { isExternalKeyMapping: true }, singleMapping.dataSourceIsDestinationEntity && { isDestinationResource: true }, singleMapping.transformations && singleMapping.transformations.length > 0 && !singleMapping.transformations.every(function (t) {
21744
22062
  return t.type === 'none';
21745
22063
  }) && { transformations: singleMapping.transformations }));
21746
22064
  }
@@ -21808,7 +22126,7 @@ module.exports =
21808
22126
  tenantId = _props2.tenantId;
21809
22127
 
21810
22128
  if (true) {
21811
- actions.submitWizardData(tenantId, accountId, bundles, mappings, configuration, formValues.title || 'Banner for Salesforce', formValues.deployment || null, typeGuid, onGenerate, onFinish);
22129
+ actions.submitWizardData(tenantId, accountId, bundles, mappings, configuration, formValues.title || 'Banner for Salesforce', formValues.deployment || null, typeGuid, onGenerate, onFinish, this.props.wizard.destinationMetadata || []);
21812
22130
  onSubmit({ complete: formValues.hasOwnProperty('deployment') });
21813
22131
  }
21814
22132
  actions.setWizardLoaded(false); // so wizard reloads config on 'restart'
@@ -22075,7 +22393,7 @@ module.exports =
22075
22393
  mode: 'destination'
22076
22394
  }, {
22077
22395
  type: 'schema',
22078
- title: 'Build Sync Operations',
22396
+ title: 'Object Mapping',
22079
22397
  mode: 'source'
22080
22398
  }, {
22081
22399
  type: 'filter',