@bigbinary/neeto-rules-frontend 2.7.27 → 2.7.29

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.
@@ -13,7 +13,7 @@ var neetoCist = require('@bigbinary/neeto-cist');
13
13
  var Container = require('@bigbinary/neeto-molecules/v2/Container');
14
14
  var Header = require('@bigbinary/neeto-molecules/v2/Header');
15
15
  var reactI18next = require('react-i18next');
16
- var index = require('../../index-BUcQsAbf.js');
16
+ var index = require('../../index-DnUyU-KI.js');
17
17
  var useCustomDataStore = require('../../useCustomDataStore-DPmWkEhs.js');
18
18
  var useUtilityStore = require('../../useUtilityStore-gtPhFvpI.js');
19
19
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
@@ -34,6 +34,7 @@ var utils$1 = require('../../utils-B3roKiff.js');
34
34
  var Up = require('@bigbinary/neeto-icons/Up');
35
35
  var Down = require('@bigbinary/neeto-icons/Down');
36
36
  var Info = require('@bigbinary/neeto-icons/Info');
37
+ var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
37
38
  require('../../useAutomationRulesApi-C1T2E1AN.js');
38
39
  require('@tanstack/react-query');
39
40
  require('@bigbinary/neeto-commons-frontend/react-utils');
@@ -49,7 +50,6 @@ require('@babel/runtime/helpers/toArray');
49
50
  require('@bigbinary/neeto-molecules/v2/PhoneNumber');
50
51
  require('react-select');
51
52
  require('../../constants-dLBadaIU.js');
52
- require('@bigbinary/neeto-commons-frontend/v2/initializers');
53
53
  require('@bigbinary/neeto-editor/v2/utils');
54
54
  require('zustand');
55
55
  require('@bigbinary/neeto-commons-frontend/initializers');
@@ -272,8 +272,8 @@ var useReplayFlash = function useReplayFlash(flashSeq) {
272
272
  };
273
273
 
274
274
  var _excluded$1 = ["children", "state", "active", "invalid", "onClick", "className", "dataTestid"];
