@inspirer-dev/crm-dashboard 1.0.13 → 1.0.15

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.
@@ -17,15 +17,16 @@ interface TriggerConfig {
17
17
  eventName?: string;
18
18
  delayValue?: number;
19
19
  delayUnit?: 'seconds' | 'minutes' | 'hours';
20
- scheduleType?: 'daily' | 'weekly' | 'cron';
20
+ scheduleType?: 'daily' | 'weekly' | 'cron' | 'interval';
21
21
  scheduleTime?: string;
22
22
  scheduleDays?: number[];
23
23
  scheduleCron?: string;
24
+ scheduleEveryMinutes?: number;
24
25
  }
25
26
 
26
27
  interface TriggerConfigFieldProps {
27
28
  name: string;
28
- value?: string | null;
29
+ value?: string | TriggerConfig | null;
29
30
  onChange: (event: { target: { name: string; value: string } }) => void;
30
31
  intlLabel: {
31
32
  id: string;
@@ -47,6 +48,7 @@ const DEFAULT_CONFIG: TriggerConfig = {
47
48
  scheduleTime: '12:00',
48
49
  scheduleDays: [1, 2, 3, 4, 5],
49
50
  scheduleCron: '0 12 * * *',
51
+ scheduleEveryMinutes: 5,
50
52
  };
51
53
 
52
54
  const WEEKDAYS = [
@@ -59,23 +61,27 @@ const WEEKDAYS = [
59
61
  { value: 6, label: 'Sat' },
60
62
  ];
61
63
 
62
- const parseConfig = (value: string | null | undefined): TriggerConfig => {
64
+ const parseConfig = (value: string | TriggerConfig | null | undefined): TriggerConfig => {
63
65
  if (!value) return DEFAULT_CONFIG;
64
- try {
65
- const parsed = JSON.parse(value);
66
- return {
67
- type: parsed.type || 'event_based',
68
- eventName: parsed.eventName || '',
69
- delayValue: parsed.delayValue ?? 10,
70
- delayUnit: parsed.delayUnit || 'minutes',
71
- scheduleType: parsed.scheduleType || 'daily',
72
- scheduleTime: parsed.scheduleTime || '12:00',
73
- scheduleDays: parsed.scheduleDays || [1, 2, 3, 4, 5],
74
- scheduleCron: parsed.scheduleCron || '0 12 * * *',
75
- };
76
- } catch {
77
- return DEFAULT_CONFIG;
66
+ const normalize = (parsed: Partial<TriggerConfig>): TriggerConfig => ({
67
+ type: parsed.type || 'event_based',
68
+ eventName: parsed.eventName || '',
69
+ delayValue: parsed.delayValue ?? 10,
70
+ delayUnit: parsed.delayUnit || 'minutes',
71
+ scheduleType: parsed.scheduleType || 'daily',
72
+ scheduleTime: parsed.scheduleTime || '12:00',
73
+ scheduleDays: Array.isArray(parsed.scheduleDays) ? parsed.scheduleDays : [1, 2, 3, 4, 5],
74
+ scheduleCron: parsed.scheduleCron || '0 12 * * *',
75
+ scheduleEveryMinutes: parsed.scheduleEveryMinutes ?? 5,
76
+ });
77
+ if (typeof value === 'string') {
78
+ try {
79
+ return normalize(JSON.parse(value));
80
+ } catch {
81
+ return DEFAULT_CONFIG;
82
+ }
78
83
  }
84
+ return normalize(value);
79
85
  };
80
86
 
81
87
  const serializeConfig = (config: TriggerConfig): string => {
@@ -247,12 +253,32 @@ const TriggerConfigField = forwardRef<HTMLDivElement, TriggerConfigFieldProps>(
247
253
  }
248
254
  disabled={disabled}
249
255
  >
256
+ <SingleSelectOption value="interval">Every N minutes</SingleSelectOption>
250
257
  <SingleSelectOption value="daily">Daily</SingleSelectOption>
251
258
  <SingleSelectOption value="weekly">Weekly</SingleSelectOption>
252
259
  <SingleSelectOption value="cron">Custom (Cron)</SingleSelectOption>
253
260
  </SingleSelect>
254
261
  </Field.Root>
255
262
 
263
+ {config.scheduleType === 'interval' && (
264
+ <Field.Root name={`${name}-scheduleEveryMinutes`}>
265
+ <Field.Label>Interval</Field.Label>
266
+ <SingleSelect
267
+ value={String(config.scheduleEveryMinutes ?? 5)}
268
+ onChange={(val: string) =>
269
+ handleUpdate({ scheduleEveryMinutes: parseInt(val, 10) || 5 })
270
+ }
271
+ disabled={disabled}
272
+ >
273
+ <SingleSelectOption value="5">Every 5 minutes</SingleSelectOption>
274
+ <SingleSelectOption value="10">Every 10 minutes</SingleSelectOption>
275
+ <SingleSelectOption value="15">Every 15 minutes</SingleSelectOption>
276
+ <SingleSelectOption value="30">Every 30 minutes</SingleSelectOption>
277
+ <SingleSelectOption value="60">Every 60 minutes</SingleSelectOption>
278
+ </SingleSelect>
279
+ </Field.Root>
280
+ )}
281
+
256
282
  {(config.scheduleType === 'daily' || config.scheduleType === 'weekly') && (
257
283
  <Field.Root name={`${name}-scheduleTime`}>
258
284
  <Field.Label>Time of Day (UTC)</Field.Label>
@@ -11,7 +11,8 @@ const DEFAULT_CONFIG = {
11
11
  scheduleType: "daily",
12
12
  scheduleTime: "12:00",
13
13
  scheduleDays: [1, 2, 3, 4, 5],
14
- scheduleCron: "0 12 * * *"
14
+ scheduleCron: "0 12 * * *",
15
+ scheduleEveryMinutes: 5
15
16
  };
16
17
  const WEEKDAYS = [
17
18
  { value: 0, label: "Sun" },
@@ -24,21 +25,25 @@ const WEEKDAYS = [
24
25
  ];
25
26
  const parseConfig = (value) => {
26
27
  if (!value) return DEFAULT_CONFIG;
27
- try {
28
- const parsed = JSON.parse(value);
29
- return {
30
- type: parsed.type || "event_based",
31
- eventName: parsed.eventName || "",
32
- delayValue: parsed.delayValue ?? 10,
33
- delayUnit: parsed.delayUnit || "minutes",
34
- scheduleType: parsed.scheduleType || "daily",
35
- scheduleTime: parsed.scheduleTime || "12:00",
36
- scheduleDays: parsed.scheduleDays || [1, 2, 3, 4, 5],
37
- scheduleCron: parsed.scheduleCron || "0 12 * * *"
38
- };
39
- } catch {
40
- return DEFAULT_CONFIG;
28
+ const normalize = (parsed) => ({
29
+ type: parsed.type || "event_based",
30
+ eventName: parsed.eventName || "",
31
+ delayValue: parsed.delayValue ?? 10,
32
+ delayUnit: parsed.delayUnit || "minutes",
33
+ scheduleType: parsed.scheduleType || "daily",
34
+ scheduleTime: parsed.scheduleTime || "12:00",
35
+ scheduleDays: Array.isArray(parsed.scheduleDays) ? parsed.scheduleDays : [1, 2, 3, 4, 5],
36
+ scheduleCron: parsed.scheduleCron || "0 12 * * *",
37
+ scheduleEveryMinutes: parsed.scheduleEveryMinutes ?? 5
38
+ });
39
+ if (typeof value === "string") {
40
+ try {
41
+ return normalize(JSON.parse(value));
42
+ } catch {
43
+ return DEFAULT_CONFIG;
44
+ }
41
45
  }
46
+ return normalize(value);
42
47
  };
43
48
  const serializeConfig = (config) => {
44
49
  return JSON.stringify(config);
@@ -184,6 +189,7 @@ const TriggerConfigField = React.forwardRef(
184
189
  onChange: (val) => handleUpdate({ scheduleType: val }),
185
190
  disabled,
186
191
  children: [
192
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "interval", children: "Every N minutes" }),
187
193
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "daily", children: "Daily" }),
188
194
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "weekly", children: "Weekly" }),
189
195
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "cron", children: "Custom (Cron)" })
@@ -191,6 +197,24 @@ const TriggerConfigField = React.forwardRef(
191
197
  }
192
198
  )
193
199
  ] }),
200
+ config.scheduleType === "interval" && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: `${name}-scheduleEveryMinutes`, children: [
201
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "Interval" }),
202
+ /* @__PURE__ */ jsxRuntime.jsxs(
203
+ designSystem.SingleSelect,
204
+ {
205
+ value: String(config.scheduleEveryMinutes ?? 5),
206
+ onChange: (val) => handleUpdate({ scheduleEveryMinutes: parseInt(val, 10) || 5 }),
207
+ disabled,
208
+ children: [
209
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "5", children: "Every 5 minutes" }),
210
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "10", children: "Every 10 minutes" }),
211
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "15", children: "Every 15 minutes" }),
212
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "30", children: "Every 30 minutes" }),
213
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "60", children: "Every 60 minutes" })
214
+ ]
215
+ }
216
+ )
217
+ ] }),
194
218
  (config.scheduleType === "daily" || config.scheduleType === "weekly") && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: `${name}-scheduleTime`, children: [
195
219
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: "Time of Day (UTC)" }),
196
220
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -5013,7 +5013,7 @@ var objectInspect = function inspect_(obj, options, depth, seen) {
5013
5013
  var ys = arrObjKeys(obj, inspect2);
5014
5014
  var isPlainObject2 = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
5015
5015
  var protoTag = obj instanceof Object ? "" : "null prototype";
5016
- var stringTag2 = !isPlainObject2 && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr$1(obj), 8, -1) : protoTag ? "Object" : "";
5016
+ var stringTag2 = !isPlainObject2 && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : "";
5017
5017
  var constructorTag = isPlainObject2 || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : "";
