@inspirer-dev/crm-dashboard 1.0.50 → 1.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/components/StepFlowBuilder/index.tsx +25 -2
- package/admin/src/components/StepFlowBuilder/panels/EntryConfig.tsx +5 -0
- package/admin/src/translations/en.json +1 -1
- package/admin/src/translations/ru.json +1 -1
- package/dist/_chunks/{en-CdGCb6EW.js → en-D2kTkBns.js} +1 -1
- package/dist/_chunks/{en-BIgUnT9A.mjs → en-DEUgX5uV.mjs} +1 -1
- package/dist/_chunks/{index-D0NPKIXd.mjs → index-B_HwB9Vy.mjs} +28 -2
- package/dist/_chunks/{index-D0bqpjSi.js → index-CwwnTFv3.js} +28 -2
- package/dist/_chunks/{ru-0SymptLG.js → ru-BKzplvmu.js} +1 -1
- package/dist/_chunks/{ru-Bs6gLZAD.mjs → ru-DOt1yfNm.mjs} +1 -1
- package/dist/admin/index.js +2 -2
- package/dist/admin/index.mjs +2 -2
- package/package.json +1 -1
|
@@ -45,12 +45,17 @@ const StepFlowBuilderInner = forwardRef<HTMLDivElement, StepFlowBuilderProps>(
|
|
|
45
45
|
const response = await get(url, { params: { populate: 'entrySegment' } });
|
|
46
46
|
|
|
47
47
|
const data = response?.data as { entrySegment?: { id: number; name: string } } | undefined;
|
|
48
|
+
console.log('[StepFlowBuilder] Fetch response data:', JSON.stringify(data, null, 2));
|
|
49
|
+
console.log('[StepFlowBuilder] entrySegment from API:', data?.entrySegment);
|
|
48
50
|
if (data?.entrySegment?.id) {
|
|
49
51
|
const seg = {
|
|
50
52
|
id: data.entrySegment.id,
|
|
51
53
|
name: data.entrySegment.name || `Segment #${data.entrySegment.id}`,
|
|
52
54
|
};
|
|
55
|
+
console.log('[StepFlowBuilder] Setting initialSegment:', seg);
|
|
53
56
|
setInitialSegment(seg);
|
|
57
|
+
} else {
|
|
58
|
+
console.log('[StepFlowBuilder] No entrySegment.id found in API response');
|
|
54
59
|
}
|
|
55
60
|
} catch (err) {
|
|
56
61
|
console.error('[StepFlowBuilder] Fetch error:', err);
|
|
@@ -66,35 +71,51 @@ const StepFlowBuilderInner = forwardRef<HTMLDivElement, StepFlowBuilderProps>(
|
|
|
66
71
|
const values = form?.values as Record<string, unknown> | undefined;
|
|
67
72
|
const entrySegmentValue = values?.entrySegment as ConnectDisconnect | SegmentItem | undefined;
|
|
68
73
|
|
|
74
|
+
console.log('[StepFlowBuilder] currentSegment memo - form.values.entrySegment:', entrySegmentValue);
|
|
75
|
+
console.log('[StepFlowBuilder] currentSegment memo - initialSegment:', initialSegment);
|
|
76
|
+
console.log('[StepFlowBuilder] currentSegment memo - typeof entrySegmentValue:', typeof entrySegmentValue);
|
|
77
|
+
if (entrySegmentValue) {
|
|
78
|
+
console.log('[StepFlowBuilder] currentSegment memo - entrySegmentValue keys:', Object.keys(entrySegmentValue));
|
|
79
|
+
}
|
|
80
|
+
|
|
69
81
|
if (!entrySegmentValue) {
|
|
82
|
+
console.log('[StepFlowBuilder] currentSegment memo - no entrySegmentValue, returning initialSegment');
|
|
70
83
|
return initialSegment;
|
|
71
84
|
}
|
|
72
85
|
|
|
73
86
|
// Handle connect/disconnect structure (user changed the segment in UI)
|
|
74
87
|
if ('connect' in entrySegmentValue || 'disconnect' in entrySegmentValue) {
|
|
88
|
+
console.log('[StepFlowBuilder] currentSegment memo - detected connect/disconnect structure');
|
|
75
89
|
const { connect = [], disconnect = [] } = entrySegmentValue as ConnectDisconnect;
|
|
76
90
|
|
|
77
91
|
if (connect.length > 0) {
|
|
78
92
|
const seg = connect[0];
|
|
93
|
+
console.log('[StepFlowBuilder] currentSegment memo - returning from connect:', seg);
|
|
79
94
|
return { id: seg.id!, name: seg.name || `Segment #${seg.id}` };
|
|
80
95
|
}
|
|
81
96
|
|
|
82
97
|
if (disconnect.length > 0 && initialSegment) {
|
|
83
98
|
const disconnectedId = disconnect[0]?.id;
|
|
84
99
|
if (disconnectedId === initialSegment.id) {
|
|
100
|
+
console.log('[StepFlowBuilder] currentSegment memo - segment disconnected, returning null');
|
|
85
101
|
return null;
|
|
86
102
|
}
|
|
87
103
|
}
|
|
88
104
|
|
|
105
|
+
console.log('[StepFlowBuilder] currentSegment memo - connect/disconnect but falling back to initialSegment');
|
|
89
106
|
return initialSegment;
|
|
90
107
|
}
|
|
91
108
|
|
|
92
109
|
// Handle direct segment object (loaded from server)
|
|
93
110
|
const segmentObj = entrySegmentValue as SegmentItem;
|
|
111
|
+
console.log('[StepFlowBuilder] currentSegment memo - treating as direct segment object:', segmentObj);
|
|
94
112
|
if (segmentObj.id) {
|
|
95
|
-
|
|
113
|
+
const result = { id: segmentObj.id, name: segmentObj.name || `Segment #${segmentObj.id}` };
|
|
114
|
+
console.log('[StepFlowBuilder] currentSegment memo - returning direct segment:', result);
|
|
115
|
+
return result;
|
|
96
116
|
}
|
|
97
117
|
|
|
118
|
+
console.log('[StepFlowBuilder] currentSegment memo - no id in segmentObj, returning initialSegment');
|
|
98
119
|
return initialSegment;
|
|
99
120
|
}, [form?.values, initialSegment]);
|
|
100
121
|
|
|
@@ -102,10 +123,12 @@ const StepFlowBuilderInner = forwardRef<HTMLDivElement, StepFlowBuilderProps>(
|
|
|
102
123
|
const values = form?.values as Record<string, unknown> | undefined;
|
|
103
124
|
if (!values) return {};
|
|
104
125
|
|
|
105
|
-
|
|
126
|
+
const ctx = {
|
|
106
127
|
triggerConfig: values.triggerConfig as CampaignContext['triggerConfig'],
|
|
107
128
|
entrySegment: currentSegment,
|
|
108
129
|
};
|
|
130
|
+
console.log('[StepFlowBuilder] campaignContext:', ctx);
|
|
131
|
+
return ctx;
|
|
109
132
|
}, [form?.values, currentSegment]);
|
|
110
133
|
|
|
111
134
|
useEffect(() => {
|
|
@@ -88,6 +88,7 @@ const EntryConfigInner: React.FC<EntryConfigProps & { theme: FlowThemeColors }>
|
|
|
88
88
|
entrySegment,
|
|
89
89
|
theme,
|
|
90
90
|
}) => {
|
|
91
|
+
console.log('[EntryConfig] Received entrySegment:', entrySegment);
|
|
91
92
|
const config = parseTriggerConfig(triggerConfig);
|
|
92
93
|
|
|
93
94
|
const renderTriggerInfo = () => {
|
|
@@ -236,6 +237,10 @@ const EntryConfigInner: React.FC<EntryConfigProps & { theme: FlowThemeColors }>
|
|
|
236
237
|
const hasSegment = entrySegment && (entrySegment.id || entrySegment.name);
|
|
237
238
|
const segmentDisplayName = entrySegment?.name || (entrySegment?.id ? `Segment #${entrySegment.id}` : null);
|
|
238
239
|
|
|
240
|
+
console.log('[EntryConfig] renderSegmentInfo - entrySegment:', entrySegment);
|
|
241
|
+
console.log('[EntryConfig] renderSegmentInfo - hasSegment:', hasSegment);
|
|
242
|
+
console.log('[EntryConfig] renderSegmentInfo - segmentDisplayName:', segmentDisplayName);
|
|
243
|
+
|
|
239
244
|
if (!hasSegment || !segmentDisplayName) {
|
|
240
245
|
return (
|
|
241
246
|
<div
|
|
@@ -119,5 +119,5 @@
|
|
|
119
119
|
"crm-dashboard.template.title.description": "For email: subject line. For Telegram: optional internal title (not shown to user). For push: notification title.",
|
|
120
120
|
|
|
121
121
|
"crm-dashboard.template.body.label": "Message Body",
|
|
122
|
-
"crm-dashboard.template.body.description": "The
|
|
122
|
+
"crm-dashboard.template.body.description": "The message text. Variables: {{userName}}, {{balance}}, {{depositCount}}, {{depositTotal}}, {{amount}}. Markdown: *bold*, _italic_"
|
|
123
123
|
}
|
|
@@ -119,5 +119,5 @@
|
|
|
119
119
|
"crm-dashboard.template.title.description": "Для email: тема письма. Для Telegram: внутренний заголовок (не виден пользователю). Для push: заголовок уведомления.",
|
|
120
120
|
|
|
121
121
|
"crm-dashboard.template.body.label": "Текст сообщения",
|
|
122
|
-
"crm-dashboard.template.body.description": "Текст сообщения.
|
|
122
|
+
"crm-dashboard.template.body.description": "Текст сообщения. Переменные: {{userName}}, {{balance}}, {{depositCount}}, {{depositTotal}}, {{amount}}. Markdown: *жирный*, _курсив_"
|
|
123
123
|
}
|
|
@@ -81,6 +81,6 @@ const en = {
|
|
|
81
81
|
"crm-dashboard.template.title.label": "Title",
|
|
82
82
|
"crm-dashboard.template.title.description": "For email: subject line. For Telegram: optional internal title (not shown to user). For push: notification title.",
|
|
83
83
|
"crm-dashboard.template.body.label": "Message Body",
|
|
84
|
-
"crm-dashboard.template.body.description": "The
|
|
84
|
+
"crm-dashboard.template.body.description": "The message text. Variables: {{userName}}, {{balance}}, {{depositCount}}, {{depositTotal}}, {{amount}}. Markdown: *bold*, _italic_"
|
|
85
85
|
};
|
|
86
86
|
exports.default = en;
|
|
@@ -79,7 +79,7 @@ const en = {
|
|
|
79
79
|
"crm-dashboard.template.title.label": "Title",
|
|
80
80
|
"crm-dashboard.template.title.description": "For email: subject line. For Telegram: optional internal title (not shown to user). For push: notification title.",
|
|
81
81
|
"crm-dashboard.template.body.label": "Message Body",
|
|
82
|
-
"crm-dashboard.template.body.description": "The
|
|
82
|
+
"crm-dashboard.template.body.description": "The message text. Variables: {{userName}}, {{balance}}, {{depositCount}}, {{depositTotal}}, {{amount}}. Markdown: *bold*, _italic_"
|
|
83
83
|
};
|
|
84
84
|
export {
|
|
85
85
|
en as default
|
|
@@ -1921,6 +1921,7 @@ const EntryConfigInner = ({
|
|
|
1921
1921
|
entrySegment,
|
|
1922
1922
|
theme
|
|
1923
1923
|
}) => {
|
|
1924
|
+
console.log("[EntryConfig] Received entrySegment:", entrySegment);
|
|
1924
1925
|
const config = parseTriggerConfig(triggerConfig);
|
|
1925
1926
|
const renderTriggerInfo = () => {
|
|
1926
1927
|
if (!config) {
|
|
@@ -2052,6 +2053,9 @@ const EntryConfigInner = ({
|
|
|
2052
2053
|
const renderSegmentInfo = () => {
|
|
2053
2054
|
const hasSegment = entrySegment && (entrySegment.id || entrySegment.name);
|
|
2054
2055
|
const segmentDisplayName = entrySegment?.name || (entrySegment?.id ? `Segment #${entrySegment.id}` : null);
|
|
2056
|
+
console.log("[EntryConfig] renderSegmentInfo - entrySegment:", entrySegment);
|
|
2057
|
+
console.log("[EntryConfig] renderSegmentInfo - hasSegment:", hasSegment);
|
|
2058
|
+
console.log("[EntryConfig] renderSegmentInfo - segmentDisplayName:", segmentDisplayName);
|
|
2055
2059
|
if (!hasSegment || !segmentDisplayName) {
|
|
2056
2060
|
return /* @__PURE__ */ jsx(
|
|
2057
2061
|
"div",
|
|
@@ -3669,12 +3673,17 @@ const StepFlowBuilderInner = forwardRef(
|
|
|
3669
3673
|
const url = `/content-manager/collection-types/${model}/${documentId}`;
|
|
3670
3674
|
const response = await get(url, { params: { populate: "entrySegment" } });
|
|
3671
3675
|
const data = response?.data;
|
|
3676
|
+
console.log("[StepFlowBuilder] Fetch response data:", JSON.stringify(data, null, 2));
|
|
3677
|
+
console.log("[StepFlowBuilder] entrySegment from API:", data?.entrySegment);
|
|
3672
3678
|
if (data?.entrySegment?.id) {
|
|
3673
3679
|
const seg = {
|
|
3674
3680
|
id: data.entrySegment.id,
|
|
3675
3681
|
name: data.entrySegment.name || `Segment #${data.entrySegment.id}`
|
|
3676
3682
|
};
|
|
3683
|
+
console.log("[StepFlowBuilder] Setting initialSegment:", seg);
|
|
3677
3684
|
setInitialSegment(seg);
|
|
3685
|
+
} else {
|
|
3686
|
+
console.log("[StepFlowBuilder] No entrySegment.id found in API response");
|
|
3678
3687
|
}
|
|
3679
3688
|
} catch (err) {
|
|
3680
3689
|
console.error("[StepFlowBuilder] Fetch error:", err);
|
|
@@ -3687,36 +3696,53 @@ const StepFlowBuilderInner = forwardRef(
|
|
|
3687
3696
|
const currentSegment = useMemo(() => {
|
|
3688
3697
|
const values = form?.values;
|
|
3689
3698
|
const entrySegmentValue = values?.entrySegment;
|
|
3699
|
+
console.log("[StepFlowBuilder] currentSegment memo - form.values.entrySegment:", entrySegmentValue);
|
|
3700
|
+
console.log("[StepFlowBuilder] currentSegment memo - initialSegment:", initialSegment);
|
|
3701
|
+
console.log("[StepFlowBuilder] currentSegment memo - typeof entrySegmentValue:", typeof entrySegmentValue);
|
|
3702
|
+
if (entrySegmentValue) {
|
|
3703
|
+
console.log("[StepFlowBuilder] currentSegment memo - entrySegmentValue keys:", Object.keys(entrySegmentValue));
|
|
3704
|
+
}
|
|
3690
3705
|
if (!entrySegmentValue) {
|
|
3706
|
+
console.log("[StepFlowBuilder] currentSegment memo - no entrySegmentValue, returning initialSegment");
|
|
3691
3707
|
return initialSegment;
|
|
3692
3708
|
}
|
|
3693
3709
|
if ("connect" in entrySegmentValue || "disconnect" in entrySegmentValue) {
|
|
3710
|
+
console.log("[StepFlowBuilder] currentSegment memo - detected connect/disconnect structure");
|
|
3694
3711
|
const { connect = [], disconnect = [] } = entrySegmentValue;
|
|
3695
3712
|
if (connect.length > 0) {
|
|
3696
3713
|
const seg = connect[0];
|
|
3714
|
+
console.log("[StepFlowBuilder] currentSegment memo - returning from connect:", seg);
|
|
3697
3715
|
return { id: seg.id, name: seg.name || `Segment #${seg.id}` };
|
|
3698
3716
|
}
|
|
3699
3717
|
if (disconnect.length > 0 && initialSegment) {
|
|
3700
3718
|
const disconnectedId = disconnect[0]?.id;
|
|
3701
3719
|
if (disconnectedId === initialSegment.id) {
|
|
3720
|
+
console.log("[StepFlowBuilder] currentSegment memo - segment disconnected, returning null");
|
|
3702
3721
|
return null;
|
|
3703
3722
|
}
|
|
3704
3723
|
}
|
|
3724
|
+
console.log("[StepFlowBuilder] currentSegment memo - connect/disconnect but falling back to initialSegment");
|
|
3705
3725
|
return initialSegment;
|
|
3706
3726
|
}
|
|
3707
3727
|
const segmentObj = entrySegmentValue;
|
|
3728
|
+
console.log("[StepFlowBuilder] currentSegment memo - treating as direct segment object:", segmentObj);
|
|
3708
3729
|
if (segmentObj.id) {
|
|
3709
|
-
|
|
3730
|
+
const result = { id: segmentObj.id, name: segmentObj.name || `Segment #${segmentObj.id}` };
|
|
3731
|
+
console.log("[StepFlowBuilder] currentSegment memo - returning direct segment:", result);
|
|
3732
|
+
return result;
|
|
3710
3733
|
}
|
|
3734
|
+
console.log("[StepFlowBuilder] currentSegment memo - no id in segmentObj, returning initialSegment");
|
|
3711
3735
|
return initialSegment;
|
|
3712
3736
|
}, [form?.values, initialSegment]);
|
|
3713
3737
|
const campaignContext = useMemo(() => {
|
|
3714
3738
|
const values = form?.values;
|
|
3715
3739
|
if (!values) return {};
|
|
3716
|
-
|
|
3740
|
+
const ctx = {
|
|
3717
3741
|
triggerConfig: values.triggerConfig,
|
|
3718
3742
|
entrySegment: currentSegment
|
|
3719
3743
|
};
|
|
3744
|
+
console.log("[StepFlowBuilder] campaignContext:", ctx);
|
|
3745
|
+
return ctx;
|
|
3720
3746
|
}, [form?.values, currentSegment]);
|
|
3721
3747
|
useEffect(() => {
|
|
3722
3748
|
const parsed = parseValue(value);
|
|
@@ -1926,6 +1926,7 @@ const EntryConfigInner = ({
|
|
|
1926
1926
|
entrySegment,
|
|
1927
1927
|
theme
|
|
1928
1928
|
}) => {
|
|
1929
|
+
console.log("[EntryConfig] Received entrySegment:", entrySegment);
|
|
1929
1930
|
const config = parseTriggerConfig(triggerConfig);
|
|
1930
1931
|
const renderTriggerInfo = () => {
|
|
1931
1932
|
if (!config) {
|
|
@@ -2057,6 +2058,9 @@ const EntryConfigInner = ({
|
|
|
2057
2058
|
const renderSegmentInfo = () => {
|
|
2058
2059
|
const hasSegment = entrySegment && (entrySegment.id || entrySegment.name);
|
|
2059
2060
|
const segmentDisplayName = entrySegment?.name || (entrySegment?.id ? `Segment #${entrySegment.id}` : null);
|
|
2061
|
+
console.log("[EntryConfig] renderSegmentInfo - entrySegment:", entrySegment);
|
|
2062
|
+
console.log("[EntryConfig] renderSegmentInfo - hasSegment:", hasSegment);
|
|
2063
|
+
console.log("[EntryConfig] renderSegmentInfo - segmentDisplayName:", segmentDisplayName);
|
|
2060
2064
|
if (!hasSegment || !segmentDisplayName) {
|
|
2061
2065
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2062
2066
|
"div",
|
|
@@ -3674,12 +3678,17 @@ const StepFlowBuilderInner = React.forwardRef(
|
|
|
3674
3678
|
const url = `/content-manager/collection-types/${model}/${documentId}`;
|
|
3675
3679
|
const response = await get(url, { params: { populate: "entrySegment" } });
|
|
3676
3680
|
const data = response?.data;
|
|
3681
|
+
console.log("[StepFlowBuilder] Fetch response data:", JSON.stringify(data, null, 2));
|
|
3682
|
+
console.log("[StepFlowBuilder] entrySegment from API:", data?.entrySegment);
|
|
3677
3683
|
if (data?.entrySegment?.id) {
|
|
3678
3684
|
const seg = {
|
|
3679
3685
|
id: data.entrySegment.id,
|
|
3680
3686
|
name: data.entrySegment.name || `Segment #${data.entrySegment.id}`
|
|
3681
3687
|
};
|
|
3688
|
+
console.log("[StepFlowBuilder] Setting initialSegment:", seg);
|
|
3682
3689
|
setInitialSegment(seg);
|
|
3690
|
+
} else {
|
|
3691
|
+
console.log("[StepFlowBuilder] No entrySegment.id found in API response");
|
|
3683
3692
|
}
|
|
3684
3693
|
} catch (err) {
|
|
3685
3694
|
console.error("[StepFlowBuilder] Fetch error:", err);
|
|
@@ -3692,36 +3701,53 @@ const StepFlowBuilderInner = React.forwardRef(
|
|
|
3692
3701
|
const currentSegment = React.useMemo(() => {
|
|
3693
3702
|
const values = form?.values;
|
|
3694
3703
|
const entrySegmentValue = values?.entrySegment;
|
|
3704
|
+
console.log("[StepFlowBuilder] currentSegment memo - form.values.entrySegment:", entrySegmentValue);
|
|
3705
|
+
console.log("[StepFlowBuilder] currentSegment memo - initialSegment:", initialSegment);
|
|
3706
|
+
console.log("[StepFlowBuilder] currentSegment memo - typeof entrySegmentValue:", typeof entrySegmentValue);
|
|
3707
|
+
if (entrySegmentValue) {
|
|
3708
|
+
console.log("[StepFlowBuilder] currentSegment memo - entrySegmentValue keys:", Object.keys(entrySegmentValue));
|
|
3709
|
+
}
|
|
3695
3710
|
if (!entrySegmentValue) {
|
|
3711
|
+
console.log("[StepFlowBuilder] currentSegment memo - no entrySegmentValue, returning initialSegment");
|
|
3696
3712
|
return initialSegment;
|
|
3697
3713
|
}
|
|
3698
3714
|
if ("connect" in entrySegmentValue || "disconnect" in entrySegmentValue) {
|
|
3715
|
+
console.log("[StepFlowBuilder] currentSegment memo - detected connect/disconnect structure");
|
|
3699
3716
|
const { connect = [], disconnect = [] } = entrySegmentValue;
|
|
3700
3717
|
if (connect.length > 0) {
|
|
3701
3718
|
const seg = connect[0];
|
|
3719
|
+
console.log("[StepFlowBuilder] currentSegment memo - returning from connect:", seg);
|
|
3702
3720
|
return { id: seg.id, name: seg.name || `Segment #${seg.id}` };
|
|
3703
3721
|
}
|
|
3704
3722
|
if (disconnect.length > 0 && initialSegment) {
|
|
3705
3723
|
const disconnectedId = disconnect[0]?.id;
|
|
3706
3724
|
if (disconnectedId === initialSegment.id) {
|
|
3725
|
+
console.log("[StepFlowBuilder] currentSegment memo - segment disconnected, returning null");
|
|
3707
3726
|
return null;
|
|
3708
3727
|
}
|
|
3709
3728
|
}
|
|
3729
|
+
console.log("[StepFlowBuilder] currentSegment memo - connect/disconnect but falling back to initialSegment");
|
|
3710
3730
|
return initialSegment;
|
|
3711
3731
|
}
|
|
3712
3732
|
const segmentObj = entrySegmentValue;
|
|
3733
|
+
console.log("[StepFlowBuilder] currentSegment memo - treating as direct segment object:", segmentObj);
|
|
3713
3734
|
if (segmentObj.id) {
|
|
3714
|
-
|
|
3735
|
+
const result = { id: segmentObj.id, name: segmentObj.name || `Segment #${segmentObj.id}` };
|
|
3736
|
+
console.log("[StepFlowBuilder] currentSegment memo - returning direct segment:", result);
|
|
3737
|
+
return result;
|
|
3715
3738
|
}
|
|
3739
|
+
console.log("[StepFlowBuilder] currentSegment memo - no id in segmentObj, returning initialSegment");
|
|
3716
3740
|
return initialSegment;
|
|
3717
3741
|
}, [form?.values, initialSegment]);
|
|
3718
3742
|
const campaignContext = React.useMemo(() => {
|
|
3719
3743
|
const values = form?.values;
|
|
3720
3744
|
if (!values) return {};
|
|
3721
|
-
|
|
3745
|
+
const ctx = {
|
|
3722
3746
|
triggerConfig: values.triggerConfig,
|
|
3723
3747
|
entrySegment: currentSegment
|
|
3724
3748
|
};
|
|
3749
|
+
console.log("[StepFlowBuilder] campaignContext:", ctx);
|
|
3750
|
+
return ctx;
|
|
3725
3751
|
}, [form?.values, currentSegment]);
|
|
3726
3752
|
React.useEffect(() => {
|
|
3727
3753
|
const parsed = parseValue(value);
|
|
@@ -81,6 +81,6 @@ const ru = {
|
|
|
81
81
|
"crm-dashboard.template.title.label": "Заголовок",
|
|
82
82
|
"crm-dashboard.template.title.description": "Для email: тема письма. Для Telegram: внутренний заголовок (не виден пользователю). Для push: заголовок уведомления.",
|
|
83
83
|
"crm-dashboard.template.body.label": "Текст сообщения",
|
|
84
|
-
"crm-dashboard.template.body.description": "Текст сообщения.
|
|
84
|
+
"crm-dashboard.template.body.description": "Текст сообщения. Переменные: {{userName}}, {{balance}}, {{depositCount}}, {{depositTotal}}, {{amount}}. Markdown: *жирный*, _курсив_"
|
|
85
85
|
};
|
|
86
86
|
exports.default = ru;
|
|
@@ -79,7 +79,7 @@ const ru = {
|
|
|
79
79
|
"crm-dashboard.template.title.label": "Заголовок",
|
|
80
80
|
"crm-dashboard.template.title.description": "Для email: тема письма. Для Telegram: внутренний заголовок (не виден пользователю). Для push: заголовок уведомления.",
|
|
81
81
|
"crm-dashboard.template.body.label": "Текст сообщения",
|
|
82
|
-
"crm-dashboard.template.body.description": "Текст сообщения.
|
|
82
|
+
"crm-dashboard.template.body.description": "Текст сообщения. Переменные: {{userName}}, {{balance}}, {{depositCount}}, {{depositTotal}}, {{amount}}. Markdown: *жирный*, _курсив_"
|
|
83
83
|
};
|
|
84
84
|
export {
|
|
85
85
|
ru as default
|
package/dist/admin/index.js
CHANGED
|
@@ -131,7 +131,7 @@ const index = {
|
|
|
131
131
|
components: {
|
|
132
132
|
Input: async () => Promise.resolve().then(() => require(
|
|
133
133
|
/* webpackChunkName: "crm-step-flow-builder" */
|
|
134
|
-
"../_chunks/index-
|
|
134
|
+
"../_chunks/index-CwwnTFv3.js"
|
|
135
135
|
))
|
|
136
136
|
},
|
|
137
137
|
options: {
|
|
@@ -168,7 +168,7 @@ const index = {
|
|
|
168
168
|
return Promise.all(
|
|
169
169
|
locales.map(async (locale) => {
|
|
170
170
|
try {
|
|
171
|
-
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("../_chunks/en-
|
|
171
|
+
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("../_chunks/en-D2kTkBns.js")), "./translations/ru.json": () => Promise.resolve().then(() => require("../_chunks/ru-BKzplvmu.js")) }), `./translations/${locale}.json`, 3);
|
|
172
172
|
return { data, locale };
|
|
173
173
|
} catch {
|
|
174
174
|
return { data: {}, locale };
|
package/dist/admin/index.mjs
CHANGED
|
@@ -130,7 +130,7 @@ const index = {
|
|
|
130
130
|
components: {
|
|
131
131
|
Input: async () => import(
|
|
132
132
|
/* webpackChunkName: "crm-step-flow-builder" */
|
|
133
|
-
"../_chunks/index-
|
|
133
|
+
"../_chunks/index-B_HwB9Vy.mjs"
|
|
134
134
|
)
|
|
135
135
|
},
|
|
136
136
|
options: {
|
|
@@ -167,7 +167,7 @@ const index = {
|
|
|
167
167
|
return Promise.all(
|
|
168
168
|
locales.map(async (locale) => {
|
|
169
169
|
try {
|
|
170
|
-
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("../_chunks/en-
|
|
170
|
+
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("../_chunks/en-DEUgX5uV.mjs"), "./translations/ru.json": () => import("../_chunks/ru-DOt1yfNm.mjs") }), `./translations/${locale}.json`, 3);
|
|
171
171
|
return { data, locale };
|
|
172
172
|
} catch {
|
|
173
173
|
return { data: {}, locale };
|