275
- function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
276
- function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
275
+ function ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
276
+ function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
277
277
  var Token = function Token(_ref) {
278
278
  var children = _ref.children,
279
279
  _ref$state = _ref.state,
@@ -288,7 +288,7 @@ var Token = function Token(_ref) {
288
288
  rest = _objectWithoutProperties(_ref, _excluded$1);
289
289
  var isInteractive = typeof onClick === "function" && state !== TOKEN_STATE.DISABLED;
290
290
  var tokenRef = useReplayFlash(invalid);
291
- return /*#__PURE__*/jsxRuntime.jsx("span", _objectSpread$c(_objectSpread$c({
291
+ return /*#__PURE__*/jsxRuntime.jsx("span", _objectSpread$e(_objectSpread$e({
292
292
  "data-testid": dataTestid,
293
293
  ref: tokenRef,
294
294
  role: isInteractive ? "button" : undefined,
@@ -326,8 +326,8 @@ var Values = function Values(_ref) {
326
326
  });
327
327
  };
328
328
 
329
- function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
330
- function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
329
+ function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
330
+ function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
331
331
  var humanize = function humanize(value) {
332
332
  return String(value !== null && value !== void 0 ? value : "").replace(/[._]/g, " ").trim();
333
333
  };
@@ -773,7 +773,7 @@ var normalizeTriggers = function normalizeTriggers(triggers) {
773
773
  };
774
774
  var normalizeSchema = function normalizeSchema() {
775
775
  var rawSchema = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
776
- return ramda.mergeDeepRight(DEFAULT_SCHEMA, _objectSpread$b(_objectSpread$b({}, rawSchema), {}, {
776
+ return ramda.mergeDeepRight(DEFAULT_SCHEMA, _objectSpread$d(_objectSpread$d({}, rawSchema), {}, {
777
777
  triggers: normalizeTriggers(rawSchema.triggers)
778
778
  }));
779
779
  };
@@ -904,34 +904,69 @@ var setTriggers = function setTriggers(_ref33) {
904
904
  value: triggers
905
905
  };
906
906
  };
907
- var setPerformer = function setPerformer(_ref34) {
907
+
908
+ // Removed saved triggers must be sent with _destroy, or the backend keeps them.
909
+ var replaceTriggers = function replaceTriggers(_ref34) {
908
910
  var schema = _ref34.schema,
909
- performer = _ref34.performer;
911
+ values = _ref34.values,
912
+ triggers = _ref34.triggers;
913
+ var fieldKey = fieldKeysFromSchema(schema).triggers;
914
+ var keptIds = triggers.map(function (trigger) {
915
+ return trigger === null || trigger === void 0 ? void 0 : trigger.id;
916
+ }).filter(Boolean);
917
+ var removed = asArray(valueAt({
918
+ values: values,
919
+ key: fieldKey
920
+ })).filter(function (trigger) {
921
+ return (trigger === null || trigger === void 0 ? void 0 : trigger.id) && !keptIds.includes(trigger.id);
922
+ }).map(function (trigger) {
923
+ return _objectSpread$d(_objectSpread$d({}, trigger), {}, {
924
+ _destroy: true
925
+ });
926
+ });
927
+ var edits = [setTriggers({
928
+ schema: schema,
929
+ triggers: triggers
930
+ })];
931
+ if (removed.length) {
932
+ var _values$fieldKey;
933
+ // eslint-disable-next-line security/detect-object-injection
934
+ var deleted = asArray(values === null || values === void 0 || (_values$fieldKey = values[fieldKey]) === null || _values$fieldKey === void 0 ? void 0 : _values$fieldKey.deleted);
935
+ edits.push({
936
+ path: "".concat(fieldKey, ".deleted"),
937
+ value: [].concat(_toConsumableArray(deleted), _toConsumableArray(removed))
938
+ });
939
+ }
940
+ return edits;
941
+ };
942
+ var setPerformer = function setPerformer(_ref35) {
943
+ var schema = _ref35.schema,
944
+ performer = _ref35.performer;
910
945
  return {
911
946
  path: "".concat(fieldKeysFromSchema(schema).performer, ".value"),
912
947
  value: performer
913
948
  };
914
949
  };
915
- var setActions = function setActions(_ref35) {
916
- var schema = _ref35.schema,
917
- actions = _ref35.actions;
950
+ var setActions = function setActions(_ref36) {
951
+ var schema = _ref36.schema,
952
+ actions = _ref36.actions;
918
953
  return {
919
954
  path: "".concat(fieldKeysFromSchema(schema).actions, ".value"),
920
955
  value: actions
921
956
  };
922
957
  };
923
- var setConditions = function setConditions(_ref36) {
924
- var schema = _ref36.schema,
925
- conditions = _ref36.conditions;
958
+ var setConditions = function setConditions(_ref37) {
959
+ var schema = _ref37.schema,
960
+ conditions = _ref37.conditions;
926
961
  return {
927
962
  path: "".concat(fieldKeysFromSchema(schema).conditions, ".value"),
928
963
  value: conditions
929
964
  };
930
965
  };
931
- var setConditionMode = function setConditionMode(_ref37) {
932
- var schema = _ref37.schema,
933
- conditions = _ref37.conditions,
934
- joinType = _ref37.joinType;
966
+ var setConditionMode = function setConditionMode(_ref38) {
967
+ var schema = _ref38.schema,
968
+ conditions = _ref38.conditions,
969
+ joinType = _ref38.joinType;
935
970
  return setConditions({
936
971
  schema: schema,
937
972
  conditions: conditions.map(function (condition) {
@@ -939,34 +974,34 @@ var setConditionMode = function setConditionMode(_ref37) {
939
974
  })
940
975
  });
941
976
  };
942
- var setDelay = function setDelay(_ref38) {
943
- var schema = _ref38.schema,
944
- delay = _ref38.delay;
977
+ var setDelay = function setDelay(_ref39) {
978
+ var schema = _ref39.schema,
979
+ delay = _ref39.delay;
945
980
  return {
946
981
  path: "".concat(fieldKeysFromSchema(schema).delay, ".value"),
947
982
  value: delay !== null && delay !== void 0 ? delay : {}
948
983
  };
949
984
  };
950
- var setActive = function setActive(_ref39) {
951
- var schema = _ref39.schema,
952
- active = _ref39.active;
985
+ var setActive = function setActive(_ref40) {
986
+ var schema = _ref40.schema,
987
+ active = _ref40.active;
953
988
  return {
954
989
  path: "".concat(fieldKeysFromSchema(schema).status, ".value"),
955
990
  value: active ? STATUS_KEYS.ENABLED : STATUS_KEYS.DISABLED
956
991
  };
957
992
  };
958
- var setScope = function setScope(_ref40) {
959
- var schema = _ref40.schema,
960
- scope = _ref40.scope;
993
+ var setScope = function setScope(_ref41) {
994
+ var schema = _ref41.schema,
995
+ scope = _ref41.scope;
961
996
  return {
962
997
  path: "".concat(fieldKeysFromSchema(schema).scope, ".value"),
963
998
  value: scope
964
999
  };
965
1000
  };
966
- var removeArrayItem = function removeArrayItem(_ref41) {
967
- var values = _ref41.values,
968
- fieldKey = _ref41.fieldKey,
969
- index = _ref41.index;
1001
+ var removeArrayItem = function removeArrayItem(_ref42) {
1002
+ var values = _ref42.values,
1003
+ fieldKey = _ref42.fieldKey,
1004
+ index = _ref42.index;
970
1005
  var list = asArray(valueAt({
971
1006
  values: values,
972
1007
  key: fieldKey
@@ -981,21 +1016,21 @@ var removeArrayItem = function removeArrayItem(_ref41) {
981
1016
  value: nextList
982
1017
  }];
983
1018
  if (removed !== null && removed !== void 0 && removed.id) {
984
- var _values$fieldKey;
1019
+ var _values$fieldKey2;
985
1020
  // eslint-disable-next-line security/detect-object-injection
986
- var deleted = asArray(values === null || values === void 0 || (_values$fieldKey = values[fieldKey]) === null || _values$fieldKey === void 0 ? void 0 : _values$fieldKey.deleted);
1021
+ var deleted = asArray(values === null || values === void 0 || (_values$fieldKey2 = values[fieldKey]) === null || _values$fieldKey2 === void 0 ? void 0 : _values$fieldKey2.deleted);
987
1022
  result.push({
988
1023
  path: "".concat(fieldKey, ".deleted"),
989
- value: [].concat(_toConsumableArray(deleted), [_objectSpread$b(_objectSpread$b({}, removed), {}, {
1024
+ value: [].concat(_toConsumableArray(deleted), [_objectSpread$d(_objectSpread$d({}, removed), {}, {
990
1025
  _destroy: true
991
1026
  })])
992
1027
  });
993
1028
  }
994
1029
  return result;
995
1030
  };
996
- var clearArrayItems = function clearArrayItems(_ref42) {
997
- var values = _ref42.values,
998
- fieldKey = _ref42.fieldKey;
1031
+ var clearArrayItems = function clearArrayItems(_ref43) {
1032
+ var values = _ref43.values,
1033
+ fieldKey = _ref43.fieldKey;
999
1034
  var list = asArray(valueAt({
1000
1035
  values: values,
1001
1036
  key: fieldKey
@@ -1003,7 +1038,7 @@ var clearArrayItems = function clearArrayItems(_ref42) {
1003
1038
  var removed = list.filter(function (item) {
1004
1039
  return item === null || item === void 0 ? void 0 : item.id;
1005
1040
  }).map(function (item) {
1006
- return _objectSpread$b(_objectSpread$b({}, item), {}, {
1041
+ return _objectSpread$d(_objectSpread$d({}, item), {}, {
1007
1042
  _destroy: true
1008
1043
  });
1009
1044
  });
@@ -1012,9 +1047,9 @@ var clearArrayItems = function clearArrayItems(_ref42) {
1012
1047
  value: []
1013
1048
  }];
1014
1049
  if (removed.length) {
1015
- var _values$fieldKey2;
1050
+ var _values$fieldKey3;
1016
1051
  // eslint-disable-next-line security/detect-object-injection
1017
- var deleted = asArray(values === null || values === void 0 || (_values$fieldKey2 = values[fieldKey]) === null || _values$fieldKey2 === void 0 ? void 0 : _values$fieldKey2.deleted);
1052
+ var deleted = asArray(values === null || values === void 0 || (_values$fieldKey3 = values[fieldKey]) === null || _values$fieldKey3 === void 0 ? void 0 : _values$fieldKey3.deleted);
1018
1053
  result.push({
1019
1054
  path: "".concat(fieldKey, ".deleted"),
1020
1055
  value: [].concat(_toConsumableArray(deleted), _toConsumableArray(removed))
@@ -1023,8 +1058,8 @@ var clearArrayItems = function clearArrayItems(_ref42) {
1023
1058
  return result;
1024
1059
  };
1025
1060
 
1026
- function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1027
- function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1061
+ function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1062
+ function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1028
1063
  var ConditionRow = function ConditionRow(_ref) {
1029
1064
  var _schema$conditions;
1030
1065
  var rule = _ref.rule,
@@ -1141,7 +1176,7 @@ var ConditionRow = function ConditionRow(_ref) {
1141
1176
  index: index
1142
1177
  });
1143
1178
  },
1144
- children: value ? /*#__PURE__*/jsxRuntime.jsx(Values, _objectSpread$a({}, value)) : t("neetoRules.form.addValue")
1179
+ children: value ? /*#__PURE__*/jsxRuntime.jsx(Values, _objectSpread$c({}, value)) : t("neetoRules.form.addValue")
1145
1180
  })]
1146
1181
  }) : /*#__PURE__*/jsxRuntime.jsx(Token, {
1147
1182
  active: isActive({
@@ -1174,7 +1209,7 @@ var ConditionRow = function ConditionRow(_ref) {
1174
1209
  position: "top"
1175
1210
  },
1176
1211
  onClick: handleAddCondition
1177
- }), handleRemove && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$a({
1212
+ }), handleRemove && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$c({
1178
1213
  "data-testid": "cond-remove-".concat(index),
1179
1214
  icon: Delete,
1180
1215
  size: "sm",
@@ -1213,8 +1248,8 @@ var Connector = function Connector(_ref) {
1213
1248
  });
1214
1249
  };
1215
1250
 
1216
- function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1217
- function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1251
+ function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1252
+ function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1218
1253
  var DelayRow = function DelayRow(_ref) {
1219
1254
  var rule = _ref.rule,
1220
1255
  handleToken = _ref.onToken,
@@ -1266,7 +1301,7 @@ var DelayRow = function DelayRow(_ref) {
1266
1301
  })]
1267
1302
  }), handleRemove && /*#__PURE__*/jsxRuntime.jsx("div", {
1268
1303
  className: "mb-row-actions",
1269
- children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$9({
1304
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$b({
1270
1305
  "data-testid": "rule-delay-remove",
1271
1306
  icon: Delete,
1272
1307
  size: "sm",
@@ -1356,8 +1391,8 @@ var MetaBlock = function MetaBlock(_ref) {
1356
1391
  });
1357
1392
  };
1358
1393
 
1359
- function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1360
- function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1394
+ function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1395
+ function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1361
1396
  var itemLabel = function itemLabel(item) {
1362
1397
  return (item === null || item === void 0 ? void 0 : item.label) || (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || String(item !== null && item !== void 0 ? item : "");
1363
1398
  };
@@ -1519,7 +1554,7 @@ var ScopeRow = function ScopeRow(_ref2) {
1519
1554
  type: BUILDER_ANCHORS.SCOPE
1520
1555
  });
1521
1556
  }
1522
- }), handleRemoveScope && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$8({
1557
+ }), handleRemoveScope && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$a({
1523
1558
  "data-testid": "scope-remove-".concat(index),
1524
1559
  icon: Delete,
1525
1560
  size: "sm",
@@ -1536,8 +1571,8 @@ var ScopeRow = function ScopeRow(_ref2) {
1536
1571
  });
1537
1572
  };
1538
1573
 
1539
- function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1540
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1574
+ function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1575
+ function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1541
1576
  var ActionRow = function ActionRow(_ref) {
1542
1577
  var schema = _ref.schema,
1543
1578
  action = _ref.action,
@@ -1630,7 +1665,7 @@ var ActionRow = function ActionRow(_ref) {
1630
1665
  index: index
1631
1666
  });
1632
1667
  },
1633
- children: configValueParts ? /*#__PURE__*/jsxRuntime.jsx(Values, _objectSpread$7({}, configValueParts)) : sentencify(configValuePlaceholder) || t("neetoRules.builder.selectFallback")
1668
+ children: configValueParts ? /*#__PURE__*/jsxRuntime.jsx(Values, _objectSpread$9({}, configValueParts)) : sentencify(configValuePlaceholder) || t("neetoRules.builder.selectFallback")
1634
1669
  })]
1635
1670
  }, "config") : null;
1636
1671
  var recipientToken = needsRecipient ? /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
@@ -1733,7 +1768,7 @@ var ActionRow = function ActionRow(_ref) {
1733
1768
  index: index
1734
1769
  });
1735
1770
  },
1736
- children: configValueParts ? /*#__PURE__*/jsxRuntime.jsx(Values, _objectSpread$7({}, configValueParts)) : sentencify(configValuePlaceholder) || paramPlaceholder
1771
+ children: configValueParts ? /*#__PURE__*/jsxRuntime.jsx(Values, _objectSpread$9({}, configValueParts)) : sentencify(configValuePlaceholder) || paramPlaceholder
1737
1772
  }) : configLabel && /*#__PURE__*/jsxRuntime.jsxs(Token, {
1738
1773
  className: "mb-tok-medium",
1739
1774
  dataTestid: "action-config-".concat(index),
@@ -1769,7 +1804,7 @@ var ActionRow = function ActionRow(_ref) {
1769
1804
  position: "top"
1770
1805
  },
1771
1806
  onClick: handleAddAction
1772
- }), handleRemove && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$7({
1807
+ }), handleRemove && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$9({
1773
1808
  "data-testid": "action-remove-".concat(index),
1774
1809
  icon: Delete,
1775
1810
  size: "sm",
@@ -1876,8 +1911,8 @@ var ThenBlock = function ThenBlock(_ref) {
1876
1911
  });
1877
1912
  };
1878
1913
 
1879
- function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1880
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1914
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1915
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1881
1916
  var WhenBlock = function WhenBlock(_ref) {
1882
1917
  var _schema$actor;
1883
1918
  var rule = _ref.rule,
@@ -2032,7 +2067,7 @@ var WhenBlock = function WhenBlock(_ref) {
2032
2067
  position: "top"
2033
2068
  },
2034
2069
  onClick: handleAddCondition
2035
- }), handleClearTrigger && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$6({
2070
+ }), handleClearTrigger && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$8({
2036
2071
  "data-testid": "trigger-clear",
2037
2072
  icon: Delete,
2038
2073
  size: "sm",
@@ -2051,8 +2086,8 @@ var WhenBlock = function WhenBlock(_ref) {
2051
2086
  };
2052
2087
 
2053
2088
  var _excluded = ["type"];
2054
- function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2055
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2089
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2090
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2056
2091
  var usePaneCascade = function usePaneCascade(schema) {
2057
2092
  var _useUtilityStore = useUtilityStore.useUtilityStore(shallow.useShallow(function (store) {
2058
2093
  return {
@@ -2070,7 +2105,7 @@ var usePaneCascade = function usePaneCascade(schema) {
2070
2105
  type: type,
2071
2106
  variant: "builder",
2072
2107
  size: LARGE_PANEL_TYPES.includes(type) ? "large" : "small",
2073
- data: _objectSpread$5({
2108
+ data: _objectSpread$7({
2074
2109
  schema: schema
2075
2110
  }, data)
2076
2111
  });
@@ -2082,7 +2117,7 @@ var usePaneCascade = function usePaneCascade(schema) {
2082
2117
  rest = _objectWithoutProperties(token, _excluded);
2083
2118
  openType({
2084
2119
  type: type,
2085
- data: _objectSpread$5({
2120
+ data: _objectSpread$7({
2086
2121
  anchor: anchor
2087
2122
  }, rest)
2088
2123
  });
@@ -2115,9 +2150,10 @@ var useRuleModel = function useRuleModel(schema) {
2115
2150
  return {
2116
2151
  rule: rule,
2117
2152
  fieldKeys: fieldKeysFromSchema(schema),
2118
- setTriggers: function setTriggers$1(triggers) {
2119
- return apply(setTriggers({
2153
+ setTriggers: function setTriggers(triggers) {
2154
+ return applyAll(replaceTriggers({
2120
2155
  schema: schema,
2156
+ values: values,
2121
2157
  triggers: triggers
2122
2158
  }));
2123
2159
  },
@@ -2199,8 +2235,8 @@ var useRuleModel = function useRuleModel(schema) {
2199
2235
  };
2200
2236
  };
2201
2237
 
2202
- function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2203
- function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2238
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2239
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2204
2240
  var triggerValue = function triggerValue(option) {
2205
2241
  var _ref, _option$eventValue;
2206
2242
  return (_ref = (_option$eventValue = option.eventValue) !== null && _option$eventValue !== void 0 ? _option$eventValue : option.value) !== null && _ref !== void 0 ? _ref : option.id;
@@ -2374,11 +2410,42 @@ var recipientsFor = function recipientsFor(_ref11) {
2374
2410
  if (option !== null && option !== void 0 && option.recipients) return option.recipients;
2375
2411
  return ((_schema$actions8 = schema.actions) === null || _schema$actions8 === void 0 ? void 0 : _schema$actions8.recipients) || [];
2376
2412
  };
2377
- var nextTriggers = function nextTriggers(_ref12) {
2378
- var _schema$triggers;
2413
+
2414
+ // Each action runs once per rule, so hide recipients another row already uses.
2415
+ var availableRecipients = function availableRecipients(_ref12) {
2379
2416
  var schema = _ref12.schema,
2380
2417
  rule = _ref12.rule,
2381
- value = _ref12.value;
2418
+ index = _ref12.index;
2419
+ var action = actionAt({
2420
+ rule: rule,
2421
+ index: index
2422
+ });
2423
+ var channel = channelOf({
2424
+ schema: schema,
2425
+ action: action
2426
+ });
2427
+ var usedNames = rule.actions.filter(function (_, position) {
2428
+ return position !== index;
2429
+ }).map(function (item) {
2430
+ return item.name;
2431
+ }).filter(Boolean);
2432
+ return recipientsFor({
2433
+ schema: schema,
2434
+ action: action
2435
+ }).filter(function (recipient) {
2436
+ var _schema$actions9, _schema$actions9$reso;
2437
+ var name = (_schema$actions9 = schema.actions) === null || _schema$actions9 === void 0 || (_schema$actions9$reso = _schema$actions9.resolveName) === null || _schema$actions9$reso === void 0 ? void 0 : _schema$actions9$reso.call(_schema$actions9, {
2438
+ channel: channel,
2439
+ recipient: optionValue(recipient)
2440
+ });
2441
+ return !name || !usedNames.includes(name);
2442
+ });
2443
+ };
2444
+ var nextTriggers = function nextTriggers(_ref13) {
2445
+ var _schema$triggers;
2446
+ var schema = _ref13.schema,
2447
+ rule = _ref13.rule,
2448
+ value = _ref13.value;
2382
2449
  if ((_schema$triggers = schema.triggers) !== null && _schema$triggers !== void 0 && _schema$triggers.multi) {
2383
2450
  var names = ramda.pluck("name", rule.triggers);
2384
2451
  return names.includes(value) ? neetoCist.removeBy({
@@ -2387,16 +2454,16 @@ var nextTriggers = function nextTriggers(_ref12) {
2387
2454
  name: value
2388
2455
  }]);
2389
2456
  }
2390
- return [_objectSpread$4(_objectSpread$4({}, rule.triggers[0]), {}, {
2457
+ return [_objectSpread$6(_objectSpread$6({}, rule.triggers[0]), {}, {
2391
2458
  name: value
2392
2459
  })];
2393
2460
  };
2394
- var nextConditionAt = function nextConditionAt(_ref13) {
2461
+ var nextConditionAt = function nextConditionAt(_ref14) {
2395
2462
  var _field$allowMatching;
2396
- var schema = _ref13.schema,
2397
- rule = _ref13.rule,
2398
- index = _ref13.index,
2399
- value = _ref13.value;
2463
+ var schema = _ref14.schema,
2464
+ rule = _ref14.rule,
2465
+ index = _ref14.index,
2466
+ value = _ref14.value;
2400
2467
  var field = findField({
2401
2468
  schema: schema,
2402
2469
  value: value
@@ -2408,20 +2475,20 @@ var nextConditionAt = function nextConditionAt(_ref13) {
2408
2475
  var first = field === null || field === void 0 || (_field$allowMatching = field.allowMatching) === null || _field$allowMatching === void 0 ? void 0 : _field$allowMatching[0];
2409
2476
  var defaultVerb = first && !((field === null || field === void 0 ? void 0 : field.noValueForVerbs) || []).includes(first) ? first : undefined;
2410
2477
  var verb = ((field === null || field === void 0 ? void 0 : field.allowMatching) || []).includes(previous.verb) ? previous.verb : defaultVerb;
2411
- return _objectSpread$4(_objectSpread$4({}, previous), {}, {
2478
+ return _objectSpread$6(_objectSpread$6({}, previous), {}, {
2412
2479
  field: value,
2413
2480
  kind: field === null || field === void 0 ? void 0 : field.kind,
2414
2481
  verb: verb,
2415
2482
  metadata: {}
2416
2483
  });
2417
2484
  };
2418
- var nextActionAt = function nextActionAt(_ref14) {
2419
- var _schema$actions9;
2420
- var schema = _ref14.schema,
2421
- rule = _ref14.rule,
2422
- index = _ref14.index,
2423
- value = _ref14.value;
2424
- if (!((_schema$actions9 = schema.actions) !== null && _schema$actions9 !== void 0 && _schema$actions9.resolveName)) {
2485
+ var nextActionAt = function nextActionAt(_ref15) {
2486
+ var _schema$actions0;
2487
+ var schema = _ref15.schema,
2488
+ rule = _ref15.rule,
2489
+ index = _ref15.index,
2490
+ value = _ref15.value;
2491
+ if (!((_schema$actions0 = schema.actions) !== null && _schema$actions0 !== void 0 && _schema$actions0.resolveName)) {
2425
2492
  var option = findActionOption({
2426
2493
  schema: schema,
2427
2494
  name: value
@@ -2432,7 +2499,7 @@ var nextActionAt = function nextActionAt(_ref14) {
2432
2499
  });
2433
2500
  if (option !== null && option !== void 0 && option.recipients) {
2434
2501
  var _channelChanged = _prev.channel !== value;
2435
- return _objectSpread$4(_objectSpread$4({}, _prev), {}, {
2502
+ return _objectSpread$6(_objectSpread$6({}, _prev), {}, {
2436
2503
  channel: value,
2437
2504
  recipient: _channelChanged ? undefined : _prev.recipient,
2438
2505
  name: "",
@@ -2440,7 +2507,7 @@ var nextActionAt = function nextActionAt(_ref14) {
2440
2507
  metadata: _channelChanged ? {} : _prev.metadata
2441
2508
  });
2442
2509
  }
2443
- return _objectSpread$4(_objectSpread$4({}, _prev), {}, {
2510
+ return _objectSpread$6(_objectSpread$6({}, _prev), {}, {
2444
2511
  channel: undefined,
2445
2512
  recipient: undefined,
2446
2513
  name: value,
@@ -2459,16 +2526,16 @@ var nextActionAt = function nextActionAt(_ref14) {
2459
2526
  var channelChanged = prevChannel !== value;
2460
2527
  var recipient = channelChanged ? undefined : prev.recipient;
2461
2528
  if (channelChanged) {
2462
- var _schema$actions0;
2529
+ var _schema$actions1;
2463
2530
  var channelRecipients =
2464
2531
  // eslint-disable-next-line security/detect-object-injection
2465
- ((_schema$actions0 = schema.actions) === null || _schema$actions0 === void 0 || (_schema$actions0 = _schema$actions0.recipientsByChannel) === null || _schema$actions0 === void 0 ? void 0 : _schema$actions0[value]) || [];
2532
+ ((_schema$actions1 = schema.actions) === null || _schema$actions1 === void 0 || (_schema$actions1 = _schema$actions1.recipientsByChannel) === null || _schema$actions1 === void 0 ? void 0 : _schema$actions1[value]) || [];
2466
2533
  if (channelRecipients.length === 1) {
2467
2534
  var _channelRecipients = _slicedToArray(channelRecipients, 1);
2468
2535
  recipient = _channelRecipients[0];
2469
2536
  }
2470
2537
  }
2471
- return _objectSpread$4(_objectSpread$4({}, prev), {}, {
2538
+ return _objectSpread$6(_objectSpread$6({}, prev), {}, {
2472
2539
  channel: value,
2473
2540
  recipient: recipient,
2474
2541
  name: schema.actions.resolveName({
@@ -2478,11 +2545,11 @@ var nextActionAt = function nextActionAt(_ref14) {
2478
2545
  metadata: channelChanged ? {} : prev.metadata
2479
2546
  });
2480
2547
  };
2481
- var appendScopeItem = function appendScopeItem(_ref15) {
2548
+ var appendScopeItem = function appendScopeItem(_ref16) {
2482
2549
  var _sc$requiresPhone;
2483
- var schema = _ref15.schema,
2484
- rule = _ref15.rule,
2485
- value = _ref15.value;
2550
+ var schema = _ref16.schema,
2551
+ rule = _ref16.rule,
2552
+ value = _ref16.value;
2486
2553
  var sc = schema.scope || {};
2487
2554
  var option = (sc.options || []).find(function (candidate) {
2488
2555
  return optionValue(candidate) === value;
@@ -2495,16 +2562,16 @@ var appendScopeItem = function appendScopeItem(_ref15) {
2495
2562
  schema: schema,
2496
2563
  item: option
2497
2564
  });
2498
- return (phoneFields === null || phoneFields === void 0 ? void 0 : phoneFields.length) === 1 ? _objectSpread$4(_objectSpread$4({}, option), {}, {
2565
+ return (phoneFields === null || phoneFields === void 0 ? void 0 : phoneFields.length) === 1 ? _objectSpread$6(_objectSpread$6({}, option), {}, {
2499
2566
  phoneField: phoneFields[0].value
2500
2567
  }) : option;
2501
2568
  };
2502
- var nextActionRecipientAt = function nextActionRecipientAt(_ref16) {
2503
- var _schema$actions1;
2504
- var schema = _ref16.schema,
2505
- rule = _ref16.rule,
2506
- index = _ref16.index,
2507
- value = _ref16.value;
2569
+ var nextActionRecipientAt = function nextActionRecipientAt(_ref17) {
2570
+ var _schema$actions10;
2571
+ var schema = _ref17.schema,
2572
+ rule = _ref17.rule,
2573
+ index = _ref17.index,
2574
+ value = _ref17.value;
2508
2575
  var prev = actionAt({
2509
2576
  rule: rule,
2510
2577
  index: index
@@ -2513,21 +2580,21 @@ var nextActionRecipientAt = function nextActionRecipientAt(_ref16) {
2513
2580
  schema: schema,
2514
2581
  action: prev
2515
2582
  });
2516
- return _objectSpread$4(_objectSpread$4({}, prev), {}, {
2583
+ return _objectSpread$6(_objectSpread$6({}, prev), {}, {
2517
2584
  recipient: value,
2518
- name: (_schema$actions1 = schema.actions) !== null && _schema$actions1 !== void 0 && _schema$actions1.resolveName ? schema.actions.resolveName({
2585
+ name: (_schema$actions10 = schema.actions) !== null && _schema$actions10 !== void 0 && _schema$actions10.resolveName ? schema.actions.resolveName({
2519
2586
  channel: channel,
2520
2587
  recipient: value
2521
2588
  }) : value
2522
2589
  });
2523
2590
  };
2524
- var descriptorFor = function descriptorFor(_ref17) {
2591
+ var descriptorFor = function descriptorFor(_ref18) {
2525
2592
  var _schema$actor2;
2526
- var anchor = _ref17.anchor,
2527
- schema = _ref17.schema,
2528
- rule = _ref17.rule,
2529
- index = _ref17.index,
2530
- stepKey = _ref17.stepKey;
2593
+ var anchor = _ref18.anchor,
2594
+ schema = _ref18.schema,
2595
+ rule = _ref18.rule,
2596
+ index = _ref18.index,
2597
+ stepKey = _ref18.stepKey;
2531
2598
  switch (anchor) {
2532
2599
  case BUILDER_ANCHORS.TRIGGER_ADD:
2533
2600
  case BUILDER_ANCHORS.TRIGGER_REPLACE:
@@ -2640,19 +2707,19 @@ var descriptorFor = function descriptorFor(_ref17) {
2640
2707
  case BUILDER_ANCHORS.ACTION_ADD:
2641
2708
  case BUILDER_ANCHORS.ACTION_CHANNEL:
2642
2709
  {
2643
- var _schema$actions11, _channelOf;
2710
+ var _schema$actions12, _channelOf;
2644
2711
  var isSwap = anchor === BUILDER_ANCHORS.ACTION_CHANNEL;
2645
2712
  var channelMetaFor = function channelMetaFor(value) {
2646
- var _schema$actions10;
2713
+ var _schema$actions11;
2647
2714
  return (
2648
2715
  // eslint-disable-next-line security/detect-object-injection
2649
- ((_schema$actions10 = schema.actions) === null || _schema$actions10 === void 0 || (_schema$actions10 = _schema$actions10.channelMeta) === null || _schema$actions10 === void 0 ? void 0 : _schema$actions10[value]) || {}
2716
+ ((_schema$actions11 = schema.actions) === null || _schema$actions11 === void 0 || (_schema$actions11 = _schema$actions11.channelMeta) === null || _schema$actions11 === void 0 ? void 0 : _schema$actions11[value]) || {}
2650
2717
  );
2651
2718
  };
2652
2719
 
2653
2720
  // Both panes list the host's actions in the order it declared them;
2654
2721
  // re-ranking only the swap pane made the two disagree.
2655
- var sourceOptions = ((_schema$actions11 = schema.actions) === null || _schema$actions11 === void 0 ? void 0 : _schema$actions11.options) || [];
2722
+ var sourceOptions = ((_schema$actions12 = schema.actions) === null || _schema$actions12 === void 0 ? void 0 : _schema$actions12.options) || [];
2656
2723
  return {
2657
2724
  title: isSwap ? i18next.t("neetoRules.builder.panes.actionSwapTitle") : i18next.t("neetoRules.builder.panes.actionAddTitle"),
2658
2725
  subtitle: isSwap ? i18next.t("neetoRules.builder.panes.actionSwapSubtitle") : i18next.t("neetoRules.builder.panes.actionAddSubtitle"),
@@ -2687,7 +2754,7 @@ var descriptorFor = function descriptorFor(_ref17) {
2687
2754
  }
2688
2755
  case BUILDER_ANCHORS.ACTION_RECIPIENT:
2689
2756
  {
2690
- var _schema$actions12;
2757
+ var _schema$actions13;
2691
2758
  var action = actionAt({
2692
2759
  rule: rule,
2693
2760
  index: index
@@ -2697,7 +2764,7 @@ var descriptorFor = function descriptorFor(_ref17) {
2697
2764
  action: action
2698
2765
  });
2699
2766
  // eslint-disable-next-line security/detect-object-injection
2700
- var meta = ((_schema$actions12 = schema.actions) === null || _schema$actions12 === void 0 || (_schema$actions12 = _schema$actions12.channelMeta) === null || _schema$actions12 === void 0 ? void 0 : _schema$actions12[channel]) || {};
2767
+ var meta = ((_schema$actions13 = schema.actions) === null || _schema$actions13 === void 0 || (_schema$actions13 = _schema$actions13.channelMeta) === null || _schema$actions13 === void 0 ? void 0 : _schema$actions13[channel]) || {};
2701
2768
  var option = findActionOption({
2702
2769
  schema: schema,
2703
2770
  name: channel
@@ -2705,9 +2772,10 @@ var descriptorFor = function descriptorFor(_ref17) {
2705
2772
  return {
2706
2773
  title: meta.recipientTitle || (option === null || option === void 0 ? void 0 : option.recipientTitle) || i18next.t("neetoRules.builder.panes.recipientTitle"),
2707
2774
  subtitle: meta.recipientSubtitle || (option === null || option === void 0 ? void 0 : option.recipientSubtitle) || i18next.t("neetoRules.builder.panes.recipientSubtitle"),
2708
- options: recipientsFor({
2775
+ options: availableRecipients({
2709
2776
  schema: schema,
2710
- action: action
2777
+ rule: rule,
2778
+ index: index
2711
2779
  }).map(function (recipient) {
2712
2780
  return {
2713
2781
  label: recipient.label,
@@ -2815,14 +2883,14 @@ var descriptorFor = function descriptorFor(_ref17) {
2815
2883
  };
2816
2884
  }
2817
2885
  };
2818
- var commitFor = function commitFor(_ref18) {
2819
- var anchor = _ref18.anchor,
2820
- schema = _ref18.schema,
2821
- rule = _ref18.rule,
2822
- index = _ref18.index,
2823
- stepKey = _ref18.stepKey,
2824
- value = _ref18.value,
2825
- helpers = _ref18.helpers;
2886
+ var commitFor = function commitFor(_ref19) {
2887
+ var anchor = _ref19.anchor,
2888
+ schema = _ref19.schema,
2889
+ rule = _ref19.rule,
2890
+ index = _ref19.index,
2891
+ stepKey = _ref19.stepKey,
2892
+ value = _ref19.value,
2893
+ helpers = _ref19.helpers;
2826
2894
  var setTriggers = helpers.setTriggers,
2827
2895
  setPerformer = helpers.setPerformer,
2828
2896
  setConditionMode = helpers.setConditionMode,
@@ -2842,7 +2910,7 @@ var commitFor = function commitFor(_ref18) {
2842
2910
  }]));
2843
2911
  return "stay";
2844
2912
  }
2845
- setTriggers([_objectSpread$4(_objectSpread$4({}, rule.triggers[0]), {}, {
2913
+ setTriggers([_objectSpread$6(_objectSpread$6({}, rule.triggers[0]), {}, {
2846
2914
  name: value
2847
2915
  })]);
2848
2916
  var leadTime = (_schema$triggers5 = schema.triggers) === null || _schema$triggers5 === void 0 ? void 0 : _schema$triggers5.leadTime;
@@ -2927,14 +2995,14 @@ var commitFor = function commitFor(_ref18) {
2927
2995
  return "close";
2928
2996
  }
2929
2997
  };
2930
- var continueTargetFor = function continueTargetFor(_ref19) {
2998
+ var continueTargetFor = function continueTargetFor(_ref20) {
2931
2999
  var _schema$actor3;
2932
- var anchor = _ref19.anchor,
2933
- schema = _ref19.schema,
2934
- rule = _ref19.rule,
2935
- index = _ref19.index,
2936
- stepKey = _ref19.stepKey,
2937
- configPending = _ref19.configPending;
3000
+ var anchor = _ref20.anchor,
3001
+ schema = _ref20.schema,
3002
+ rule = _ref20.rule,
3003
+ index = _ref20.index,
3004
+ stepKey = _ref20.stepKey,
3005
+ configPending = _ref20.configPending;
2938
3006
  switch (anchor) {
2939
3007
  case BUILDER_ANCHORS.TRIGGER_ADD:
2940
3008
  case BUILDER_ANCHORS.TRIGGER_REPLACE:
@@ -3046,25 +3114,25 @@ var continueTargetFor = function continueTargetFor(_ref19) {
3046
3114
  return null;
3047
3115
  }
3048
3116
  };
3049
- var replaceAt = function replaceAt(_ref20) {
3050
- var list = _ref20.list,
3051
- index = _ref20.index,
3052
- item = _ref20.item;
3117
+ var replaceAt = function replaceAt(_ref21) {
3118
+ var list = _ref21.list,
3119
+ index = _ref21.index,
3120
+ item = _ref21.item;
3053
3121
  var next = _toConsumableArray(list);
3054
3122
  // eslint-disable-next-line security/detect-object-injection
3055
3123
  next[index] = item;
3056
3124
  return next;
3057
3125
  };
3058
- var applyPreview = function applyPreview(_ref21) {
3059
- var rule = _ref21.rule,
3060
- schema = _ref21.schema,
3061
- anchor = _ref21.anchor,
3062
- index = _ref21.index,
3063
- value = _ref21.value;
3126
+ var applyPreview = function applyPreview(_ref22) {
3127
+ var rule = _ref22.rule,
3128
+ schema = _ref22.schema,
3129
+ anchor = _ref22.anchor,
3130
+ index = _ref22.index,
3131
+ value = _ref22.value;
3064
3132
  switch (anchor) {
3065
3133
  case BUILDER_ANCHORS.TRIGGER_ADD:
3066
3134
  case BUILDER_ANCHORS.TRIGGER_REPLACE:
3067
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3135
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3068
3136
  triggers: Array.isArray(value) ? value.map(function (name) {
3069
3137
  return {
3070
3138
  name: name
@@ -3076,11 +3144,11 @@ var applyPreview = function applyPreview(_ref21) {
3076
3144
  })
3077
3145
  });
3078
3146
  case BUILDER_ANCHORS.TRIGGER_ACTOR:
3079
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3147
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3080
3148
  performer: value
3081
3149
  });
3082
3150
  case BUILDER_ANCHORS.COND_FIELD:
3083
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3151
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3084
3152
  conditions: replaceAt({
3085
3153
  list: rule.conditions,
3086
3154
  index: index,
@@ -3093,11 +3161,11 @@ var applyPreview = function applyPreview(_ref21) {
3093
3161
  })
3094
3162
  });
3095
3163
  case BUILDER_ANCHORS.COND_OP_TOGGLE:
3096
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3164
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3097
3165
  conditions: replaceAt({
3098
3166
  list: rule.conditions,
3099
3167
  index: index,
3100
- item: _objectSpread$4(_objectSpread$4({}, conditionAt({
3168
+ item: _objectSpread$6(_objectSpread$6({}, conditionAt({
3101
3169
  rule: rule,
3102
3170
  index: index
3103
3171
  })), {}, {
@@ -3106,12 +3174,12 @@ var applyPreview = function applyPreview(_ref21) {
3106
3174
  })
3107
3175
  });
3108
3176
  case BUILDER_ANCHORS.COND_CONNECTOR:
3109
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3177
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3110
3178
  conditionMode: value
3111
3179
  });
3112
3180
  case BUILDER_ANCHORS.ACTION_ADD:
3113
3181
  case BUILDER_ANCHORS.ACTION_CHANNEL:
3114
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3182
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3115
3183
  actions: replaceAt({
3116
3184
  list: rule.actions,
3117
3185
  index: index,
@@ -3124,7 +3192,7 @@ var applyPreview = function applyPreview(_ref21) {
3124
3192
  })
3125
3193
  });
3126
3194
  case BUILDER_ANCHORS.ACTION_RECIPIENT:
3127
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3195
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3128
3196
  actions: replaceAt({
3129
3197
  list: rule.actions,
3130
3198
  index: index,
@@ -3137,11 +3205,11 @@ var applyPreview = function applyPreview(_ref21) {
3137
3205
  })
3138
3206
  });
3139
3207
  case BUILDER_ANCHORS.SCOPE_PHONE_FIELD:
3140
- return _objectSpread$4(_objectSpread$4({}, rule), {}, {
3208
+ return _objectSpread$6(_objectSpread$6({}, rule), {}, {
3141
3209
  scope: replaceAt({
3142
3210
  list: rule.scope,
3143
3211
  index: index,
3144
- item: _objectSpread$4(_objectSpread$4({}, scopeItemAt({
3212
+ item: _objectSpread$6(_objectSpread$6({}, scopeItemAt({
3145
3213
  rule: rule,
3146
3214
  index: index
3147
3215
  })), {}, {
@@ -3154,8 +3222,8 @@ var applyPreview = function applyPreview(_ref21) {
3154
3222
  }
3155
3223
  };
3156
3224
 
3157
- function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3158
- function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3225
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3226
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3159
3227
  var Canvas = function Canvas(_ref) {
3160
3228
  var _schema$actor2, _ref6, _actorOptions$0$value, _schema$scope, _schema$conditions, _schema$triggers, _schema$delay, _schema$meta$showName, _schema$meta;
3161
3229
  var schema = _ref.schema;
@@ -3189,7 +3257,7 @@ var Canvas = function Canvas(_ref) {
3189
3257
  builderPreview = _useUtilityStore.builderPreview,
3190
3258
  panelState = _useUtilityStore.panelState;
3191
3259
  var displayRule = react.useMemo(function () {
3192
- return builderPreview ? applyPreview(_objectSpread$3({
3260
+ return builderPreview ? applyPreview(_objectSpread$5({
3193
3261
  rule: rule,
3194
3262
  schema: schema
3195
3263
  }, builderPreview)) : rule;
@@ -3577,7 +3645,115 @@ var CONDITION_VALUE_TYPES = {
3577
3645
  multiSelect: "multi-select",
3578
3646
  multiSelectCreate: "multi-select-create",
3579
3647
  number: "number",
3580
- email: "email"
3648
+ email: "email",
3649
+ date: "date"
3650
+ };
3651
+
3652
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3653
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3654
+ var EmailChannelFields = function EmailChannelFields(_ref) {
3655
+ var _getIn, _getIn2, _action$metadata;
3656
+ var name = _ref.name,
3657
+ option = _ref.option,
3658
+ action = _ref.action,
3659
+ options = _ref.options,
3660
+ hasRecipientField = _ref.hasRecipientField,
3661
+ hint = _ref.hint;
3662
+ var _useTranslation = reactI18next.useTranslation(),
3663
+ t = _useTranslation.t;
3664
+ var _useFormikContext = formik.useFormikContext(),
3665
+ values = _useFormikContext.values,
3666
+ errors = _useFormikContext.errors,
3667
+ touched = _useFormikContext.touched,
3668
+ setFieldValue = _useFormikContext.setFieldValue,
3669
+ setFieldTouched = _useFormikContext.setFieldTouched;
3670
+ var editorRef = react.useRef(null);
3671
+ var _useUtilityStore = useUtilityStore.useUtilityStore(shallow.useShallow(function (store) {
3672
+ return {
3673
+ isSaveAsTemplateEnabled: store["isSaveAsTemplateEnabled"]
3674
+ };
3675
+ })),
3676
+ isSaveAsTemplateEnabled = _useUtilityStore.isSaveAsTemplateEnabled;
3677
+ var hasFieldChanged = index.useHasFieldChanged(name);
3678
+ var valuePath = "".concat(name, ".value");
3679
+ var subjectPath = "".concat(name, ".subject");
3680
+ var bodyPath = "".concat(name, ".body");
3681
+ var templates = option === null || option === void 0 ? void 0 : option.templates;
3682
+ // Hosts whose email action picks its recipient from a list keep that
3683
+ // choice in the same pane as the message.
3684
+ var hasRecipientList = neetoCist.isNotEmpty(options) && !hasRecipientField;
3685
+ var fieldError = function fieldError(path) {
3686
+ return formik.getIn(touched, path) && formik.getIn(errors, path);
3687
+ };
3688
+ var shouldShowSaveAsTemplate = react.useCallback(function () {
3689
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
3690
+ templateId = _ref2.templateId,
3691
+ subject = _ref2.subject,
3692
+ body = _ref2.body;
3693
+ var template = neetoCist.findBy({
3694
+ id: templateId
3695
+ }, templates);
3696
+ var hasContent = neetoCist.isPresent(subject) || neetoCist.isPresent(body);
3697
+ var isContentDifferentFromTemplate = !(index.areValuesEqual(template === null || template === void 0 ? void 0 : template.subject, subject) && (template === null || template === void 0 ? void 0 : template.body) === body);
3698
+ return hasContent && hasFieldChanged && isContentDifferentFromTemplate;
3699
+ }, [templates, hasFieldChanged]);
3700
+ var isSaveAsTemplateVisible = index.useResetSaveAsTemplateOnHide(name, isSaveAsTemplateEnabled ? shouldShowSaveAsTemplate : ramda.F);
3701
+
3702
+ // Formik validates each write on a stale snapshot, so write it all at once.
3703
+ var handleTemplateChange = function handleTemplateChange(template) {
3704
+ setFieldValue(name, _objectSpread$4(_objectSpread$4({}, formik.getIn(values, name)), {}, {
3705
+ templateId: template.id,
3706
+ body: template.body
3707
+ }, option !== null && option !== void 0 && option.hideSubject ? {} : {
3708
+ subject: template.subject
3709
+ }));
3710
+ index.setEditorContent(editorRef, template.body);
3711
+ };
3712
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
3713
+ className: "flex flex-col gap-4",
3714
+ children: [hasRecipientList && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Select, {
3715
+ options: options,
3716
+ required: true,
3717
+ error: fieldError(valuePath),
3718
+ placeholder: option === null || option === void 0 ? void 0 : option.valuePlaceholder,
3719
+ size: "large",
3720
+ value: (_getIn = formik.getIn(values, valuePath)) !== null && _getIn !== void 0 ? _getIn : undefined,
3721
+ label: (option === null || option === void 0 ? void 0 : option.recipientLabel) || t("neetoRules.builder.config.recipient"),
3722
+ onBlur: function onBlur() {
3723
+ return setFieldTouched(valuePath, true);
3724
+ },
3725
+ onChange: function onChange(value) {
3726
+ return setFieldValue(valuePath, value);
3727
+ }
3728
+ }), neetoCist.isPresent(templates) && /*#__PURE__*/jsxRuntime.jsx(index.SelectTemplateField, {
3729
+ templates: templates,
3730
+ selectedField: option,
3731
+ onChange: handleTemplateChange
3732
+ }), !(option !== null && option !== void 0 && option.hideSubject) && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
3733
+ required: true,
3734
+ error: fieldError(subjectPath),
3735
+ label: t("neetoRules.builder.config.subject"),
3736
+ placeholder: t("neetoRules.builder.config.subjectPlaceholder"),
3737
+ size: "large",
3738
+ value: (_getIn2 = formik.getIn(values, subjectPath)) !== null && _getIn2 !== void 0 ? _getIn2 : "",
3739
+ onBlur: function onBlur() {
3740
+ return setFieldTouched(subjectPath, true);
3741
+ },
3742
+ onChange: function onChange(event) {
3743
+ return setFieldValue(subjectPath, event.target.value);
3744
+ }
3745
+ }), /*#__PURE__*/jsxRuntime.jsx(index.EditorAction, {
3746
+ editorRef: editorRef,
3747
+ required: true,
3748
+ label: t("neetoRules.builder.config.body"),
3749
+ name: bodyPath,
3750
+ placeholder: t("neetoRules.builder.config.bodyPlaceholder"),
3751
+ value: action === null || action === void 0 || (_action$metadata = action.metadata) === null || _action$metadata === void 0 ? void 0 : _action$metadata.body,
3752
+ variables: option === null || option === void 0 ? void 0 : option.variables
3753
+ }), hint, isSaveAsTemplateVisible && /*#__PURE__*/jsxRuntime.jsx(index.SaveAsTemplate, {
3754
+ name: name
3755
+ })]
3756
+ });
3581
3757
  };
3582
3758
 
3583
3759
  var restoreTokens = function restoreTokens(text) {
@@ -3639,49 +3815,13 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3639
3815
  });
3640
3816
  }
3641
3817
  if (type === ACTION_CONFIG_TYPES.emailChannel) {
3642
- var _getIn, _getIn2, _action$metadata;
3643
- var subjectPath = "".concat(name, ".subject");
3644
- var bodyPath = "".concat(name, ".body");
3645
- // Hosts whose email action picks its recipient from a list keep that
3646
- // choice in the same pane as the message.
3647
- var hasRecipientList = neetoCist.isNotEmpty(options) && !hasRecipientField;
3648
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
3649
- className: "flex flex-col gap-4",
3650
- children: [hasRecipientList && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Select, {
3651
- options: options,
3652
- required: true,
3653
- error: fieldError(valuePath),
3654
- placeholder: option === null || option === void 0 ? void 0 : option.valuePlaceholder,
3655
- size: "large",
3656
- value: (_getIn = formik.getIn(values, valuePath)) !== null && _getIn !== void 0 ? _getIn : undefined,
3657
- label: (option === null || option === void 0 ? void 0 : option.recipientLabel) || t("neetoRules.builder.config.recipient"),
3658
- onBlur: function onBlur() {
3659
- return setFieldTouched(valuePath, true);
3660
- },
3661
- onChange: function onChange(value) {
3662
- return setFieldValue(valuePath, value);
3663
- }
3664
- }), !(option !== null && option !== void 0 && option.hideSubject) && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
3665
- required: true,
3666
- error: fieldError(subjectPath),
3667
- label: t("neetoRules.builder.config.subject"),
3668
- placeholder: t("neetoRules.builder.config.subjectPlaceholder"),
3669
- size: "large",
3670
- value: (_getIn2 = formik.getIn(values, subjectPath)) !== null && _getIn2 !== void 0 ? _getIn2 : "",
3671
- onBlur: function onBlur() {
3672
- return setFieldTouched(subjectPath, true);
3673
- },
3674
- onChange: function onChange(event) {
3675
- return setFieldValue(subjectPath, event.target.value);
3676
- }
3677
- }), /*#__PURE__*/jsxRuntime.jsx(index.EditorAction, {
3678
- required: true,
3679
- label: t("neetoRules.builder.config.body"),
3680
- name: bodyPath,
3681
- placeholder: t("neetoRules.builder.config.bodyPlaceholder"),
3682
- value: action === null || action === void 0 || (_action$metadata = action.metadata) === null || _action$metadata === void 0 ? void 0 : _action$metadata.body,
3683
- variables: option === null || option === void 0 ? void 0 : option.variables
3684
- }), hintBlock]
3818
+ return /*#__PURE__*/jsxRuntime.jsx(EmailChannelFields, {
3819
+ action: action,
3820
+ hasRecipientField: hasRecipientField,
3821
+ name: name,
3822
+ option: option,
3823
+ options: options,
3824
+ hint: hintBlock
3685
3825
  });
3686
3826
  }
3687
3827
  if (type === ACTION_CONFIG_TYPES.multiSelect) {
@@ -3742,7 +3882,7 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3742
3882
  });
3743
3883
  }
3744
3884
  if (type === ACTION_CONFIG_TYPES.note) {
3745
- var _action$metadata2;
3885
+ var _action$metadata;
3746
3886
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
3747
3887
  className: "flex flex-col gap-2",
3748
3888
  children: [/*#__PURE__*/jsxRuntime.jsx(index.EditorAction, {
@@ -3750,20 +3890,20 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3750
3890
  label: t("neetoRules.builder.config.note"),
3751
3891
  name: valuePath,
3752
3892
  placeholder: t("neetoRules.builder.config.bodyPlaceholder"),
3753
- value: action === null || action === void 0 || (_action$metadata2 = action.metadata) === null || _action$metadata2 === void 0 ? void 0 : _action$metadata2.value,
3893
+ value: action === null || action === void 0 || (_action$metadata = action.metadata) === null || _action$metadata === void 0 ? void 0 : _action$metadata.value,
3754
3894
  variables: option === null || option === void 0 ? void 0 : option.variables
3755
3895
  }), hintBlock]
3756
3896
  });
3757
3897
  }
3758
3898
  if (type === ACTION_CONFIG_TYPES.textarea || type === ACTION_CONFIG_TYPES.number) {
3759
- var _getIn3, _getIn4;
3899
+ var _getIn, _getIn2;
3760
3900
  return type === ACTION_CONFIG_TYPES.number ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
3761
3901
  required: true,
3762
3902
  error: fieldError(valuePath),
3763
3903
  label: t("neetoRules.builder.config.value"),
3764
3904
  size: "large",
3765
3905
  type: "number",
3766
- value: (_getIn3 = formik.getIn(values, valuePath)) !== null && _getIn3 !== void 0 ? _getIn3 : "",
3906
+ value: (_getIn = formik.getIn(values, valuePath)) !== null && _getIn !== void 0 ? _getIn : "",
3767
3907
  onBlur: function onBlur() {
3768
3908
  return setFieldTouched(valuePath, true);
3769
3909
  },
@@ -3776,7 +3916,7 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3776
3916
  label: t("neetoRules.builder.config.message"),
3777
3917
  rows: 5,
3778
3918
  size: "large",
3779
- value: (_getIn4 = formik.getIn(values, valuePath)) !== null && _getIn4 !== void 0 ? _getIn4 : "",
3919
+ value: (_getIn2 = formik.getIn(values, valuePath)) !== null && _getIn2 !== void 0 ? _getIn2 : "",
3780
3920
  onBlur: function onBlur() {
3781
3921
  return setFieldTouched(valuePath, true);
3782
3922
  },
@@ -3786,7 +3926,7 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3786
3926
  });
3787
3927
  }
3788
3928
  if (type === ACTION_CONFIG_TYPES.text || type === ACTION_CONFIG_TYPES.regex || type === ACTION_CONFIG_TYPES.decimal) {
3789
- var _getIn5;
3929
+ var _getIn3;
3790
3930
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
3791
3931
  className: "flex flex-col gap-2",
3792
3932
  children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
@@ -3795,7 +3935,7 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3795
3935
  label: t("neetoRules.builder.config.value"),
3796
3936
  placeholder: option === null || option === void 0 ? void 0 : option.valuePlaceholder,
3797
3937
  size: "large",
3798
- value: (_getIn5 = formik.getIn(values, valuePath)) !== null && _getIn5 !== void 0 ? _getIn5 : "",
3938
+ value: (_getIn3 = formik.getIn(values, valuePath)) !== null && _getIn3 !== void 0 ? _getIn3 : "",
3799
3939
  onBlur: function onBlur() {
3800
3940
  return setFieldTouched(valuePath, true);
3801
3941
  },
@@ -3831,8 +3971,8 @@ var ActionConfigFields = function ActionConfigFields(_ref) {
3831
3971
  });
3832
3972
  };
3833
3973
 
3834
- function _regenerator$1() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2$1(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2$1(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2$1(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2$1(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2$1(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2$1(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2$1(u), _regeneratorDefine2$1(u, o, "Generator"), _regeneratorDefine2$1(u, n, function () { return this; }), _regeneratorDefine2$1(u, "toString", function () { return "[object Generator]"; }), (_regenerator$1 = function _regenerator() { return { w: i, m: f }; })(); }
3835
- function _regeneratorDefine2$1(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2$1 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2$1(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2$1(e, r, n, t); }
3974
+ function _regenerator$2() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2$2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2$2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2$2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2$2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2$2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2$2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2$2(u), _regeneratorDefine2$2(u, o, "Generator"), _regeneratorDefine2$2(u, n, function () { return this; }), _regeneratorDefine2$2(u, "toString", function () { return "[object Generator]"; }), (_regenerator$2 = function _regenerator() { return { w: i, m: f }; })(); }
3975
+ function _regeneratorDefine2$2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2$2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2$2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2$2(e, r, n, t); }
3836
3976
  var keysUnder = function keysUnder(_ref) {
3837
3977
  var obj = _ref.obj,
3838
3978
  prefix = _ref.prefix,
@@ -3869,12 +4009,12 @@ var usePaneValidation = function usePaneValidation(prefix) {
3869
4009
  // eslint-disable-next-line react-hooks/exhaustive-deps
3870
4010
  }, [prefix]);
3871
4011
  var validate = /*#__PURE__*/function () {
3872
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator$1().m(function _callee() {
4012
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator$2().m(function _callee() {
3873
4013
  var exclude,
3874
4014
  nextErrors,
3875
4015
  offending,
3876
4016
  _args = arguments;
3877
- return _regenerator$1().w(function (_context) {
4017
+ return _regenerator$2().w(function (_context) {
3878
4018
  while (1) switch (_context.n) {
3879
4019
  case 0:
3880
4020
  exclude = _args.length > 0 && _args[0] !== undefined ? _args[0] : [];
@@ -3903,8 +4043,8 @@ var usePaneValidation = function usePaneValidation(prefix) {
3903
4043
  };
3904
4044
  };
3905
4045
 
3906
- function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
3907
- function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
4046
+ function _regenerator$1() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2$1(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2$1(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2$1(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2$1(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2$1(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2$1(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2$1(u), _regeneratorDefine2$1(u, o, "Generator"), _regeneratorDefine2$1(u, n, function () { return this; }), _regeneratorDefine2$1(u, "toString", function () { return "[object Generator]"; }), (_regenerator$1 = function _regenerator() { return { w: i, m: f }; })(); }
4047
+ function _regeneratorDefine2$1(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2$1 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2$1(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2$1(e, r, n, t); }
3908
4048
  var ConfigPane = function ConfigPane(_ref) {
3909
4049
  var _schema$actions, _schema$actions$optio, _schema$actions2, _schema$actions2$opti, _action$recipient, _schema$actions3, _schema$actions3$acti, _concat$find, _schema$actions4, _schema$actions5, _schema$actions6, _schema$actions7, _schema$actions7$opti, _hostRenderConfig;
3910
4050
  var schema = _ref.schema,
@@ -3992,9 +4132,9 @@ var ConfigPane = function ConfigPane(_ref) {
3992
4132
  mediumLabel: mediumLabel
3993
4133
  }) || (option === null || option === void 0 ? void 0 : option.label) || t("neetoRules.builder.setUpAction");
3994
4134
  var handleContinue = /*#__PURE__*/function () {
3995
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
4135
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator$1().m(function _callee() {
3996
4136
  var owned, next;
3997
- return _regenerator().w(function (_context) {
4137
+ return _regenerator$1().w(function (_context) {
3998
4138
  while (1) switch (_context.n) {
3999
4139
  case 0:
4000
4140
  // A pane only answers for what it renders: the recipient pane owns its
@@ -4173,15 +4313,17 @@ var DelayPane = function DelayPane(_ref) {
4173
4313
  children: t("neetoRules.builder.waitFor")
4174
4314
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
4175
4315
  className: "flex items-start gap-x-2",
4176
- children: [/*#__PURE__*/jsxRuntime.jsx(formik$1.Input, {
4316
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
4177
4317
  className: "w-44",
4178
- dataTestid: "delay-value",
4179
- max: index.MAX_DELAY_VALUE,
4180
- min: index.MIN_DELAY_VALUE,
4181
- name: "".concat(name, ".value.value"),
4182
- placeholder: t("neetoRules.placeholders.enterDelay"),
4183
- size: "large",
4184
- type: "number"
4318
+ children: /*#__PURE__*/jsxRuntime.jsx(formik$1.Input, {
4319
+ dataTestid: "delay-value",
4320
+ max: index.MAX_DELAY_VALUE,
4321
+ min: index.MIN_DELAY_VALUE,
4322
+ name: "".concat(name, ".value.value"),
4323
+ placeholder: t("neetoRules.placeholders.enterDelay"),
4324
+ size: "large",
4325
+ type: "number"
4326
+ })
4185
4327
  }), /*#__PURE__*/jsxRuntime.jsx(formik$1.Select, {
4186
4328
  dataTestid: "delay-unit",
4187
4329
  defaultValue: value === null || value === void 0 ? void 0 : value.unit,
@@ -4421,8 +4563,10 @@ var NamePane = function NamePane(_ref) {
4421
4563
  });
4422
4564
  };
4423
4565
 
4424
- function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4425
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4566
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4567
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4568
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
4569
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
4426
4570
  var OptionsPane = function OptionsPane(_ref) {
4427
4571
  var schema = _ref.schema,
4428
4572
  anchor = _ref.anchor,
@@ -4431,7 +4575,9 @@ var OptionsPane = function OptionsPane(_ref) {
4431
4575
  _ref$belowContent = _ref.belowContent,
4432
4576
  belowContent = _ref$belowContent === void 0 ? null : _ref$belowContent,
4433
4577
  _ref$configPending = _ref.configPending,
4434
- configPending = _ref$configPending === void 0 ? false : _ref$configPending;
4578
+ configPending = _ref$configPending === void 0 ? false : _ref$configPending,
4579
+ _ref$validate = _ref.validate,
4580
+ validate = _ref$validate === void 0 ? null : _ref$validate;
4435
4581
  var _useTranslation = reactI18next.useTranslation(),
4436
4582
  t = _useTranslation.t;
4437
4583
  var _useFormikContext = formik.useFormikContext(),
@@ -4534,20 +4680,49 @@ var OptionsPane = function OptionsPane(_ref) {
4534
4680
  }
4535
4681
  };
4536
4682
  };
4537
- var handleContinue = function handleContinue() {
4538
- var target = continueTargetFor({
4539
- anchor: anchor,
4540
- schema: schema,
4541
- rule: rule,
4542
- index: index$1,
4543
- stepKey: stepKey,
4544
- configPending: configPending
4545
- });
4546
- if (target) openType({
4547
- type: target.type,
4548
- data: target.data
4549
- });else closePane();
4550
- };
4683
+ var handleContinue = /*#__PURE__*/function () {
4684
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
4685
+ var target, _t;
4686
+ return _regenerator().w(function (_context) {
4687
+ while (1) switch (_context.n) {
4688
+ case 0:
4689
+ _t = validate;
4690
+ if (!_t) {
4691
+ _context.n = 2;
4692
+ break;
4693
+ }
4694
+ _context.n = 1;
4695
+ return validate();
4696
+ case 1:
4697
+ _t = !_context.v;
4698
+ case 2:
4699
+ if (!_t) {
4700
+ _context.n = 3;
4701
+ break;
4702
+ }
4703
+ return _context.a(2);
4704
+ case 3:
4705
+ target = continueTargetFor({
4706
+ anchor: anchor,
4707
+ schema: schema,
4708
+ rule: rule,
4709
+ index: index$1,
4710
+ stepKey: stepKey,
4711
+ configPending: configPending
4712
+ });
4713
+ if (target) openType({
4714
+ type: target.type,
4715
+ data: target.data
4716
+ });else closePane();
4717
+ case 4:
4718
+ return _context.a(2);
4719
+ }
4720
+ }, _callee);
4721
+ }));
4722
+ return function handleContinue() {
4723
+ return _ref2.apply(this, arguments);
4724
+ };
4725
+ }();
4551
4726
  var canContinue = cascade && selectedValues.some(Boolean);
4552
4727
  useHotkeys(keyboardShortcuts.SHORTCUTS["continue"].sequence, handleContinue, {
4553
4728
  enabled: canContinue,
@@ -4587,7 +4762,7 @@ var OptionsPane = function OptionsPane(_ref) {
4587
4762
  color: "muted",
4588
4763
  variant: "body2",
4589
4764
  children: popover.description
4590
- }), popover.helpLinkProps && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$2(_objectSpread$2({}, popover.helpLinkProps), {}, {
4765
+ }), popover.helpLinkProps && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, _objectSpread$3(_objectSpread$3({}, popover.helpLinkProps), {}, {
4591
4766
  className: "h-auto self-start p-0",
4592
4767
  size: "sm",
4593
4768
  variant: "link"
@@ -4623,13 +4798,13 @@ var OptionsPane = function OptionsPane(_ref) {
4623
4798
  if (multi) {
4624
4799
  return /*#__PURE__*/jsxRuntime.jsx("div", {
4625
4800
  className: "mb-pane-list flex flex-col",
4626
- children: groups.map(function (_ref2) {
4627
- var _ref3 = _slicedToArray(_ref2, 2),
4628
- category = _ref3[0],
4629
- items = _ref3[1];
4801
+ children: groups.map(function (_ref3) {
4802
+ var _ref4 = _slicedToArray(_ref3, 2),
4803
+ category = _ref4[0],
4804
+ items = _ref4[1];
4630
4805
  return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
4631
4806
  children: [renderGroupHeader(category), items.map(function (option) {
4632
- return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Checkbox, _objectSpread$2(_objectSpread$2({
4807
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Checkbox, _objectSpread$3(_objectSpread$3({
4633
4808
  checked: isSelected(option.value),
4634
4809
  disabled: option.disabled,
4635
4810
  label: optionLabel(option),
@@ -4649,15 +4824,15 @@ var OptionsPane = function OptionsPane(_ref) {
4649
4824
  orientation: "vertical",
4650
4825
  value: (_selectedValues$ = selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues[0]) !== null && _selectedValues$ !== void 0 ? _selectedValues$ : "",
4651
4826
  onValueChange: handleSelect,
4652
- children: groups.flatMap(function (_ref4) {
4653
- var _ref5 = _slicedToArray(_ref4, 2),
4654
- category = _ref5[0],
4655
- items = _ref5[1];
4827
+ children: groups.flatMap(function (_ref5) {
4828
+ var _ref6 = _slicedToArray(_ref5, 2),
4829
+ category = _ref6[0],
4830
+ items = _ref6[1];
4656
4831
  return [category ? /*#__PURE__*/jsxRuntime.jsx("div", {
4657
4832
  className: "mb-pane-group",
4658
4833
  children: category
4659
4834
  }, "group-".concat(category)) : null].concat(_toConsumableArray(items.map(function (option) {
4660
- return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.RadioGroup.Item, _objectSpread$2(_objectSpread$2({
4835
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.RadioGroup.Item, _objectSpread$3(_objectSpread$3({
4661
4836
  disabled: option.disabled,
4662
4837
  label: optionLabel(option),
4663
4838
  labelProps: previewHandlers(option.value),
@@ -4795,8 +4970,16 @@ var RecipientPane = function RecipientPane(_ref) {
4795
4970
  });
4796
4971
  var flatOption = ((_schema$actions4 = schema.actions) === null || _schema$actions4 === void 0 || (_schema$actions4$opti = _schema$actions4.optionForName) === null || _schema$actions4$opti === void 0 ? void 0 : _schema$actions4$opti.call(_schema$actions4, action.name)) || ((_schema$actions5 = schema.actions) === null || _schema$actions5 === void 0 || (_schema$actions5$opti = _schema$actions5.optionForChannel) === null || _schema$actions5$opti === void 0 ? void 0 : _schema$actions5$opti.call(_schema$actions5, channel));
4797
4972
  var isSmsToNumbers = (flatOption === null || flatOption === void 0 ? void 0 : flatOption.type) === SMS_TO_NUMBERS;
4798
- var recipientFieldPath = isSmsToNumbers ? "".concat(name, ".").concat(RECIPIENT_STORAGE_FIELDS.phoneNumbers) : "".concat(name, ".").concat(RECIPIENT_STORAGE_FIELDS.emails);
4799
- usePaneValidation(recipientFieldPath);
4973
+ var recipientConfig = (((_schema$actions6 = schema.actions) === null || _schema$actions6 === void 0 ? void 0 : _schema$actions6.options) || []).flatMap(function (option) {
4974
+ return option.recipients || [];
4975
+ }).concat(((_schema$actions7 = schema.actions) === null || _schema$actions7 === void 0 ? void 0 : _schema$actions7.recipients) || []).find(function (item) {
4976
+ var _item$value;
4977
+ return ((_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : item.id) === recipient;
4978
+ });
4979
+ var recipientStorageField = recipientConfig !== null && recipientConfig !== void 0 && recipientConfig.field && recipientConfig.field !== RECIPIENT_STORAGE_FIELDS.emails ? RECIPIENT_STORAGE_FIELDS.value : RECIPIENT_STORAGE_FIELDS.emails;
4980
+ var recipientFieldPath = isSmsToNumbers ? "".concat(name, ".").concat(RECIPIENT_STORAGE_FIELDS.phoneNumbers) : "".concat(name, ".").concat(recipientStorageField);
4981
+ var _usePaneValidation = usePaneValidation(recipientFieldPath),
4982
+ validate = _usePaneValidation.validate;
4800
4983
  react.useEffect(function () {
4801
4984
  var _bodyRef$current;
4802
4985
  if (!editor) return;
@@ -4807,12 +4990,6 @@ var RecipientPane = function RecipientPane(_ref) {
4807
4990
  }, 0);
4808
4991
  // eslint-disable-next-line react-hooks/exhaustive-deps
4809
4992
  }, [!editor]);
4810
- var recipientConfig = (((_schema$actions6 = schema.actions) === null || _schema$actions6 === void 0 ? void 0 : _schema$actions6.options) || []).flatMap(function (option) {
4811
- return option.recipients || [];
4812
- }).concat(((_schema$actions7 = schema.actions) === null || _schema$actions7 === void 0 ? void 0 : _schema$actions7.recipients) || []).find(function (item) {
4813
- var _item$value;
4814
- return ((_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : item.id) === recipient;
4815
- });
4816
4993
  var builtInRecipientField = recipientConfig !== null && recipientConfig !== void 0 && recipientConfig.field ? /*#__PURE__*/jsxRuntime.jsx(RecipientField, {
4817
4994
  name: name,
4818
4995
  dropdownOptions: recipientConfig.dropdownOptions,
@@ -4852,6 +5029,7 @@ var RecipientPane = function RecipientPane(_ref) {
4852
5029
  configPending: configPending,
4853
5030
  index: index$1,
4854
5031
  schema: schema,
5032
+ validate: validate,
4855
5033
  anchor: BUILDER_ANCHORS.ACTION_RECIPIENT
4856
5034
  });
4857
5035
  }
@@ -4881,6 +5059,8 @@ var RecipientPane = function RecipientPane(_ref) {
4881
5059
  });
4882
5060
  };
4883
5061
 
5062
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5063
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4884
5064
  var ConditionValueFields = function ConditionValueFields(_ref) {
4885
5065
  var name = _ref.name,
4886
5066
  field = _ref.field,
@@ -4986,6 +5166,42 @@ var ConditionValueFields = function ConditionValueFields(_ref) {
4986
5166
  })
4987
5167
  });
4988
5168
  }
5169
+ if (type === CONDITION_VALUE_TYPES.date) {
5170
+ var metadataPath = "".concat(name, ".metadata");
5171
+ var metadata = formik.getIn(values, metadataPath) || {};
5172
+
5173
+ // Formik validates each write on a stale snapshot, so write it all at once.
5174
+ var handleDateChange = function handleDateChange(date) {
5175
+ var _globalProps$user;
5176
+ var format = field !== null && field !== void 0 && field.showTime ? utils$1.DATE_TIME_FORMAT : utils$1.DATE_FORMAT;
5177
+ setFieldTouched(valuePath, true, false);
5178
+ setFieldValue(metadataPath, _objectSpread$2(_objectSpread$2({}, metadata), {}, {
5179
+ // eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
5180
+ value: date ? utils.dayjs(date).format(format) : "",
5181
+ type: field !== null && field !== void 0 && field.showTime ? utils$1.DATE_TIME_TYPES.datetime : utils$1.DATE_TIME_TYPES.date,
5182
+ format: format,
5183
+ timezone: initializers.globalProps === null || initializers.globalProps === void 0 || (_globalProps$user = initializers.globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.timeZone
5184
+ }));
5185
+ };
5186
+ return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.DatePicker, {
5187
+ required: true,
5188
+ error: fieldError(valuePath),
5189
+ label: t("neetoRules.form.selectDate"),
5190
+ showTime: field === null || field === void 0 ? void 0 : field.showTime,
5191
+ timeFormat: "HH:mm",
5192
+ type: "date",
5193
+ value: utils$1.getDateTimeValue({
5194
+ date: metadata.value,
5195
+ format: metadata.format,
5196
+ type: metadata.type,
5197
+ timezone: metadata.timezone
5198
+ }) || undefined,
5199
+ onBlur: function onBlur() {
5200
+ return setFieldTouched(valuePath, true);
5201
+ },
5202
+ onChange: handleDateChange
5203
+ });
5204
+ }
4989
5205
  if (valueType === CONDITION_VALUE_TYPES.number) {
4990
5206
  var _getIn;
4991
5207
  return /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Input, {
@@ -5131,7 +5347,7 @@ var BUILDER_PANEL_TYPE_CONFIG_MAP = (_BUILDER_PANEL_TYPE_C = {}, _defineProperty
5131
5347
  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5132
5348
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5133
5349
  var Form = function Form(_ref) {
5134
- var _schema$meta$showName, _schema$meta;
5350
+ var _rawSchema$actions, _schema$meta$showName, _schema$meta;
5135
5351
  var _ref$data = _ref.data,
5136
5352
  data = _ref$data === void 0 ? {} : _ref$data,
5137
5353
  _ref$schema = _ref.schema,
@@ -5164,17 +5380,24 @@ var Form = function Form(_ref) {
5164
5380
  var _useUtilityStore = useUtilityStore.useUtilityStore(shallow.useShallow(function (store) {
5165
5381
  return {
5166
5382
  resetPanelState: store["resetPanelState"],
5167
- errorFields: store["errorFields"]
5383
+ errorFields: store["errorFields"],
5384
+ setIsSaveAsTemplateEnabled: store["setIsSaveAsTemplateEnabled"]
5168
5385
  };
5169
5386
  })),
5170
5387
  resetPanelState = _useUtilityStore.resetPanelState,
5171
- errorFields = _useUtilityStore.errorFields;
5388
+ errorFields = _useUtilityStore.errorFields,
5389
+ setIsSaveAsTemplateEnabled = _useUtilityStore.setIsSaveAsTemplateEnabled;
5172
5390
  var initialValues = react.useMemo(function () {
5173
5391
  return index.formatData(data);
5174
5392
  }, [data]);
5175
5393
  var schema = react.useMemo(function () {
5176
5394
  return normalizeSchema(rawSchema);
5177
5395
  }, [rawSchema]);
5396
+ var isSaveAsTemplateEnabled = !!((_rawSchema$actions = rawSchema.actions) !== null && _rawSchema$actions !== void 0 && _rawSchema$actions.isSaveAsTemplateEnabled);
5397
+ react.useEffect(function () {
5398
+ setIsSaveAsTemplateEnabled(isSaveAsTemplateEnabled);
5399
+ // eslint-disable-next-line react-hooks/exhaustive-deps
5400
+ }, [isSaveAsTemplateEnabled]);
5178
5401
  var isNameRequired = isNameGenerationDisabled || ((_schema$meta$showName = (_schema$meta = schema.meta) === null || _schema$meta === void 0 ? void 0 : _schema$meta.showName) !== null && _schema$meta$showName !== void 0 ? _schema$meta$showName : true);
5179
5402
  var _usePollRuleName = index.usePollRuleName({
5180
5403
  url: url,