5018
5018
  var tag = constructorTag + (stringTag2 || protoTag ? "[" + $join.call($concat$1.call([], stringTag2 || [], protoTag || []), ": ") + "] " : "");
5019
5019
  if (ys.length === 0) {
@@ -5038,25 +5038,25 @@ function canTrustToString(obj) {
5038
5038
  return !toStringTag || !(typeof obj === "object" && (toStringTag in obj || typeof obj[toStringTag] !== "undefined"));
5039
5039
  }
5040
5040
  function isArray$8(obj) {
5041
- return toStr$1(obj) === "[object Array]" && canTrustToString(obj);
5041
+ return toStr(obj) === "[object Array]" && canTrustToString(obj);
5042
5042
  }
5043
5043
  function isDate$1(obj) {
5044
- return toStr$1(obj) === "[object Date]" && canTrustToString(obj);
5044
+ return toStr(obj) === "[object Date]" && canTrustToString(obj);
5045
5045
  }
5046
5046
  function isRegExp$1(obj) {
5047
- return toStr$1(obj) === "[object RegExp]" && canTrustToString(obj);
5047
+ return toStr(obj) === "[object RegExp]" && canTrustToString(obj);
5048
5048
  }
5049
5049
  function isError$1(obj) {
5050
- return toStr$1(obj) === "[object Error]" && canTrustToString(obj);
5050
+ return toStr(obj) === "[object Error]" && canTrustToString(obj);
5051
5051
  }
5052
5052
  function isString(obj) {
5053
- return toStr$1(obj) === "[object String]" && canTrustToString(obj);
5053
+ return toStr(obj) === "[object String]" && canTrustToString(obj);
5054
5054
  }
5055
5055
  function isNumber(obj) {
5056
- return toStr$1(obj) === "[object Number]" && canTrustToString(obj);
5056
+ return toStr(obj) === "[object Number]" && canTrustToString(obj);
5057
5057
  }
5058
5058
  function isBoolean(obj) {
5059
- return toStr$1(obj) === "[object Boolean]" && canTrustToString(obj);
5059
+ return toStr(obj) === "[object Boolean]" && canTrustToString(obj);
5060
5060
  }
5061
5061
  function isSymbol$2(obj) {
5062
5062
  if (hasShammedSymbols) {
@@ -5092,7 +5092,7 @@ var hasOwn$1 = Object.prototype.hasOwnProperty || function(key) {
5092
5092
  function has$5(obj, key) {
5093
5093
  return hasOwn$1.call(obj, key);
5094
5094
  }
5095
- function toStr$1(obj) {
5095
+ function toStr(obj) {
5096
5096
  return objectToString.call(obj);
5097
5097
  }
5098
5098
  function nameOf(f2) {
@@ -5401,7 +5401,7 @@ var syntax = SyntaxError;
5401
5401
  var uri = URIError;
5402
5402
  var abs$1 = Math.abs;
5403
5403
  var floor$1 = Math.floor;
5404
- var max$2 = Math.max;
5404
+ var max$1 = Math.max;
5405
5405
  var min$1 = Math.min;
5406
5406
  var pow$1 = Math.pow;
5407
5407
  var round$1 = Math.round;
@@ -5530,78 +5530,99 @@ function requireObject_getPrototypeOf() {
5530
5530
  Object_getPrototypeOf = $Object2.getPrototypeOf || null;
5531
5531
  return Object_getPrototypeOf;
5532
5532
  }
5533
- var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
5534
- var toStr = Object.prototype.toString;
5535
- var max$1 = Math.max;
5536
- var funcType = "[object Function]";
5537
- var concatty = function concatty2(a2, b2) {
5538
- var arr = [];
5539
- for (var i2 = 0; i2 < a2.length; i2 += 1) {
5540
- arr[i2] = a2[i2];
5541
- }
5542
- for (var j2 = 0; j2 < b2.length; j2 += 1) {
5543
- arr[j2 + a2.length] = b2[j2];
5544
- }
5545
- return arr;
5546
- };
5547
- var slicy = function slicy2(arrLike, offset) {
5548
- var arr = [];
5549
- for (var i2 = offset, j2 = 0; i2 < arrLike.length; i2 += 1, j2 += 1) {
5550
- arr[j2] = arrLike[i2];
5551
- }
5552
- return arr;
5553
- };
5554
- var joiny = function(arr, joiner) {
5555
- var str = "";
5556
- for (var i2 = 0; i2 < arr.length; i2 += 1) {
5557
- str += arr[i2];
5558
- if (i2 + 1 < arr.length) {
5559
- str += joiner;
5533
+ var implementation;
5534
+ var hasRequiredImplementation;
5535
+ function requireImplementation() {
5536
+ if (hasRequiredImplementation) return implementation;
5537
+ hasRequiredImplementation = 1;
5538
+ var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
5539
+ var toStr2 = Object.prototype.toString;
5540
+ var max2 = Math.max;
5541
+ var funcType = "[object Function]";
5542
+ var concatty = function concatty2(a2, b2) {
5543
+ var arr = [];
5544
+ for (var i2 = 0; i2 < a2.length; i2 += 1) {
5545
+ arr[i2] = a2[i2];
5560
5546
  }
5561
- }
5562
- return str;
5563
- };
5564
- var implementation$1 = function bind(that) {
5565
- var target = this;
5566
- if (typeof target !== "function" || toStr.apply(target) !== funcType) {
5567
- throw new TypeError(ERROR_MESSAGE + target);
5568
- }
5569
- var args = slicy(arguments, 1);
5570
- var bound;
5571
- var binder = function() {
5572
- if (this instanceof bound) {
5573
- var result = target.apply(
5574
- this,
5575
- concatty(args, arguments)
5576
- );
5577
- if (Object(result) === result) {
5578
- return result;
5547
+ for (var j2 = 0; j2 < b2.length; j2 += 1) {
5548
+ arr[j2 + a2.length] = b2[j2];
5549
+ }
5550
+ return arr;
5551
+ };
5552
+ var slicy = function slicy2(arrLike, offset) {
5553
+ var arr = [];
5554
+ for (var i2 = offset, j2 = 0; i2 < arrLike.length; i2 += 1, j2 += 1) {
5555
+ arr[j2] = arrLike[i2];
5556
+ }
5557
+ return arr;
5558
+ };
5559
+ var joiny = function(arr, joiner) {
5560
+ var str = "";
5561
+ for (var i2 = 0; i2 < arr.length; i2 += 1) {
5562
+ str += arr[i2];
5563
+ if (i2 + 1 < arr.length) {
5564
+ str += joiner;
5579
5565
  }
5580
- return this;
5581
5566
  }
5582
- return target.apply(
5583
- that,
5584
- concatty(args, arguments)
5585
- );
5567
+ return str;
5586
5568
  };
5587
- var boundLength = max$1(0, target.length - args.length);
5588
- var boundArgs = [];
5589
- for (var i2 = 0; i2 < boundLength; i2++) {
5590
- boundArgs[i2] = "$" + i2;
5591
- }
5592
- bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
5593
- if (target.prototype) {
5594
- var Empty = function Empty2() {
5569
+ implementation = function bind2(that) {
5570
+ var target = this;
5571
+ if (typeof target !== "function" || toStr2.apply(target) !== funcType) {
5572
+ throw new TypeError(ERROR_MESSAGE + target);
5573
+ }
5574
+ var args = slicy(arguments, 1);
5575
+ var bound;
5576
+ var binder = function() {
5577
+ if (this instanceof bound) {
5578
+ var result = target.apply(
5579
+ this,
5580
+ concatty(args, arguments)
5581
+ );
5582
+ if (Object(result) === result) {
5583
+ return result;
5584
+ }
5585
+ return this;
5586
+ }
5587
+ return target.apply(
5588
+ that,
5589
+ concatty(args, arguments)
5590
+ );
5595
5591
  };
5596
- Empty.prototype = target.prototype;
5597
- bound.prototype = new Empty();
5598
- Empty.prototype = null;
5599
- }
5600
- return bound;
5601
- };
5602
- var implementation = implementation$1;
5603
- var functionBind = Function.prototype.bind || implementation;
5604
- var functionCall = Function.prototype.call;
5592
+ var boundLength = max2(0, target.length - args.length);
5593
+ var boundArgs = [];
5594
+ for (var i2 = 0; i2 < boundLength; i2++) {
5595
+ boundArgs[i2] = "$" + i2;
5596
+ }
5597
+ bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
5598
+ if (target.prototype) {
5599
+ var Empty = function Empty2() {
5600
+ };
5601
+ Empty.prototype = target.prototype;
5602
+ bound.prototype = new Empty();
5603
+ Empty.prototype = null;
5604
+ }
5605
+ return bound;
5606
+ };
5607
+ return implementation;
5608
+ }
5609
+ var functionBind;
5610
+ var hasRequiredFunctionBind;
5611
+ function requireFunctionBind() {
5612
+ if (hasRequiredFunctionBind) return functionBind;
5613
+ hasRequiredFunctionBind = 1;
5614
+ var implementation2 = requireImplementation();
5615
+ functionBind = Function.prototype.bind || implementation2;
5616
+ return functionBind;
5617
+ }
5618
+ var functionCall;
5619
+ var hasRequiredFunctionCall;
5620
+ function requireFunctionCall() {
5621
+ if (hasRequiredFunctionCall) return functionCall;
5622
+ hasRequiredFunctionCall = 1;
5623
+ functionCall = Function.prototype.call;
5624
+ return functionCall;
5625
+ }
5605
5626
  var functionApply;
5606
5627
  var hasRequiredFunctionApply;
5607
5628
  function requireFunctionApply() {
@@ -5611,14 +5632,14 @@ function requireFunctionApply() {
5611
5632
  return functionApply;
5612
5633
  }
5613
5634
  var reflectApply = typeof Reflect !== "undefined" && Reflect && Reflect.apply;
5614
- var bind$2 = functionBind;
5635
+ var bind$2 = requireFunctionBind();
5615
5636
  var $apply$1 = requireFunctionApply();
5616
- var $call$2 = functionCall;
5637
+ var $call$2 = requireFunctionCall();
5617
5638
  var $reflectApply = reflectApply;
5618
5639
  var actualApply = $reflectApply || bind$2.call($call$2, $apply$1);
5619
- var bind$1 = functionBind;
5640
+ var bind$1 = requireFunctionBind();
5620
5641
  var $TypeError$4 = type;
5621
- var $call$1 = functionCall;
5642
+ var $call$1 = requireFunctionCall();
5622
5643
  var $actualApply = actualApply;
5623
5644
  var callBindApplyHelpers = function callBindBasic(args) {
5624
5645
  if (args.length < 1 || typeof args[0] !== "function") {
@@ -5684,8 +5705,8 @@ function requireHasown() {
5684
5705
  hasRequiredHasown = 1;
5685
5706
  var call = Function.prototype.call;
5686
5707
  var $hasOwn = Object.prototype.hasOwnProperty;
5687
- var bind3 = functionBind;
5688
- hasown = bind3.call(call, $hasOwn);
5708
+ var bind2 = requireFunctionBind();
5709
+ hasown = bind2.call(call, $hasOwn);
5689
5710
  return hasown;
5690
5711
  }
5691
5712
  var undefined$1;
@@ -5699,7 +5720,7 @@ var $TypeError$3 = type;
5699
5720
  var $URIError = uri;
5700
5721
  var abs = abs$1;
5701
5722
  var floor = floor$1;
5702
- var max = max$2;
5723
+ var max = max$1;
5703
5724
  var min = min$1;
5704
5725
  var pow = pow$1;
5705
5726
  var round = round$1;
@@ -5733,7 +5754,7 @@ var getProto = requireGetProto();
5733
5754
  var $ObjectGPO = requireObject_getPrototypeOf();
5734
5755
  var $ReflectGPO = requireReflect_getPrototypeOf();
5735
5756
  var $apply = requireFunctionApply();
5736
- var $call = functionCall;
5757
+ var $call = requireFunctionCall();
5737
5758
  var needsEval = {};
5738
5759
  var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined$1 : getProto(Uint8Array);
5739
5760
  var INTRINSICS = {
@@ -5904,13 +5925,13 @@ var LEGACY_ALIASES = {
5904
5925
  "%WeakMapPrototype%": ["WeakMap", "prototype"],
5905
5926
  "%WeakSetPrototype%": ["WeakSet", "prototype"]
5906
5927
  };
5907
- var bind2 = functionBind;
5928
+ var bind = requireFunctionBind();
5908
5929
  var hasOwn = requireHasown();
5909
- var $concat = bind2.call($call, Array.prototype.concat);
5910
- var $spliceApply = bind2.call($apply, Array.prototype.splice);
5911
- var $replace = bind2.call($call, String.prototype.replace);
5912
- var $strSlice = bind2.call($call, String.prototype.slice);
5913
- var $exec = bind2.call($call, RegExp.prototype.exec);
5930
+ var $concat = bind.call($call, Array.prototype.concat);
5931
+ var $spliceApply = bind.call($apply, Array.prototype.splice);
5932
+ var $replace = bind.call($call, String.prototype.replace);
5933
+ var $strSlice = bind.call($call, String.prototype.slice);
5934
+ var $exec = bind.call($call, RegExp.prototype.exec);
5914
5935
  var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
5915
5936
  var reEscapeChar = /\\(\\)?/g;
5916
5937
  var stringToPath$1 = function stringToPath(string2) {
@@ -9,7 +9,8 @@ const DEFAULT_CONFIG = {
9
9
  scheduleType: "daily",
10
10
  scheduleTime: "12:00",
11
11
  scheduleDays: [1, 2, 3, 4, 5],
12
- scheduleCron: "0 12 * * *"
12
+ scheduleCron: "0 12 * * *",
13
+ scheduleEveryMinutes: 5
13
14
  };
14
15
  const WEEKDAYS = [
15
16
  { value: 0, label: "Sun" },
@@ -22,21 +23,25 @@ const WEEKDAYS = [
22
23
  ];
23
24
  const parseConfig = (value) => {
24
25
  if (!value) return DEFAULT_CONFIG;
25
- try {
26
- const parsed = JSON.parse(value);
27
- return {
28
- type: parsed.type || "event_based",
29
- eventName: parsed.eventName || "",
30
- delayValue: parsed.delayValue ?? 10,
31
- delayUnit: parsed.delayUnit || "minutes",
32
- scheduleType: parsed.scheduleType || "daily",
33
- scheduleTime: parsed.scheduleTime || "12:00",
34
- scheduleDays: parsed.scheduleDays || [1, 2, 3, 4, 5],
35
- scheduleCron: parsed.scheduleCron || "0 12 * * *"
36
- };
37
- } catch {
38
- return DEFAULT_CONFIG;
26
+ const normalize = (parsed) => ({
27
+ type: parsed.type || "event_based",
28
+ eventName: parsed.eventName || "",
29
+ delayValue: parsed.delayValue ?? 10,
30
+ delayUnit: parsed.delayUnit || "minutes",
31
+ scheduleType: parsed.scheduleType || "daily",
32
+ scheduleTime: parsed.scheduleTime || "12:00",
33
+ scheduleDays: Array.isArray(parsed.scheduleDays) ? parsed.scheduleDays : [1, 2, 3, 4, 5],
34
+ scheduleCron: parsed.scheduleCron || "0 12 * * *",
35
+ scheduleEveryMinutes: parsed.scheduleEveryMinutes ?? 5
36
+ });
37
+ if (typeof value === "string") {
38
+ try {
39
+ return normalize(JSON.parse(value));
40
+ } catch {
41
+ return DEFAULT_CONFIG;
42
+ }
39
43
  }
44
+ return normalize(value);
40
45
  };
41
46
  const serializeConfig = (config) => {
42
47
  return JSON.stringify(config);
@@ -182,6 +187,7 @@ const TriggerConfigField = forwardRef(
182
187
  onChange: (val) => handleUpdate({ scheduleType: val }),
183
188
  disabled,
184
189
  children: [
190
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "interval", children: "Every N minutes" }),
185
191
  /* @__PURE__ */ jsx(SingleSelectOption, { value: "daily", children: "Daily" }),
186
192
  /* @__PURE__ */ jsx(SingleSelectOption, { value: "weekly", children: "Weekly" }),
187
193
  /* @__PURE__ */ jsx(SingleSelectOption, { value: "cron", children: "Custom (Cron)" })
@@ -189,6 +195,24 @@ const TriggerConfigField = forwardRef(
189
195
  }
190
196
  )
191
197
  ] }),
198
+ config.scheduleType === "interval" && /* @__PURE__ */ jsxs(Field.Root, { name: `${name}-scheduleEveryMinutes`, children: [
199
+ /* @__PURE__ */ jsx(Field.Label, { children: "Interval" }),
200
+ /* @__PURE__ */ jsxs(
201
+ SingleSelect,
202
+ {
203
+ value: String(config.scheduleEveryMinutes ?? 5),
204
+ onChange: (val) => handleUpdate({ scheduleEveryMinutes: parseInt(val, 10) || 5 }),
205
+ disabled,
206
+ children: [
207
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "5", children: "Every 5 minutes" }),
208
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "10", children: "Every 10 minutes" }),
209
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "15", children: "Every 15 minutes" }),
210
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "30", children: "Every 30 minutes" }),
211
+ /* @__PURE__ */ jsx(SingleSelectOption, { value: "60", children: "Every 60 minutes" })
212
+ ]
213
+ }
214
+ )
215
+ ] }),
192
216
  (config.scheduleType === "daily" || config.scheduleType === "weekly") && /* @__PURE__ */ jsxs(Field.Root, { name: `${name}-scheduleTime`, children: [
193
217
  /* @__PURE__ */ jsx(Field.Label, { children: "Time of Day (UTC)" }),
194
218
  /* @__PURE__ */ jsx(
@@ -59,7 +59,7 @@ const index = {
59
59
  components: {
60
60
  Input: async () => Promise.resolve().then(() => require(
61
61
  /* webpackChunkName: "crm-trigger-config" */
62
- "../_chunks/index-DRJ5o0cz.js"
62
+ "../_chunks/index-BdNpSOmd.js"
63
63
  ))
64
64
  },
65
65
  options: {
@@ -58,7 +58,7 @@ const index = {
58
58
  components: {
59
59
  Input: async () => import(
60
60
  /* webpackChunkName: "crm-trigger-config" */
61
- "../_chunks/index-DFqEb9sm.mjs"
61
+ "../_chunks/index-DXHJL-v5.mjs"
62
62
  )
63
63
  },
64
64
  options: {
@@ -124,7 +124,7 @@ const index = {
124
124
  Component: async () => {
125
125
  const component = await import(
126
126
  /* webpackChunkName: "crm-dashboard-page" */
127
- "../_chunks/index-oWQdx7-R.mjs"
127
+ "../_chunks/index-DEONgZRM.mjs"
128
128
  );
129
129
  return component;
130
130
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inspirer-dev/crm-dashboard",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "CRM Dashboard and Tools",
5
5
  "strapi": {
6
6
  "name": "crm-dashboard",