@voiceflow/utils-designer 1.23.1 → 1.24.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.
@@ -3,6 +3,7 @@ import type { Entity, Markup, MarkupSpan, Variable } from '@voiceflow/dtos';
|
|
3
3
|
import type { MultiAdapter } from 'bidirectional-adapter';
|
4
4
|
export type MarkupItem = Markup[number];
|
5
5
|
export declare const ENTITY_OR_VARIABLE_TEXT_REGEXP: RegExp;
|
6
|
+
export declare const EXPRESSION_VARIABLE_TEXT_REGEXP: RegExp;
|
6
7
|
export interface MarkupSpanText extends Omit<MarkupSpan, 'text'> {
|
7
8
|
text: [string];
|
8
9
|
attributes: {
|
@@ -52,6 +53,7 @@ export declare const replaceMarkupEntity: (markup: Markup, { oldEntityID, newEnt
|
|
52
53
|
}) => Markup;
|
53
54
|
export declare const fillMarkupWithVariablesValues: (promptText: string, variables: Record<string, string>) => string;
|
54
55
|
export declare const markupToString: MultiAdapter<Markup, string, [MarkupToStringFromOptions], [MarkupToStringToOptions]>;
|
56
|
+
export declare const markupToExpression: MultiAdapter<Markup, string, [MarkupToStringFromOptions], [MarkupToStringToOptions]>;
|
55
57
|
export declare const markupToSlate: MultiAdapter<Markup, BaseText.SlateTextValue, [{
|
56
58
|
iteration?: number | undefined;
|
57
59
|
entitiesMapByID: Partial<Record<string, Entity>>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"markup.util.d.ts","sourceRoot":"","sources":["../../src/markup.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,eAAO,MAAM,8BAA8B,QAAa,CAAC;
|
1
|
+
{"version":3,"file":"markup.util.d.ts","sourceRoot":"","sources":["../../src/markup.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,eAAO,MAAM,8BAA8B,QAAa,CAAC;AACzD,eAAO,MAAM,+BAA+B,QAAyB,CAAC;AAEtE,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IAC9D,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IACf,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,eAAO,MAAM,yBAAyB,eAAgB,MAAM,CAAC,MAAM,CAAC;gBAA+B,MAAM;CAExG,CAAC;AAEF,eAAO,MAAM,uBAAuB,eAAgB,MAAM,CAAC,MAAM,CAAC;cAA6B,MAAM;CAEpG,CAAC;AAEF,eAAO,MAAM,aAAa,2BAA4C,CAAC;AAEvE,eAAO,MAAM,YAAY,UAAW,UAAU,wBAC2B,CAAC;AAE1E,eAAO,MAAM,gBAAgB,UAAW,UAAU,4BAIf,CAAC;AAEpC,eAAO,MAAM,gBAAgB,UAAW,UAAU,4BACa,CAAC;AAEhE,eAAO,MAAM,cAAc,UAAW,UAAU;cAAwB,MAAM;CACD,CAAC;AAE9E,eAAO,MAAM,cAAc,UAAW,UAAU,oBAA+C,CAAC;AAEhG,eAAO,MAAM,gBAAgB,UAAW,UAAU;gBAA0B,MAAM;CACH,CAAC;AAEhF,eAAO,MAAM,aAAa,sBAAqB,OAI5C,CAAC;AAEJ,eAAO,MAAM,oBAAoB,sBAAqB,OAYrD,CAAC;AAEF,UAAU,yBAAyB;IACjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,UAAU,uBAAuB;IAC/B,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CACvD;AAiBD,eAAO,MAAM,kBAAkB,8BAAwE,CAAC;AAiBxG,eAAO,MAAM,oBAAoB,8BAA0E,CAAC;AAE5G,eAAO,MAAM,mBAAmB;iBAEe,MAAM;iBAAe,MAAM;YAWzE,CAAC;AAEF,eAAO,MAAM,6BAA6B,eAAgB,MAAM,aAAa,OAAO,MAAM,EAAE,MAAM,CAAC,WAOlG,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,uBAAuB,CAAC,CA+E7G,CAAC;AAEJ,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,uBAAuB,CAAC,CA+EjH,CAAC;AAOJ,eAAO,MAAM,aAAa;;qBAMH,QAAQ,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC;sBAC9B,QAAQ,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;OA2HxD,CAAC"}
|
package/build/cjs/markup.util.js
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.markupToSlate = exports.markupToString = exports.fillMarkupWithVariablesValues = exports.replaceMarkupEntity = exports.getMarkupVariableIDs = exports.getMarkupEntityIDs = exports.isMarkupWithEntities = exports.isMarkupEmpty = exports.isMarkupVariable = exports.isMarkupString = exports.isMarkupEntity = exports.isMarkupSpanLink = exports.isMarkupSpanText = exports.isMarkupSpan = exports.markupFactory = exports.isMarkupEntityReference = exports.isMarkupVariableReference = exports.ENTITY_OR_VARIABLE_TEXT_REGEXP = void 0;
|
3
|
+
exports.markupToSlate = exports.markupToExpression = exports.markupToString = exports.fillMarkupWithVariablesValues = exports.replaceMarkupEntity = exports.getMarkupVariableIDs = exports.getMarkupEntityIDs = exports.isMarkupWithEntities = exports.isMarkupEmpty = exports.isMarkupVariable = exports.isMarkupString = exports.isMarkupEntity = exports.isMarkupSpanLink = exports.isMarkupSpanText = exports.isMarkupSpan = exports.markupFactory = exports.isMarkupEntityReference = exports.isMarkupVariableReference = exports.EXPRESSION_VARIABLE_TEXT_REGEXP = exports.ENTITY_OR_VARIABLE_TEXT_REGEXP = void 0;
|
4
4
|
const base_types_1 = require("@voiceflow/base-types");
|
5
5
|
const common_1 = require("@voiceflow/common");
|
6
6
|
const bidirectional_adapter_1 = require("bidirectional-adapter");
|
7
7
|
const slate_1 = require("slate");
|
8
8
|
const ts_pattern_1 = require("ts-pattern");
|
9
9
|
exports.ENTITY_OR_VARIABLE_TEXT_REGEXP = /{(\w*)}/g;
|
10
|
+
exports.EXPRESSION_VARIABLE_TEXT_REGEXP = /{{\[(\w*)]\.(\w*)}}/g;
|
10
11
|
const isMarkupVariableReference = (markupItem) => {
|
11
12
|
return markupItem.variableID !== undefined;
|
12
13
|
};
|
@@ -106,9 +107,12 @@ exports.markupToString = (0, bidirectional_adapter_1.createMultiAdapter)((markup
|
|
106
107
|
.when(exports.isMarkupEntity, ({ entityID }) => !entitiesMapByID[entityID] && ignoreMissingEntities
|
107
108
|
? ''
|
108
109
|
: `{${entitiesMapByID[entityID]?.name ?? entityID}}`)
|
109
|
-
.when(exports.isMarkupVariable, ({ variableID }) =>
|
110
|
-
|
111
|
-
|
110
|
+
.when(exports.isMarkupVariable, ({ variableID }) => {
|
111
|
+
if (!variablesMapByID[variableID] && ignoreMissingVariables) {
|
112
|
+
return '';
|
113
|
+
}
|
114
|
+
return `{${variablesMapByID[variableID]?.name ?? variableID}}`;
|
115
|
+
})
|
112
116
|
.exhaustive(), ''), (text, { entitiesMapByName, variablesMapByName }) => {
|
113
117
|
const matches = [...text.matchAll(exports.ENTITY_OR_VARIABLE_TEXT_REGEXP)];
|
114
118
|
if (!matches.length)
|
@@ -150,6 +154,63 @@ exports.markupToString = (0, bidirectional_adapter_1.createMultiAdapter)((markup
|
|
150
154
|
}
|
151
155
|
return [span];
|
152
156
|
});
|
157
|
+
exports.markupToExpression = (0, bidirectional_adapter_1.createMultiAdapter)((markup, { entitiesMapByID, variablesMapByID, ignoreMissingEntities, ignoreMissingVariables } = {
|
158
|
+
entitiesMapByID: {},
|
159
|
+
variablesMapByID: {},
|
160
|
+
}) => markup.reduce((acc, item) => acc +
|
161
|
+
(0, ts_pattern_1.match)(item)
|
162
|
+
.when(exports.isMarkupSpan, ({ text }) => exports.markupToExpression.fromDB(text, { entitiesMapByID, variablesMapByID }))
|
163
|
+
.when(exports.isMarkupString, (item) => item)
|
164
|
+
.when(exports.isMarkupEntity, ({ entityID }) => !entitiesMapByID[entityID] && ignoreMissingEntities
|
165
|
+
? ''
|
166
|
+
: `{${entitiesMapByID[entityID]?.name ?? entityID}}`)
|
167
|
+
.when(exports.isMarkupVariable, ({ variableID }) => {
|
168
|
+
if (!variablesMapByID[variableID] && ignoreMissingVariables) {
|
169
|
+
return '';
|
170
|
+
}
|
171
|
+
return `{{[${variablesMapByID[variableID]?.name ?? variableID}].${variableID}}}`;
|
172
|
+
})
|
173
|
+
.exhaustive(), ''), (text, { entitiesMapByName, variablesMapByName }) => {
|
174
|
+
const matches = [...text.matchAll(exports.EXPRESSION_VARIABLE_TEXT_REGEXP)];
|
175
|
+
if (!matches.length)
|
176
|
+
return [{ text: [text] }];
|
177
|
+
const span = {
|
178
|
+
text: [],
|
179
|
+
};
|
180
|
+
let prevMatch = null;
|
181
|
+
for (const match of matches) {
|
182
|
+
const entity = entitiesMapByName[match[1]];
|
183
|
+
const variable = variablesMapByName[match[1]];
|
184
|
+
let substring;
|
185
|
+
if (!prevMatch) {
|
186
|
+
substring = text.substring(0, match.index);
|
187
|
+
}
|
188
|
+
else {
|
189
|
+
substring = text.substring(prevMatch.index + prevMatch[0].length, match.index);
|
190
|
+
}
|
191
|
+
if (substring) {
|
192
|
+
span.text.push(substring);
|
193
|
+
}
|
194
|
+
if (entity) {
|
195
|
+
span.text.push({ entityID: entity.id });
|
196
|
+
}
|
197
|
+
else if (variable) {
|
198
|
+
span.text.push({ variableID: variable.id });
|
199
|
+
}
|
200
|
+
else {
|
201
|
+
span.text.push(match[0]);
|
202
|
+
}
|
203
|
+
prevMatch = match;
|
204
|
+
}
|
205
|
+
if (!prevMatch) {
|
206
|
+
return [span];
|
207
|
+
}
|
208
|
+
const substring = text.substring(prevMatch.index + prevMatch[0].length, text.length);
|
209
|
+
if (substring) {
|
210
|
+
span.text.push(substring);
|
211
|
+
}
|
212
|
+
return [span];
|
213
|
+
});
|
153
214
|
const isEmptyState = (nodes) => nodes.every((element) => slate_1.Text.isText(element) ? !element.text.trim() : element.type !== 'variable' && isEmptyState(element.children));
|
154
215
|
exports.markupToSlate = (0, bidirectional_adapter_1.createMultiAdapter)((markup, { iteration = 0, entitiesMapByID, variablesMapByID }) => {
|
155
216
|
if (!markup?.length)
|
@@ -3,6 +3,7 @@ import type { Entity, Markup, MarkupSpan, Variable } from '@voiceflow/dtos';
|
|
3
3
|
import type { MultiAdapter } from 'bidirectional-adapter';
|
4
4
|
export type MarkupItem = Markup[number];
|
5
5
|
export declare const ENTITY_OR_VARIABLE_TEXT_REGEXP: RegExp;
|
6
|
+
export declare const EXPRESSION_VARIABLE_TEXT_REGEXP: RegExp;
|
6
7
|
export interface MarkupSpanText extends Omit<MarkupSpan, 'text'> {
|
7
8
|
text: [string];
|
8
9
|
attributes: {
|
@@ -52,6 +53,7 @@ export declare const replaceMarkupEntity: (markup: Markup, { oldEntityID, newEnt
|
|
52
53
|
}) => Markup;
|
53
54
|
export declare const fillMarkupWithVariablesValues: (promptText: string, variables: Record<string, string>) => string;
|
54
55
|
export declare const markupToString: MultiAdapter<Markup, string, [MarkupToStringFromOptions], [MarkupToStringToOptions]>;
|
56
|
+
export declare const markupToExpression: MultiAdapter<Markup, string, [MarkupToStringFromOptions], [MarkupToStringToOptions]>;
|
55
57
|
export declare const markupToSlate: MultiAdapter<Markup, BaseText.SlateTextValue, [{
|
56
58
|
iteration?: number | undefined;
|
57
59
|
entitiesMapByID: Partial<Record<string, Entity>>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"markup.util.d.ts","sourceRoot":"","sources":["../../src/markup.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,eAAO,MAAM,8BAA8B,QAAa,CAAC;
|
1
|
+
{"version":3,"file":"markup.util.d.ts","sourceRoot":"","sources":["../../src/markup.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,eAAO,MAAM,8BAA8B,QAAa,CAAC;AACzD,eAAO,MAAM,+BAA+B,QAAyB,CAAC;AAEtE,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IAC9D,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IACf,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,eAAO,MAAM,yBAAyB,eAAgB,MAAM,CAAC,MAAM,CAAC;gBAA+B,MAAM;CAExG,CAAC;AAEF,eAAO,MAAM,uBAAuB,eAAgB,MAAM,CAAC,MAAM,CAAC;cAA6B,MAAM;CAEpG,CAAC;AAEF,eAAO,MAAM,aAAa,2BAA4C,CAAC;AAEvE,eAAO,MAAM,YAAY,UAAW,UAAU,wBAC2B,CAAC;AAE1E,eAAO,MAAM,gBAAgB,UAAW,UAAU,4BAIf,CAAC;AAEpC,eAAO,MAAM,gBAAgB,UAAW,UAAU,4BACa,CAAC;AAEhE,eAAO,MAAM,cAAc,UAAW,UAAU;cAAwB,MAAM;CACD,CAAC;AAE9E,eAAO,MAAM,cAAc,UAAW,UAAU,oBAA+C,CAAC;AAEhG,eAAO,MAAM,gBAAgB,UAAW,UAAU;gBAA0B,MAAM;CACH,CAAC;AAEhF,eAAO,MAAM,aAAa,sBAAqB,OAI5C,CAAC;AAEJ,eAAO,MAAM,oBAAoB,sBAAqB,OAYrD,CAAC;AAEF,UAAU,yBAAyB;IACjC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,UAAU,uBAAuB;IAC/B,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CACvD;AAiBD,eAAO,MAAM,kBAAkB,8BAAwE,CAAC;AAiBxG,eAAO,MAAM,oBAAoB,8BAA0E,CAAC;AAE5G,eAAO,MAAM,mBAAmB;iBAEe,MAAM;iBAAe,MAAM;YAWzE,CAAC;AAEF,eAAO,MAAM,6BAA6B,eAAgB,MAAM,aAAa,OAAO,MAAM,EAAE,MAAM,CAAC,WAOlG,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,uBAAuB,CAAC,CA+E7G,CAAC;AAEJ,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,uBAAuB,CAAC,CA+EjH,CAAC;AAOJ,eAAO,MAAM,aAAa;;qBAMH,QAAQ,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC;sBAC9B,QAAQ,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC;OA2HxD,CAAC"}
|
package/build/esm/markup.util.js
CHANGED
@@ -4,6 +4,7 @@ import { createMultiAdapter } from 'bidirectional-adapter';
|
|
4
4
|
import { Text } from 'slate';
|
5
5
|
import { match } from 'ts-pattern';
|
6
6
|
export const ENTITY_OR_VARIABLE_TEXT_REGEXP = /{(\w*)}/g;
|
7
|
+
export const EXPRESSION_VARIABLE_TEXT_REGEXP = /{{\[(\w*)]\.(\w*)}}/g;
|
7
8
|
export const isMarkupVariableReference = (markupItem) => {
|
8
9
|
return markupItem.variableID !== undefined;
|
9
10
|
};
|
@@ -88,9 +89,12 @@ export const markupToString = createMultiAdapter((markup, { entitiesMapByID, var
|
|
88
89
|
.when(isMarkupEntity, ({ entityID }) => !entitiesMapByID[entityID] && ignoreMissingEntities
|
89
90
|
? ''
|
90
91
|
: `{${entitiesMapByID[entityID]?.name ?? entityID}}`)
|
91
|
-
.when(isMarkupVariable, ({ variableID }) =>
|
92
|
-
|
93
|
-
|
92
|
+
.when(isMarkupVariable, ({ variableID }) => {
|
93
|
+
if (!variablesMapByID[variableID] && ignoreMissingVariables) {
|
94
|
+
return '';
|
95
|
+
}
|
96
|
+
return `{${variablesMapByID[variableID]?.name ?? variableID}}`;
|
97
|
+
})
|
94
98
|
.exhaustive(), ''), (text, { entitiesMapByName, variablesMapByName }) => {
|
95
99
|
const matches = [...text.matchAll(ENTITY_OR_VARIABLE_TEXT_REGEXP)];
|
96
100
|
if (!matches.length)
|
@@ -132,6 +136,63 @@ export const markupToString = createMultiAdapter((markup, { entitiesMapByID, var
|
|
132
136
|
}
|
133
137
|
return [span];
|
134
138
|
});
|
139
|
+
export const markupToExpression = createMultiAdapter((markup, { entitiesMapByID, variablesMapByID, ignoreMissingEntities, ignoreMissingVariables } = {
|
140
|
+
entitiesMapByID: {},
|
141
|
+
variablesMapByID: {},
|
142
|
+
}) => markup.reduce((acc, item) => acc +
|
143
|
+
match(item)
|
144
|
+
.when(isMarkupSpan, ({ text }) => markupToExpression.fromDB(text, { entitiesMapByID, variablesMapByID }))
|
145
|
+
.when(isMarkupString, (item) => item)
|
146
|
+
.when(isMarkupEntity, ({ entityID }) => !entitiesMapByID[entityID] && ignoreMissingEntities
|
147
|
+
? ''
|
148
|
+
: `{${entitiesMapByID[entityID]?.name ?? entityID}}`)
|
149
|
+
.when(isMarkupVariable, ({ variableID }) => {
|
150
|
+
if (!variablesMapByID[variableID] && ignoreMissingVariables) {
|
151
|
+
return '';
|
152
|
+
}
|
153
|
+
return `{{[${variablesMapByID[variableID]?.name ?? variableID}].${variableID}}}`;
|
154
|
+
})
|
155
|
+
.exhaustive(), ''), (text, { entitiesMapByName, variablesMapByName }) => {
|
156
|
+
const matches = [...text.matchAll(EXPRESSION_VARIABLE_TEXT_REGEXP)];
|
157
|
+
if (!matches.length)
|
158
|
+
return [{ text: [text] }];
|
159
|
+
const span = {
|
160
|
+
text: [],
|
161
|
+
};
|
162
|
+
let prevMatch = null;
|
163
|
+
for (const match of matches) {
|
164
|
+
const entity = entitiesMapByName[match[1]];
|
165
|
+
const variable = variablesMapByName[match[1]];
|
166
|
+
let substring;
|
167
|
+
if (!prevMatch) {
|
168
|
+
substring = text.substring(0, match.index);
|
169
|
+
}
|
170
|
+
else {
|
171
|
+
substring = text.substring(prevMatch.index + prevMatch[0].length, match.index);
|
172
|
+
}
|
173
|
+
if (substring) {
|
174
|
+
span.text.push(substring);
|
175
|
+
}
|
176
|
+
if (entity) {
|
177
|
+
span.text.push({ entityID: entity.id });
|
178
|
+
}
|
179
|
+
else if (variable) {
|
180
|
+
span.text.push({ variableID: variable.id });
|
181
|
+
}
|
182
|
+
else {
|
183
|
+
span.text.push(match[0]);
|
184
|
+
}
|
185
|
+
prevMatch = match;
|
186
|
+
}
|
187
|
+
if (!prevMatch) {
|
188
|
+
return [span];
|
189
|
+
}
|
190
|
+
const substring = text.substring(prevMatch.index + prevMatch[0].length, text.length);
|
191
|
+
if (substring) {
|
192
|
+
span.text.push(substring);
|
193
|
+
}
|
194
|
+
return [span];
|
195
|
+
});
|
135
196
|
const isEmptyState = (nodes) => nodes.every((element) => Text.isText(element) ? !element.text.trim() : element.type !== 'variable' && isEmptyState(element.children));
|
136
197
|
export const markupToSlate = createMultiAdapter((markup, { iteration = 0, entitiesMapByID, variablesMapByID }) => {
|
137
198
|
if (!markup?.length)
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@voiceflow/utils-designer",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.24.1",
|
4
4
|
"exports": {
|
5
5
|
".": {
|
6
6
|
"types": "./build/cjs/main.d.ts",
|
@@ -31,7 +31,7 @@
|
|
31
31
|
},
|
32
32
|
"dependencies": {
|
33
33
|
"@voiceflow/common": "8.3.0",
|
34
|
-
"@voiceflow/dtos": "1.
|
34
|
+
"@voiceflow/dtos": "1.104.0",
|
35
35
|
"bidirectional-adapter": "1.2.1",
|
36
36
|
"slate": "^0.103.0",
|
37
37
|
"ts-pattern": "5.0.5",
|
@@ -43,5 +43,5 @@
|
|
43
43
|
"volta": {
|
44
44
|
"extends": "../../package.json"
|
45
45
|
},
|
46
|
-
"gitHead": "
|
46
|
+
"gitHead": "94bc4a810fa1d7f526c1d2b456bd6a29a36b0727"
|
47
47
|
}
|