@botonic/plugin-flow-builder 0.22.4 → 0.22.6-alpha.0

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.
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const types_1 = require("@botonic/plugin-hubtype-analytics/lib/cjs/types");
6
6
  const react_1 = require("@botonic/react");
7
7
  const react_2 = tslib_1.__importDefault(require("react"));
8
- const constants_1 = require("src/constants");
8
+ const constants_1 = require("../constants");
9
9
  const content_fields_1 = require("../content-fields");
10
10
  const helpers_1 = require("../helpers");
11
11
  const tracking_1 = require("./tracking");
@@ -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 renderContents = contents.filter(content => content instanceof content_fields_1.FlowHandoff ? false : true);
23
- return { contents: renderContents };
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
- var _a;
59
- const isFirstFallbackOption = (_a = request.session.user.extra_data.isFirstFallbackOption) !== null && _a !== void 0 ? _a : true;
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export declare const SOURCE_INFO_SEPARATOR = "|source_";
2
+ export declare const VARIABLE_REGEX: RegExp;
@@ -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
@@ -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"}
@@ -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 'src/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 renderContents = contents.filter(content => content instanceof FlowHandoff ? false : true);
19
- return { contents: renderContents };
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
- var _a;
53
- const isFirstFallbackOption = (_a = request.session.user.extra_data.isFirstFallbackOption) !== null && _a !== void 0 ? _a : true;
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/action/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export declare const SOURCE_INFO_SEPARATOR = "|source_";
2
+ export declare const VARIABLE_REGEX: RegExp;
@@ -1,2 +1,3 @@
1
1
  export const SOURCE_INFO_SEPARATOR = '|source_';
2
+ export const VARIABLE_REGEX = /{([^}]+)}/g;
2
3
  //# sourceMappingURL=constants.js.map
@@ -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.4",
3
+ "version": "0.22.6-alpha.0",
4
4
  "main": "./lib/cjs/index.js",
5
5
  "module": "./lib/esm/index.js",
6
6
  "description": "Use Flow Builder to show your contents",
@@ -5,10 +5,10 @@ import {
5
5
  } from '@botonic/plugin-hubtype-analytics/lib/cjs/types'
6
6
  import { ActionRequest, Multichannel, RequestContext } from '@botonic/react'
7
7
  import React from 'react'
8
- import { SOURCE_INFO_SEPARATOR } from 'src/constants'
9
8
 
10
9
  import { FlowBuilderApi } from '../api'
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 renderContents = contents.filter(content =>
46
+ const contentsWithoutHandoff = contents.filter(content =>
47
47
  content instanceof FlowHandoff ? false : true
48
48
  )
49
49
 
50
- return { contents: renderContents }
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 ?? true
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
@@ -1 +1,2 @@
1
1
  export const SOURCE_INFO_SEPARATOR = '|source_'
2
+ export const VARIABLE_REGEX = /{([^}]+)}/g
package/src/.DS_Store DELETED
Binary file
Binary file