@botonic/plugin-flow-builder 0.22.5 → 0.22.6-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/action/index.js +24 -4
- package/lib/cjs/action/index.js.map +1 -1
- package/lib/cjs/constants.d.ts +1 -0
- package/lib/cjs/constants.js +2 -1
- package/lib/cjs/constants.js.map +1 -1
- package/lib/esm/action/index.js +26 -6
- package/lib/esm/action/index.js.map +1 -1
- package/lib/esm/constants.d.ts +1 -0
- package/lib/esm/constants.js +1 -0
- package/lib/esm/constants.js.map +1 -1
- package/package.json +2 -2
- package/src/action/index.tsx +33 -5
- package/src/constants.ts +1 -0
- package/src/.DS_Store +0 -0
- package/src/content-fields/.DS_Store +0 -0
package/lib/cjs/action/index.js
CHANGED
|
@@ -19,8 +19,15 @@ class FlowBuilderAction extends react_2.default.Component {
|
|
|
19
19
|
const handoffContent = contents.find(content => content instanceof content_fields_1.FlowHandoff);
|
|
20
20
|
if (handoffContent)
|
|
21
21
|
await handoffContent.doHandoff(request);
|
|
22
|
-
const
|
|
23
|
-
|
|
22
|
+
const contentsWithoutHandoff = contents.filter(content => content instanceof content_fields_1.FlowHandoff ? false : true);
|
|
23
|
+
const contentsWithVariables = contentsWithoutHandoff.map(content => {
|
|
24
|
+
if (content instanceof content_fields_1.FlowText) {
|
|
25
|
+
console.log(content.text);
|
|
26
|
+
content.text = replaceVariables(content.text, request.session.user.extra_data);
|
|
27
|
+
}
|
|
28
|
+
return content;
|
|
29
|
+
});
|
|
30
|
+
return { contents: contentsWithVariables };
|
|
24
31
|
}
|
|
25
32
|
render() {
|
|
26
33
|
const { contents } = this.props;
|
|
@@ -55,8 +62,10 @@ async function getTargetNode(cmsApi, locale, request) {
|
|
|
55
62
|
return await getFallbackNode(cmsApi, request);
|
|
56
63
|
}
|
|
57
64
|
async function getFallbackNode(cmsApi, request) {
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
if (!request.session.user.extra_data) {
|
|
66
|
+
request.session.user.extra_data = { isFirstFallbackOption: true };
|
|
67
|
+
}
|
|
68
|
+
const isFirstFallbackOption = request.session.user.extra_data.isFirstFallbackOption;
|
|
60
69
|
const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption);
|
|
61
70
|
request.session.user.extra_data.isFirstFallbackOption = !isFirstFallbackOption;
|
|
62
71
|
const event = {
|
|
@@ -65,4 +74,15 @@ async function getFallbackNode(cmsApi, request) {
|
|
|
65
74
|
await (0, tracking_1.trackEvent)(request, event);
|
|
66
75
|
return fallbackNode;
|
|
67
76
|
}
|
|
77
|
+
function replaceVariables(text, extraData) {
|
|
78
|
+
const matches = text.match(constants_1.VARIABLE_REGEX);
|
|
79
|
+
if (matches && extraData) {
|
|
80
|
+
matches.forEach(match => {
|
|
81
|
+
const variable = match.slice(1, -1);
|
|
82
|
+
const value = extraData[variable] ? extraData[variable] : match;
|
|
83
|
+
text = text.replace(match, value);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return text;
|
|
87
|
+
}
|
|
68
88
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;;;AAAA,2EAIwD;AACxD,0CAA4E;AAC5E,0DAAyB;AAGzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":";;;;AAAA,2EAIwD;AACxD,0CAA4E;AAC5E,0DAAyB;AAGzB,4CAAoE;AACpE,sDAAsE;AAEtE,wCAAiD;AACjD,yCAAuC;AACvC,6CAAiD;AAMjD,MAAa,iBAAkB,SAAQ,eAAK,CAAC,SAAiC;IAG5E,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,OAAsB;QAEtB,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,UAAU,GAAG,MAAM,aAAa,CACpC,iBAAiB,CAAC,MAAM,EACxB,MAAM,EACN,OAAO,CACR,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACxD,UAAU,EACV,MAAM,CACP,CAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,4BAAW,CAC3B,CAAA;QAChB,IAAI,cAAc;YAAE,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CACvD,OAAO,YAAY,4BAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC9C,CAAA;QAED,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACjE,IAAI,OAAO,YAAY,yBAAQ,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACzB,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAC7B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAChC,CAAA;aACF;YACD,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAA;IAC5C,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;;AA9CH,8CA+CC;AA9CQ,6BAAW,GAAG,sBAAc,CAAA;AAgDrC,MAAa,6BAA8B,SAAQ,iBAAiB;IAClE,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,OAAO,CACL,8BAAC,oBAAY,IAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,IACzC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC1C,CAChB,CAAA;IACH,CAAC;CACF;AATD,sEASC;AAED,KAAK,UAAU,aAAa,CAC1B,MAAsB,EACtB,MAAc,EACd,OAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAA;IACrC,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,iCAAqB,EAAE,CAAC,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,CAAC,SAAS;QAC3B,CAAC,CAAC,MAAM,IAAA,+BAAkB,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,CAAC,CAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAuB,CAAA;IAExD,IAAI,UAAU,EAAE;QACd,MAAM,KAAK,GAAgB;YACzB,UAAU,EAAE,iBAAS,CAAC,MAAM;YAC5B,UAAU,EAAE;gBACV,QAAQ,EAAE,UAAU,CAAC,IAAI;aAC1B;SACF,CAAA;QACD,MAAM,IAAA,qBAAU,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAChC,OAAO,UAAU,CAAA;KAClB;IACD,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAsB,EAAE,OAAsB;IAC3E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE;QACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAA;KAClE;IACD,MAAM,qBAAqB,GACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAA;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAA;IAClE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,qBAAqB,CAAA;IAE9E,MAAM,KAAK,GAAkB;QAC3B,UAAU,EAAE,iBAAS,CAAC,QAAQ;KAC/B,CAAA;IACD,MAAM,IAAA,qBAAU,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAChC,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAA+B;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,0BAAc,CAAC,CAAA;IAE1C,IAAI,OAAO,IAAI,SAAS,EAAE;QACxB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC/D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;KACH;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/lib/cjs/constants.d.ts
CHANGED
package/lib/cjs/constants.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SOURCE_INFO_SEPARATOR = void 0;
|
|
3
|
+
exports.VARIABLE_REGEX = exports.SOURCE_INFO_SEPARATOR = void 0;
|
|
4
4
|
exports.SOURCE_INFO_SEPARATOR = '|source_';
|
|
5
|
+
exports.VARIABLE_REGEX = /{([^}]+)}/g;
|
|
5
6
|
//# sourceMappingURL=constants.js.map
|
package/lib/cjs/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,UAAU,CAAA;AAClC,QAAA,cAAc,GAAG,YAAY,CAAA"}
|
package/lib/esm/action/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EventName, } from '@botonic/plugin-hubtype-analytics/lib/cjs/types';
|
|
2
2
|
import { Multichannel, RequestContext } from '@botonic/react';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { SOURCE_INFO_SEPARATOR } from '../constants';
|
|
5
|
-
import { FlowHandoff } from '../content-fields';
|
|
4
|
+
import { SOURCE_INFO_SEPARATOR, VARIABLE_REGEX } from '../constants';
|
|
5
|
+
import { FlowHandoff, FlowText } from '../content-fields';
|
|
6
6
|
import { getFlowBuilderPlugin } from '../helpers';
|
|
7
7
|
import { trackEvent } from './tracking';
|
|
8
8
|
import { getNodeByUserInput } from './user-input';
|
|
@@ -15,8 +15,15 @@ export class FlowBuilderAction extends React.Component {
|
|
|
15
15
|
const handoffContent = contents.find(content => content instanceof FlowHandoff);
|
|
16
16
|
if (handoffContent)
|
|
17
17
|
await handoffContent.doHandoff(request);
|
|
18
|
-
const
|
|
19
|
-
|
|
18
|
+
const contentsWithoutHandoff = contents.filter(content => content instanceof FlowHandoff ? false : true);
|
|
19
|
+
const contentsWithVariables = contentsWithoutHandoff.map(content => {
|
|
20
|
+
if (content instanceof FlowText) {
|
|
21
|
+
console.log(content.text);
|
|
22
|
+
content.text = replaceVariables(content.text, request.session.user.extra_data);
|
|
23
|
+
}
|
|
24
|
+
return content;
|
|
25
|
+
});
|
|
26
|
+
return { contents: contentsWithVariables };
|
|
20
27
|
}
|
|
21
28
|
render() {
|
|
22
29
|
const { contents } = this.props;
|
|
@@ -49,8 +56,10 @@ async function getTargetNode(cmsApi, locale, request) {
|
|
|
49
56
|
return await getFallbackNode(cmsApi, request);
|
|
50
57
|
}
|
|
51
58
|
async function getFallbackNode(cmsApi, request) {
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
if (!request.session.user.extra_data) {
|
|
60
|
+
request.session.user.extra_data = { isFirstFallbackOption: true };
|
|
61
|
+
}
|
|
62
|
+
const isFirstFallbackOption = request.session.user.extra_data.isFirstFallbackOption;
|
|
54
63
|
const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption);
|
|
55
64
|
request.session.user.extra_data.isFirstFallbackOption = !isFirstFallbackOption;
|
|
56
65
|
const event = {
|
|
@@ -59,4 +68,15 @@ async function getFallbackNode(cmsApi, request) {
|
|
|
59
68
|
await trackEvent(request, event);
|
|
60
69
|
return fallbackNode;
|
|
61
70
|
}
|
|
71
|
+
function replaceVariables(text, extraData) {
|
|
72
|
+
const matches = text.match(VARIABLE_REGEX);
|
|
73
|
+
if (matches && extraData) {
|
|
74
|
+
matches.forEach(match => {
|
|
75
|
+
const variable = match.slice(1, -1);
|
|
76
|
+
const value = extraData[variable] ? extraData[variable] : match;
|
|
77
|
+
text = text.replace(match, value);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return text;
|
|
81
|
+
}
|
|
62
82
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,GACV,MAAM,iDAAiD,CAAA;AACxD,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,GACV,MAAM,iDAAiD,CAAA;AACxD,OAAO,EAAiB,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAe,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMjD,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAiC;IAG5E,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,OAAsB;QAEtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,UAAU,GAAG,MAAM,aAAa,CACpC,iBAAiB,CAAC,MAAM,EACxB,MAAM,EACN,OAAO,CACR,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CACxD,UAAU,EACV,MAAM,CACP,CAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAClC,OAAO,CAAC,EAAE,CAAC,OAAO,YAAY,WAAW,CAC3B,CAAA;QAChB,IAAI,cAAc;YAAE,MAAM,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CACvD,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC9C,CAAA;QAED,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACjE,IAAI,OAAO,YAAY,QAAQ,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACzB,OAAO,CAAC,IAAI,GAAG,gBAAgB,CAC7B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAChC,CAAA;aACF;YACD,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAA;IAC5C,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;;AA7CM,6BAAW,GAAG,cAAc,CAAA;AAgDrC,MAAM,OAAO,6BAA8B,SAAQ,iBAAiB;IAClE,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,OAAO,CACL,oBAAC,YAAY,IAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,IACzC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC1C,CAChB,CAAA;IACH,CAAC;CACF;AAED,KAAK,UAAU,aAAa,CAC1B,MAAsB,EACtB,MAAc,EACd,OAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAA;IACrC,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,CAAC,SAAS;QAC3B,CAAC,CAAC,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,CAAC,CAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAuB,CAAA;IAExD,IAAI,UAAU,EAAE;QACd,MAAM,KAAK,GAAgB;YACzB,UAAU,EAAE,SAAS,CAAC,MAAM;YAC5B,UAAU,EAAE;gBACV,QAAQ,EAAE,UAAU,CAAC,IAAI;aAC1B;SACF,CAAA;QACD,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAChC,OAAO,UAAU,CAAA;KAClB;IACD,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAsB,EAAE,OAAsB;IAC3E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE;QACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAA;KAClE;IACD,MAAM,qBAAqB,GACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAA;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAA;IAClE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,qBAAqB,CAAA;IAE9E,MAAM,KAAK,GAAkB;QAC3B,UAAU,EAAE,SAAS,CAAC,QAAQ;KAC/B,CAAA;IACD,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAChC,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAA+B;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAE1C,IAAI,OAAO,IAAI,SAAS,EAAE;QACxB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC/D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;KACH;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/lib/esm/constants.d.ts
CHANGED
package/lib/esm/constants.js
CHANGED
package/lib/esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAA;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botonic/plugin-flow-builder",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.6-alpha.1",
|
|
4
4
|
"main": "./lib/cjs/index.js",
|
|
5
5
|
"module": "./lib/esm/index.js",
|
|
6
6
|
"description": "Use Flow Builder to show your contents",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@babel/runtime": "^7.21.0",
|
|
50
|
-
"@botonic/react": "^0.22.
|
|
50
|
+
"@botonic/react": "^0.22.6",
|
|
51
51
|
"@botonic/plugin-hubtype-analytics": "0.22.0-alpha.5",
|
|
52
52
|
"axios": "^1.3.6"
|
|
53
53
|
}
|
package/src/action/index.tsx
CHANGED
|
@@ -7,8 +7,8 @@ import { ActionRequest, Multichannel, RequestContext } from '@botonic/react'
|
|
|
7
7
|
import React from 'react'
|
|
8
8
|
|
|
9
9
|
import { FlowBuilderApi } from '../api'
|
|
10
|
-
import { SOURCE_INFO_SEPARATOR } from '../constants'
|
|
11
|
-
import { FlowContent, FlowHandoff } from '../content-fields'
|
|
10
|
+
import { SOURCE_INFO_SEPARATOR, VARIABLE_REGEX } from '../constants'
|
|
11
|
+
import { FlowContent, FlowHandoff, FlowText } from '../content-fields'
|
|
12
12
|
import { HtNodeWithContent } from '../content-fields/hubtype-fields'
|
|
13
13
|
import { getFlowBuilderPlugin } from '../helpers'
|
|
14
14
|
import { trackEvent } from './tracking'
|
|
@@ -43,11 +43,22 @@ export class FlowBuilderAction extends React.Component<FlowBuilderActionProps> {
|
|
|
43
43
|
) as FlowHandoff
|
|
44
44
|
if (handoffContent) await handoffContent.doHandoff(request)
|
|
45
45
|
|
|
46
|
-
const
|
|
46
|
+
const contentsWithoutHandoff = contents.filter(content =>
|
|
47
47
|
content instanceof FlowHandoff ? false : true
|
|
48
48
|
)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
const contentsWithVariables = contentsWithoutHandoff.map(content => {
|
|
51
|
+
if (content instanceof FlowText) {
|
|
52
|
+
console.log(content.text)
|
|
53
|
+
content.text = replaceVariables(
|
|
54
|
+
content.text,
|
|
55
|
+
request.session.user.extra_data
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
return content
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
return { contents: contentsWithVariables }
|
|
51
62
|
}
|
|
52
63
|
|
|
53
64
|
render(): JSX.Element | JSX.Element[] {
|
|
@@ -92,8 +103,11 @@ async function getTargetNode(
|
|
|
92
103
|
}
|
|
93
104
|
|
|
94
105
|
async function getFallbackNode(cmsApi: FlowBuilderApi, request: ActionRequest) {
|
|
106
|
+
if (!request.session.user.extra_data) {
|
|
107
|
+
request.session.user.extra_data = { isFirstFallbackOption: true }
|
|
108
|
+
}
|
|
95
109
|
const isFirstFallbackOption =
|
|
96
|
-
request.session.user.extra_data.isFirstFallbackOption
|
|
110
|
+
request.session.user.extra_data.isFirstFallbackOption
|
|
97
111
|
const fallbackNode = cmsApi.getFallbackNode(isFirstFallbackOption)
|
|
98
112
|
request.session.user.extra_data.isFirstFallbackOption = !isFirstFallbackOption
|
|
99
113
|
|
|
@@ -103,3 +117,17 @@ async function getFallbackNode(cmsApi: FlowBuilderApi, request: ActionRequest) {
|
|
|
103
117
|
await trackEvent(request, event)
|
|
104
118
|
return fallbackNode
|
|
105
119
|
}
|
|
120
|
+
|
|
121
|
+
function replaceVariables(text: string, extraData?: Record<string, any>) {
|
|
122
|
+
const matches = text.match(VARIABLE_REGEX)
|
|
123
|
+
|
|
124
|
+
if (matches && extraData) {
|
|
125
|
+
matches.forEach(match => {
|
|
126
|
+
const variable = match.slice(1, -1)
|
|
127
|
+
const value = extraData[variable] ? extraData[variable] : match
|
|
128
|
+
text = text.replace(match, value)
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return text
|
|
133
|
+
}
|
package/src/constants.ts
CHANGED
package/src/.DS_Store
DELETED
|
Binary file
|
|
Binary file
|