@voiceflow/slate-serializer 1.0.0 → 1.0.1-rc.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.
Files changed (63) hide show
  1. package/README.md +65 -1
  2. package/build/cjs/guards.cjs +9 -0
  3. package/build/cjs/guards.cjs.map +1 -0
  4. package/build/cjs/guards.d.ts +3 -0
  5. package/build/{index.js → cjs/index.cjs} +5 -4
  6. package/build/cjs/index.cjs.map +1 -0
  7. package/build/cjs/index.d.ts +4 -0
  8. package/build/{selectors.js → cjs/selectors.cjs} +10 -10
  9. package/build/cjs/selectors.cjs.map +1 -0
  10. package/build/cjs/selectors.d.ts +6 -0
  11. package/build/cjs/serializers/jsx.cjs +70 -0
  12. package/build/cjs/serializers/jsx.cjs.map +1 -0
  13. package/build/cjs/serializers/jsx.d.ts +10 -0
  14. package/build/cjs/serializers/markdown.cjs +80 -0
  15. package/build/cjs/serializers/markdown.cjs.map +1 -0
  16. package/build/cjs/serializers/markdown.d.ts +9 -0
  17. package/build/{serializers/text.js → cjs/serializers/text.cjs} +13 -8
  18. package/build/cjs/serializers/text.cjs.map +1 -0
  19. package/build/cjs/serializers/text.d.ts +9 -0
  20. package/build/{styles.js → cjs/styles.cjs} +1 -1
  21. package/build/cjs/styles.cjs.map +1 -0
  22. package/build/{styles.d.ts → cjs/styles.d.ts} +1 -1
  23. package/build/cjs/types.cjs +3 -0
  24. package/build/cjs/types.cjs.map +1 -0
  25. package/build/cjs/types.d.ts +2 -0
  26. package/build/esm/guards.d.ts +3 -0
  27. package/build/esm/guards.mjs +4 -0
  28. package/build/esm/guards.mjs.map +1 -0
  29. package/build/esm/index.d.ts +4 -0
  30. package/build/esm/index.mjs +5 -0
  31. package/build/esm/index.mjs.map +1 -0
  32. package/build/esm/selectors.d.ts +6 -0
  33. package/build/esm/selectors.mjs +38 -0
  34. package/build/esm/selectors.mjs.map +1 -0
  35. package/build/esm/serializers/jsx.d.ts +10 -0
  36. package/build/esm/serializers/jsx.mjs +40 -0
  37. package/build/esm/serializers/jsx.mjs.map +1 -0
  38. package/build/esm/serializers/markdown.d.ts +9 -0
  39. package/build/esm/serializers/markdown.mjs +52 -0
  40. package/build/esm/serializers/markdown.mjs.map +1 -0
  41. package/build/esm/serializers/text.d.ts +9 -0
  42. package/build/esm/serializers/text.mjs +15 -0
  43. package/build/esm/serializers/text.mjs.map +1 -0
  44. package/build/esm/styles.d.ts +3 -0
  45. package/build/esm/styles.mjs +6 -0
  46. package/build/esm/styles.mjs.map +1 -0
  47. package/build/esm/types.d.ts +2 -0
  48. package/build/esm/types.mjs +2 -0
  49. package/build/esm/types.mjs.map +1 -0
  50. package/package.json +74 -36
  51. package/build/guards.d.ts +0 -3
  52. package/build/guards.js +0 -9
  53. package/build/guards.js.map +0 -1
  54. package/build/index.d.ts +0 -3
  55. package/build/index.js.map +0 -1
  56. package/build/selectors.d.ts +0 -6
  57. package/build/selectors.js.map +0 -1
  58. package/build/serializers/react.d.ts +0 -3
  59. package/build/serializers/react.js +0 -43
  60. package/build/serializers/react.js.map +0 -1
  61. package/build/serializers/text.d.ts +0 -2
  62. package/build/serializers/text.js.map +0 -1
  63. package/build/styles.js.map +0 -1
package/README.md CHANGED
@@ -1 +1,65 @@
1
- # slate-serializer
1
+ # Slate Serializer
2
+
3
+ Utilities for converting slate data into raw text or JSX.
4
+
5
+ ## Installation
6
+
7
+ ```sh
8
+ yarn add @voiceflow/slate-serializer @voiceflow/dtos-interact slate
9
+ # or
10
+ npm install @voiceflow/slate-serializer @voiceflow/dtos-interact slate
11
+ ```
12
+
13
+ If you want to use the JSX serializer make sure to install `react`.
14
+
15
+ ```sh
16
+ yarn add react
17
+ # or
18
+ npm install react
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ You can access type guards and other extraction utilities through the main import.
24
+
25
+ ```tsx
26
+ import { isLinkElement, getTextCSSProperties } from '@voiceflow/react-chat';
27
+ ```
28
+
29
+ ### Text Serialization
30
+
31
+ If you need the textual representation you can import the text serializer.
32
+
33
+ ```tsx
34
+ import { serializeToText } from '@voiceflow/react-chat/text';
35
+
36
+ const text = serializeToText(slateValue);
37
+ ```
38
+
39
+ You can turn off `encodeVariables` to avoid encoding variables in the text.
40
+
41
+ ```tsx
42
+ import { serializeToText } from '@voiceflow/react-chat/text';
43
+
44
+ const textWithoutVariables = serializeToText(slateValue, { encodeVariables: false });
45
+ ```
46
+
47
+ ### JSX Serialization
48
+
49
+ If you want to render the result in a browser you can serialize to JSX.
50
+
51
+ ```tsx
52
+ import { serializeToJSX } from '@voiceflow/react-chat/jsx';
53
+
54
+ const content = <div>{serializeToJSX(slateValue)}</div>;
55
+ ```
56
+
57
+ ### Markdown Serialization
58
+
59
+ If you want to render the result in a browser you can serialize to JSX.
60
+
61
+ ```tsx
62
+ import { serializeToMarkdown } from '@voiceflow/react-chat/markdown';
63
+
64
+ const content = <div>{serializeToMarkdown(slateValue)}</div>;
65
+ ```
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isVariableElement = exports.isLinkElement = void 0;
4
+ const dtos_interact_1 = require("@voiceflow/dtos-interact");
5
+ const isLinkElement = (element) => element.type === dtos_interact_1.SlateTextElementType.LINK;
6
+ exports.isLinkElement = isLinkElement;
7
+ const isVariableElement = (element) => element.type === dtos_interact_1.SlateTextElementType.VARIABLE;
8
+ exports.isVariableElement = isVariableElement;
9
+ //# sourceMappingURL=guards.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.cjs","sourceRoot":"","sources":["../../src/guards.ts"],"names":[],"mappings":";;;AAAA,4DAAqI;AAE9H,MAAM,aAAa,GAAG,CAAC,OAA4B,EAAmC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,oCAAoB,CAAC,IAAI,CAAC;AAA9H,QAAA,aAAa,iBAAiH;AAEpI,MAAM,iBAAiB,GAAG,CAAC,OAA4B,EAAuC,EAAE,CACrG,OAAO,CAAC,IAAI,KAAK,oCAAoB,CAAC,QAAQ,CAAC;AADpC,QAAA,iBAAiB,qBACmB"}
@@ -0,0 +1,3 @@
1
+ import { AnySlateTextElement, SlateTextLinkElement, SlateTextVariableElement } from '@voiceflow/dtos-interact';
2
+ export declare const isLinkElement: (element: AnySlateTextElement) => element is SlateTextLinkElement;
3
+ export declare const isVariableElement: (element: AnySlateTextElement) => element is SlateTextVariableElement;
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./guards"), exports);
18
- __exportStar(require("./selectors"), exports);
19
- __exportStar(require("./styles"), exports);
20
- //# sourceMappingURL=index.js.map
17
+ __exportStar(require("./guards.cjs"), exports);
18
+ __exportStar(require("./selectors.cjs"), exports);
19
+ __exportStar(require("./styles.cjs"), exports);
20
+ __exportStar(require("./types.cjs"), exports);
21
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB"}
@@ -0,0 +1,4 @@
1
+ export * from './guards.js';
2
+ export * from './selectors.js';
3
+ export * from './styles.js';
4
+ export * from './types.js';
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTextStyles = exports.getElementStyles = exports.getTextCSSProperties = exports.getElementCSSProperties = void 0;
4
- const base_types_1 = require("@voiceflow/base-types");
5
- const styles_1 = require("./styles");
4
+ const dtos_interact_1 = require("@voiceflow/dtos-interact");
5
+ const styles_1 = require("./styles.cjs");
6
6
  const getElementCSSProperties = (element) => {
7
- const textAlign = element[base_types_1.Text.ElementProperty.TEXT_ALIGN];
7
+ const textAlign = element[dtos_interact_1.SlateTextElementProperty.TEXT_ALIGN];
8
8
  const styles = {};
9
9
  if (textAlign)
10
10
  styles.textAlign = textAlign;
@@ -12,12 +12,12 @@ const getElementCSSProperties = (element) => {
12
12
  };
13
13
  exports.getElementCSSProperties = getElementCSSProperties;
14
14
  const getTextCSSProperties = (text) => {
15
- const color = text[base_types_1.Text.TextProperty.COLOR];
16
- const isItalic = text[base_types_1.Text.TextProperty.ITALIC];
17
- const fontWeight = text[base_types_1.Text.TextProperty.FONT_WEIGHT];
18
- const fontFamily = text[base_types_1.Text.TextProperty.FONT_FAMILY];
19
- const isUnderline = text[base_types_1.Text.TextProperty.UNDERLINE];
20
- const isStrikeThrough = text[base_types_1.Text.TextProperty.STRIKE_THROUGH];
15
+ const color = text[dtos_interact_1.SlateTextProperty.COLOR];
16
+ const isItalic = text[dtos_interact_1.SlateTextProperty.ITALIC];
17
+ const fontWeight = text[dtos_interact_1.SlateTextProperty.FONT_WEIGHT];
18
+ const fontFamily = text[dtos_interact_1.SlateTextProperty.FONT_FAMILY];
19
+ const isUnderline = text[dtos_interact_1.SlateTextProperty.UNDERLINE];
20
+ const isStrikeThrough = text[dtos_interact_1.SlateTextProperty.STRIKE_THROUGH];
21
21
  const styles = {};
22
22
  if (color)
23
23
  styles.color = `rgba(${color.r},${color.g},${color.b},${color.a})`;
@@ -42,4 +42,4 @@ const getElementStyles = (element) => (0, styles_1.convertCSSPropertiesToStyles)
42
42
  exports.getElementStyles = getElementStyles;
43
43
  const getTextStyles = (text) => (0, styles_1.convertCSSPropertiesToStyles)((0, exports.getTextCSSProperties)(text));
44
44
  exports.getTextStyles = getTextStyles;
45
- //# sourceMappingURL=selectors.js.map
45
+ //# sourceMappingURL=selectors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.cjs","sourceRoot":"","sources":["../../src/selectors.ts"],"names":[],"mappings":";;;AAAA,4DAAuH;AAEvH,qCAAwD;AAGjD,MAAM,uBAAuB,GAAG,CAAC,OAA4B,EAAiB,EAAE;IACrF,MAAM,SAAS,GAAG,OAAO,CAAC,wCAAwB,CAAC,UAAU,CAA+B,CAAC;IAE7F,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAe,EAAiB,EAAE;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,iCAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iCAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,iCAAiB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,iCAAiB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,iCAAiB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,iCAAiB,CAAC,cAAc,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;IAC9E,IAAI,QAAQ;QAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC1C,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,UAAU,GAAG,CAAC;IAEtD,IAAI,WAAW,IAAI,eAAe,EAAE;QAClC,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,WAAW;YAAE,UAAU,IAAI,WAAW,CAAC;QAC3C,IAAI,eAAe;YAAE,UAAU,IAAI,eAAe,CAAC;QAEnD,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;KAC3C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B;AAEK,MAAM,gBAAgB,GAAG,CAAC,OAA4B,EAAU,EAAE,CAAC,IAAA,qCAA4B,EAAC,IAAA,+BAAuB,EAAC,OAAO,CAAC,CAAC,CAAC;AAA5H,QAAA,gBAAgB,oBAA4G;AAElI,MAAM,aAAa,GAAG,CAAC,IAAe,EAAU,EAAE,CAAC,IAAA,qCAA4B,EAAC,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;AAAtG,QAAA,aAAa,iBAAyF"}
@@ -0,0 +1,6 @@
1
+ import { AnySlateTextElement, SlateText } from '@voiceflow/dtos-interact';
2
+ import { CSSProperties } from './types.js';
3
+ export declare const getElementCSSProperties: (element: AnySlateTextElement) => CSSProperties;
4
+ export declare const getTextCSSProperties: (text: SlateText) => CSSProperties;
5
+ export declare const getElementStyles: (element: AnySlateTextElement) => string;
6
+ export declare const getTextStyles: (text: SlateText) => string;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.serializeToJSX = void 0;
30
+ const react_1 = __importDefault(require("react"));
31
+ const Slate = __importStar(require("slate"));
32
+ const guards_1 = require("../guards.cjs");
33
+ const selectors_1 = require("../selectors.cjs");
34
+ const serializeTextNode = (node, index) => {
35
+ const styles = (0, selectors_1.getTextCSSProperties)(node);
36
+ return (react_1.default.createElement("span", { key: index, style: styles }, node.text || react_1.default.createElement(react_1.default.Fragment, null, "\uFEFF")));
37
+ };
38
+ const serializeLinkElement = (node, index, options) => {
39
+ var _a, _b, _c, _d;
40
+ const children = node.children.map((node, index) => serializeNode(node, index, options));
41
+ const styles = (0, selectors_1.getElementCSSProperties)(node);
42
+ const href = (_d = (_c = (_a = options.transformHref) === null || _a === void 0 ? void 0 : _a.call(options, (_b = node.url) !== null && _b !== void 0 ? _b : '')) !== null && _c !== void 0 ? _c : node.url) !== null && _d !== void 0 ? _d : '';
43
+ return (react_1.default.createElement("a", { key: index, rel: "noopener noreferrer", href: href, target: "_blank", style: Object.assign(Object.assign({}, styles), { pointerEvents: 'all' }), onClick: (event) => {
44
+ var _a;
45
+ event.stopPropagation();
46
+ event.preventDefault();
47
+ if (!href)
48
+ return;
49
+ (_a = window.open(href, '_blank', 'noopener=true,noreferrer=true')) === null || _a === void 0 ? void 0 : _a.focus();
50
+ } }, children));
51
+ };
52
+ const serializeVariableElement = (node, index, options) => {
53
+ var _a, _b;
54
+ return (react_1.default.createElement("span", { key: index }, `{${options.variablesMap ? (_b = (_a = options.variablesMap[node.id]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : node.id : node.name}}`));
55
+ };
56
+ const serializeElementNode = (node, index, options) => {
57
+ if ((0, guards_1.isLinkElement)(node))
58
+ return serializeLinkElement(node, index, options);
59
+ if ((0, guards_1.isVariableElement)(node))
60
+ return serializeVariableElement(node, index, options);
61
+ const children = node.children.map((node, index) => serializeNode(node, index, options));
62
+ const styles = (0, selectors_1.getElementCSSProperties)(node);
63
+ return (react_1.default.createElement("div", { key: index, style: styles }, children));
64
+ };
65
+ const serializeNode = (node, index, options) =>
66
+ // eslint-disable-next-line no-nested-ternary
67
+ Slate.Text.isText(node) ? serializeTextNode(node, index) : Slate.Element.isElement(node) ? serializeElementNode(node, index, options) : null;
68
+ const serializeToJSX = (content, options = {}) => content.map((node, index) => serializeNode(node, index, options));
69
+ exports.serializeToJSX = serializeToJSX;
70
+ //# sourceMappingURL=jsx.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.cjs","sourceRoot":"","sources":["../../../src/serializers/jsx.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { SlateText, SlateTextLinkElement, SlateTextVariableElement } from '@voiceflow/dtos-interact';
2
+ import React from 'react';
3
+ export interface JSXSerializerOptions {
4
+ variablesMap?: Partial<Record<string, {
5
+ id: string;
6
+ name: string;
7
+ }>>;
8
+ transformHref?: (href: string) => string;
9
+ }
10
+ export declare const serializeToJSX: (content: (import("@voiceflow/dtos-interact").SlateTextElement | SlateTextLinkElement | SlateTextVariableElement | SlateText)[], options?: JSXSerializerOptions) => React.ReactNode;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.serializeToMarkdown = exports.serializeVariableElement = void 0;
27
+ const dtos_interact_1 = require("@voiceflow/dtos-interact");
28
+ const Slate = __importStar(require("slate"));
29
+ const guards_1 = require("../guards.cjs");
30
+ const serializeTextNode = (node) => {
31
+ const isItalic = node[dtos_interact_1.SlateTextProperty.ITALIC];
32
+ const isUnderline = node[dtos_interact_1.SlateTextProperty.UNDERLINE];
33
+ const isStrikeThrough = node[dtos_interact_1.SlateTextProperty.STRIKE_THROUGH];
34
+ const fontWeight = node[dtos_interact_1.SlateTextProperty.FONT_WEIGHT];
35
+ let { text } = node;
36
+ if (!text.trim())
37
+ return text;
38
+ // Extract leading and trailing whitespaces
39
+ const leadingWhitespace = text.match(/^\s+/) || '';
40
+ const trailingWhitespace = text.match(/\s+$/) || '';
41
+ // Trim the text to remove leading and trailing whitespaces
42
+ text = text.trim();
43
+ if (isItalic)
44
+ text = `*${text}*`;
45
+ if (isUnderline)
46
+ text = `<u>${text}</u>`;
47
+ if (isStrikeThrough)
48
+ text = `~~${text}~~`;
49
+ if (fontWeight)
50
+ text = `**${text}**`;
51
+ // Add the leading and trailing whitespaces back to the outside of the markers
52
+ return `${leadingWhitespace}${text}${trailingWhitespace}`;
53
+ };
54
+ const serializeLinkElement = (node, options) => {
55
+ var _a;
56
+ const children = node.children.map((node) => serializeNode(node, options));
57
+ return `[${children}](${(_a = node.url) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, '')})`;
58
+ };
59
+ const serializeVariableElement = (node, options) => {
60
+ var _a, _b, _c;
61
+ const resultName = options.variablesMap ? (_b = (_a = options.variablesMap[node.id]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : node.id : node.name;
62
+ return `{${resultName.concat((_c = node.path) !== null && _c !== void 0 ? _c : '')}}`;
63
+ };
64
+ exports.serializeVariableElement = serializeVariableElement;
65
+ const serializeElementNode = (node, options) => {
66
+ if ((0, guards_1.isLinkElement)(node))
67
+ return serializeLinkElement(node, options);
68
+ if ((0, guards_1.isVariableElement)(node))
69
+ return (0, exports.serializeVariableElement)(node, options);
70
+ return node.children.map((node) => serializeNode(node, options)).join('');
71
+ };
72
+ const serializeNode = (node, options) =>
73
+ // eslint-disable-next-line no-nested-ternary
74
+ Slate.Text.isText(node) ? serializeTextNode(node) : Slate.Element.isElement(node) ? serializeElementNode(node, options) : '';
75
+ const serializeToMarkdown = (content, options = {}) => content
76
+ .map((node) => serializeNode(node, options))
77
+ .join('\n')
78
+ .replace(/\n{3,}/g, (match) => `\n${'<br/>'.repeat(match.length - 2)}\n\n`);
79
+ exports.serializeToMarkdown = serializeToMarkdown;
80
+ //# sourceMappingURL=markdown.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.cjs","sourceRoot":"","sources":["../../../src/serializers/markdown.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAQkC;AAClC,6CAA+B;AAE/B,sCAA6D;AAM7D,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAU,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,iCAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,iCAAiB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,iCAAiB,CAAC,cAAc,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,iCAAiB,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAE9B,2CAA2C;IAC3C,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEpD,2DAA2D;IAC3D,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEnB,IAAI,QAAQ;QAAE,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;IACjC,IAAI,WAAW;QAAE,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC;IACzC,IAAI,eAAe;QAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC;IAC1C,IAAI,UAAU;QAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC;IAErC,8EAA8E;IAC9E,OAAO,GAAG,iBAAiB,GAAG,IAAI,GAAG,kBAAkB,EAAE,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,IAA0B,EAAE,OAAkC,EAAU,EAAE;;IACtG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3E,OAAO,IAAI,QAAQ,KAAK,MAAA,IAAI,CAAC,GAAG,0CAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC;AAC3D,CAAC,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,IAA8B,EAAE,OAAkC,EAAE,EAAE;;IAC7G,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,MAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrG,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC,GAAG,CAAC;AACnD,CAAC,CAAC;AAHW,QAAA,wBAAwB,4BAGnC;AAEF,MAAM,oBAAoB,GAAG,CAAC,IAAyB,EAAE,OAAkC,EAAU,EAAE;IACrG,IAAI,IAAA,sBAAa,EAAC,IAAI,CAAC;QAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,IAAA,0BAAiB,EAAC,IAAI,CAAC;QAAE,OAAO,IAAA,gCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5E,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAgB,EAAE,OAAkC,EAAU,EAAE;AACrF,6CAA6C;AAC7C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAExH,MAAM,mBAAmB,GAAG,CAAC,OAAuB,EAAE,UAAqC,EAAE,EAAU,EAAE,CAC9G,OAAO;KACJ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3C,IAAI,CAAC,IAAI,CAAC;KACV,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAJnE,QAAA,mBAAmB,uBAIgD"}
@@ -0,0 +1,9 @@
1
+ import { SlateText, SlateTextLinkElement, SlateTextVariableElement } from '@voiceflow/dtos-interact';
2
+ export interface MarkdownSerializerOptions {
3
+ variablesMap?: Partial<Record<string, {
4
+ id: string;
5
+ name: string;
6
+ }>>;
7
+ }
8
+ export declare const serializeVariableElement: (node: SlateTextVariableElement, options: MarkdownSerializerOptions) => string;
9
+ export declare const serializeToMarkdown: (content: (import("@voiceflow/dtos-interact").SlateTextElement | SlateTextLinkElement | SlateTextVariableElement | SlateText)[], options?: MarkdownSerializerOptions) => string;
@@ -25,13 +25,18 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.serializeToText = void 0;
27
27
  const Slate = __importStar(require("slate"));
28
- const guards_1 = require("../guards");
29
- const concatenateText = (content = []) => content.reduce((acc, node) => acc + (Slate.Text.isText(node) ? node.text : concatenateText(node.children)), '');
30
- const encodeVariables = (value) => value.map((node) => {
28
+ const guards_1 = require("../guards.cjs");
29
+ const nodeToString = (node, options) => {
30
+ var _a, _b;
31
31
  if (!Slate.Element.isElement(node))
32
- return node;
33
- return (0, guards_1.isVariableElement)(node) ? { text: `{${node.name}}` } : Object.assign(Object.assign({}, node), { children: encodeVariables(node.children) });
34
- });
35
- const serializeToText = (content, encode = false) => concatenateText(encode ? encodeVariables(content) : content);
32
+ return Slate.Node.string(node);
33
+ if ((0, guards_1.isLinkElement)(node) && options.markdownLinks)
34
+ return `[${(0, exports.serializeToText)(node.children)}](${node.url})`;
35
+ if ((0, guards_1.isVariableElement)(node) && options.encodeVariables)
36
+ return `{${options.variablesMap ? (_b = (_a = options.variablesMap[node.id]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : node.id : node.name}}`;
37
+ return nodesToString(node.children, options).join('');
38
+ };
39
+ const nodesToString = (nodes, options) => nodes.map((node) => nodeToString(node, options));
40
+ const serializeToText = (content, { variablesMap = {}, markdownLinks = false, encodeVariables = true } = {}) => nodesToString(content, { variablesMap, markdownLinks, encodeVariables }).join('\n').trim();
36
41
  exports.serializeToText = serializeToText;
37
- //# sourceMappingURL=text.js.map
42
+ //# sourceMappingURL=text.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.cjs","sourceRoot":"","sources":["../../../src/serializers/text.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA+B;AAE/B,sCAA6D;AAQ7D,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAE,OAA8B,EAAU,EAAE;;IAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAI,IAAA,sBAAa,EAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,IAAI,IAAA,uBAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC;IAE5G,IAAI,IAAA,0BAAiB,EAAC,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe;QACpD,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,MAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IAElG,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,OAA8B,EAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnI,MAAM,eAAe,GAAG,CAC7B,OAAuB,EACvB,EAAE,YAAY,GAAG,EAAE,EAAE,aAAa,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,KAA4B,EAAE,EACxF,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AAH3F,QAAA,eAAe,mBAG4E"}
@@ -0,0 +1,9 @@
1
+ export interface TextSerializerOptions {
2
+ variablesMap?: Partial<Record<string, {
3
+ id: string;
4
+ name: string;
5
+ }>>;
6
+ markdownLinks?: boolean;
7
+ encodeVariables?: boolean;
8
+ }
9
+ export declare const serializeToText: (content: (import("@voiceflow/dtos-interact").SlateTextElement | import("@voiceflow/dtos-interact").SlateTextLinkElement | import("@voiceflow/dtos-interact").SlateTextVariableElement | import("@voiceflow/dtos-interact").SlateText)[], { variablesMap, markdownLinks, encodeVariables }?: TextSerializerOptions) => string;
@@ -8,4 +8,4 @@ const convertCSSPropertiesToStyles = (properties) => Object.entries(properties)
8
8
  .map(([key, value]) => `${(0, exports.cssPropertyNameToStyleName)(key)}:${value}`)
9
9
  .join(';');
10
10
  exports.convertCSSPropertiesToStyles = convertCSSPropertiesToStyles;
11
- //# sourceMappingURL=styles.js.map
11
+ //# sourceMappingURL=styles.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.cjs","sourceRoot":"","sources":["../../src/styles.ts"],"names":[],"mappings":";;;AAEA,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AAEhC,MAAM,0BAA0B,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAAjI,QAAA,0BAA0B,8BAAuG;AAEvI,MAAM,4BAA4B,GAAG,CAAC,UAAyB,EAAU,EAAE,CAChF,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;KACvB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAA,kCAA0B,EAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;KACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AAHF,QAAA,4BAA4B,gCAG1B"}
@@ -1,3 +1,3 @@
1
- import type { CSSProperties } from 'react';
1
+ import { CSSProperties } from './types.js';
2
2
  export declare const cssPropertyNameToStyleName: (name: string) => string;
3
3
  export declare const convertCSSPropertiesToStyles: (properties: CSSProperties) => string;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import CSS from 'csstype';
2
+ export type CSSProperties = CSS.Properties<string | number>;
@@ -0,0 +1,3 @@
1
+ import { AnySlateTextElement, SlateTextLinkElement, SlateTextVariableElement } from '@voiceflow/dtos-interact';
2
+ export declare const isLinkElement: (element: AnySlateTextElement) => element is SlateTextLinkElement;
3
+ export declare const isVariableElement: (element: AnySlateTextElement) => element is SlateTextVariableElement;
@@ -0,0 +1,4 @@
1
+ import { SlateTextElementType } from '@voiceflow/dtos-interact';
2
+ export const isLinkElement = (element) => element.type === SlateTextElementType.LINK;
3
+ export const isVariableElement = (element) => element.type === SlateTextElementType.VARIABLE;
4
+ //# sourceMappingURL=guards.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.mjs","sourceRoot":"","sources":["../../src/guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,oBAAoB,EAAkD,MAAM,0BAA0B,CAAC;AAErI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA4B,EAAmC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,IAAI,CAAC;AAE3I,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA4B,EAAuC,EAAE,CACrG,OAAO,CAAC,IAAI,KAAK,oBAAoB,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './guards.js';
2
+ export * from './selectors.js';
3
+ export * from './styles.js';
4
+ export * from './types.js';
@@ -0,0 +1,5 @@
1
+ export * from './guards.mjs';
2
+ export * from './selectors.mjs';
3
+ export * from './styles.mjs';
4
+ export * from './types.mjs';
5
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { AnySlateTextElement, SlateText } from '@voiceflow/dtos-interact';
2
+ import { CSSProperties } from './types.js';
3
+ export declare const getElementCSSProperties: (element: AnySlateTextElement) => CSSProperties;
4
+ export declare const getTextCSSProperties: (text: SlateText) => CSSProperties;
5
+ export declare const getElementStyles: (element: AnySlateTextElement) => string;
6
+ export declare const getTextStyles: (text: SlateText) => string;
@@ -0,0 +1,38 @@
1
+ import { SlateTextElementProperty, SlateTextProperty } from '@voiceflow/dtos-interact';
2
+ import { convertCSSPropertiesToStyles } from './styles.mjs';
3
+ export const getElementCSSProperties = (element) => {
4
+ const textAlign = element[SlateTextElementProperty.TEXT_ALIGN];
5
+ const styles = {};
6
+ if (textAlign)
7
+ styles.textAlign = textAlign;
8
+ return styles;
9
+ };
10
+ export const getTextCSSProperties = (text) => {
11
+ const color = text[SlateTextProperty.COLOR];
12
+ const isItalic = text[SlateTextProperty.ITALIC];
13
+ const fontWeight = text[SlateTextProperty.FONT_WEIGHT];
14
+ const fontFamily = text[SlateTextProperty.FONT_FAMILY];
15
+ const isUnderline = text[SlateTextProperty.UNDERLINE];
16
+ const isStrikeThrough = text[SlateTextProperty.STRIKE_THROUGH];
17
+ const styles = {};
18
+ if (color)
19
+ styles.color = `rgba(${color.r},${color.g},${color.b},${color.a})`;
20
+ if (isItalic)
21
+ styles.fontStyle = 'italic';
22
+ if (fontWeight)
23
+ styles.fontWeight = Number(fontWeight);
24
+ if (fontFamily)
25
+ styles.fontFamily = `"${fontFamily}"`;
26
+ if (isUnderline || isStrikeThrough) {
27
+ let decoration = '';
28
+ if (isUnderline)
29
+ decoration += 'underline';
30
+ if (isStrikeThrough)
31
+ decoration += ' line-through';
32
+ styles.textDecoration = decoration.trim();
33
+ }
34
+ return styles;
35
+ };
36
+ export const getElementStyles = (element) => convertCSSPropertiesToStyles(getElementCSSProperties(element));
37
+ export const getTextStyles = (text) => convertCSSPropertiesToStyles(getTextCSSProperties(text));
38
+ //# sourceMappingURL=selectors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.mjs","sourceRoot":"","sources":["../../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEvH,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAGxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAA4B,EAAiB,EAAE;IACrF,MAAM,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAA+B,CAAC;IAE7F,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAe,EAAiB,EAAE;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;IAC9E,IAAI,QAAQ;QAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC1C,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,UAAU,GAAG,CAAC;IAEtD,IAAI,WAAW,IAAI,eAAe,EAAE;QAClC,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,WAAW;YAAE,UAAU,IAAI,WAAW,CAAC;QAC3C,IAAI,eAAe;YAAE,UAAU,IAAI,eAAe,CAAC;QAEnD,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;KAC3C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAA4B,EAAU,EAAE,CAAC,4BAA4B,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAe,EAAU,EAAE,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { SlateText, SlateTextLinkElement, SlateTextVariableElement } from '@voiceflow/dtos-interact';
2
+ import React from 'react';
3
+ export interface JSXSerializerOptions {
4
+ variablesMap?: Partial<Record<string, {
5
+ id: string;
6
+ name: string;
7
+ }>>;
8
+ transformHref?: (href: string) => string;
9
+ }
10
+ export declare const serializeToJSX: (content: (import("@voiceflow/dtos-interact").SlateTextElement | SlateTextLinkElement | SlateTextVariableElement | SlateText)[], options?: JSXSerializerOptions) => React.ReactNode;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import * as Slate from 'slate';
3
+ import { isLinkElement, isVariableElement } from '../guards.mjs';
4
+ import { getElementCSSProperties, getTextCSSProperties } from '../selectors.mjs';
5
+ const serializeTextNode = (node, index) => {
6
+ const styles = getTextCSSProperties(node);
7
+ return (React.createElement("span", { key: index, style: styles }, node.text || React.createElement(React.Fragment, null, "\uFEFF")));
8
+ };
9
+ const serializeLinkElement = (node, index, options) => {
10
+ var _a, _b, _c, _d;
11
+ const children = node.children.map((node, index) => serializeNode(node, index, options));
12
+ const styles = getElementCSSProperties(node);
13
+ const href = (_d = (_c = (_a = options.transformHref) === null || _a === void 0 ? void 0 : _a.call(options, (_b = node.url) !== null && _b !== void 0 ? _b : '')) !== null && _c !== void 0 ? _c : node.url) !== null && _d !== void 0 ? _d : '';
14
+ return (React.createElement("a", { key: index, rel: "noopener noreferrer", href: href, target: "_blank", style: Object.assign(Object.assign({}, styles), { pointerEvents: 'all' }), onClick: (event) => {
15
+ var _a;
16
+ event.stopPropagation();
17
+ event.preventDefault();
18
+ if (!href)
19
+ return;
20
+ (_a = window.open(href, '_blank', 'noopener=true,noreferrer=true')) === null || _a === void 0 ? void 0 : _a.focus();
21
+ } }, children));
22
+ };
23
+ const serializeVariableElement = (node, index, options) => {
24
+ var _a, _b;
25
+ return (React.createElement("span", { key: index }, `{${options.variablesMap ? (_b = (_a = options.variablesMap[node.id]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : node.id : node.name}}`));
26
+ };
27
+ const serializeElementNode = (node, index, options) => {
28
+ if (isLinkElement(node))
29
+ return serializeLinkElement(node, index, options);
30
+ if (isVariableElement(node))
31
+ return serializeVariableElement(node, index, options);
32
+ const children = node.children.map((node, index) => serializeNode(node, index, options));
33
+ const styles = getElementCSSProperties(node);
34
+ return (React.createElement("div", { key: index, style: styles }, children));
35
+ };
36
+ const serializeNode = (node, index, options) =>
37
+ // eslint-disable-next-line no-nested-ternary
38
+ Slate.Text.isText(node) ? serializeTextNode(node, index) : Slate.Element.isElement(node) ? serializeElementNode(node, index, options) : null;
39
+ export const serializeToJSX = (content, options = {}) => content.map((node, index) => serializeNode(node, index, options));
40
+ //# sourceMappingURL=jsx.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.mjs","sourceRoot":"","sources":["../../../src/serializers/jsx.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { SlateText, SlateTextLinkElement, SlateTextVariableElement } from '@voiceflow/dtos-interact';
2
+ export interface MarkdownSerializerOptions {
3
+ variablesMap?: Partial<Record<string, {
4
+ id: string;
5
+ name: string;
6
+ }>>;
7
+ }
8
+ export declare const serializeVariableElement: (node: SlateTextVariableElement, options: MarkdownSerializerOptions) => string;
9
+ export declare const serializeToMarkdown: (content: (import("@voiceflow/dtos-interact").SlateTextElement | SlateTextLinkElement | SlateTextVariableElement | SlateText)[], options?: MarkdownSerializerOptions) => string;
@@ -0,0 +1,52 @@
1
+ import { SlateTextProperty, } from '@voiceflow/dtos-interact';
2
+ import * as Slate from 'slate';
3
+ import { isLinkElement, isVariableElement } from '../guards.mjs';
4
+ const serializeTextNode = (node) => {
5
+ const isItalic = node[SlateTextProperty.ITALIC];
6
+ const isUnderline = node[SlateTextProperty.UNDERLINE];
7
+ const isStrikeThrough = node[SlateTextProperty.STRIKE_THROUGH];
8
+ const fontWeight = node[SlateTextProperty.FONT_WEIGHT];
9
+ let { text } = node;
10
+ if (!text.trim())
11
+ return text;
12
+ // Extract leading and trailing whitespaces
13
+ const leadingWhitespace = text.match(/^\s+/) || '';
14
+ const trailingWhitespace = text.match(/\s+$/) || '';
15
+ // Trim the text to remove leading and trailing whitespaces
16
+ text = text.trim();
17
+ if (isItalic)
18
+ text = `*${text}*`;
19
+ if (isUnderline)
20
+ text = `<u>${text}</u>`;
21
+ if (isStrikeThrough)
22
+ text = `~~${text}~~`;
23
+ if (fontWeight)
24
+ text = `**${text}**`;
25
+ // Add the leading and trailing whitespaces back to the outside of the markers
26
+ return `${leadingWhitespace}${text}${trailingWhitespace}`;
27
+ };
28
+ const serializeLinkElement = (node, options) => {
29
+ var _a;
30
+ const children = node.children.map((node) => serializeNode(node, options));
31
+ return `[${children}](${(_a = node.url) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, '')})`;
32
+ };
33
+ export const serializeVariableElement = (node, options) => {
34
+ var _a, _b, _c;
35
+ const resultName = options.variablesMap ? (_b = (_a = options.variablesMap[node.id]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : node.id : node.name;
36
+ return `{${resultName.concat((_c = node.path) !== null && _c !== void 0 ? _c : '')}}`;
37
+ };
38
+ const serializeElementNode = (node, options) => {
39
+ if (isLinkElement(node))
40
+ return serializeLinkElement(node, options);
41
+ if (isVariableElement(node))
42
+ return serializeVariableElement(node, options);
43
+ return node.children.map((node) => serializeNode(node, options)).join('');
44
+ };
45
+ const serializeNode = (node, options) =>
46
+ // eslint-disable-next-line no-nested-ternary
47
+ Slate.Text.isText(node) ? serializeTextNode(node) : Slate.Element.isElement(node) ? serializeElementNode(node, options) : '';
48
+ export const serializeToMarkdown = (content, options = {}) => content
49
+ .map((node) => serializeNode(node, options))
50
+ .join('\n')
51
+ .replace(/\n{3,}/g, (match) => `\n${'<br/>'.repeat(match.length - 2)}\n\n`);
52
+ //# sourceMappingURL=markdown.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.mjs","sourceRoot":"","sources":["../../../src/serializers/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface TextSerializerOptions {
2
+ variablesMap?: Partial<Record<string, {
3
+ id: string;
4
+ name: string;
5
+ }>>;
6
+ markdownLinks?: boolean;
7
+ encodeVariables?: boolean;
8
+ }
9
+ export declare const serializeToText: (content: (import("@voiceflow/dtos-interact").SlateTextElement | import("@voiceflow/dtos-interact").SlateTextLinkElement | import("@voiceflow/dtos-interact").SlateTextVariableElement | import("@voiceflow/dtos-interact").SlateText)[], { variablesMap, markdownLinks, encodeVariables }?: TextSerializerOptions) => string;
@@ -0,0 +1,15 @@
1
+ import * as Slate from 'slate';
2
+ import { isLinkElement, isVariableElement } from '../guards.mjs';
3
+ const nodeToString = (node, options) => {
4
+ var _a, _b;
5
+ if (!Slate.Element.isElement(node))
6
+ return Slate.Node.string(node);
7
+ if (isLinkElement(node) && options.markdownLinks)
8
+ return `[${serializeToText(node.children)}](${node.url})`;
9
+ if (isVariableElement(node) && options.encodeVariables)
10
+ return `{${options.variablesMap ? (_b = (_a = options.variablesMap[node.id]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : node.id : node.name}}`;
11
+ return nodesToString(node.children, options).join('');
12
+ };
13
+ const nodesToString = (nodes, options) => nodes.map((node) => nodeToString(node, options));
14
+ export const serializeToText = (content, { variablesMap = {}, markdownLinks = false, encodeVariables = true } = {}) => nodesToString(content, { variablesMap, markdownLinks, encodeVariables }).join('\n').trim();
15
+ //# sourceMappingURL=text.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.mjs","sourceRoot":"","sources":["../../../src/serializers/text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAQ7D,MAAM,YAAY,GAAG,CAAC,IAAgB,EAAE,OAA8B,EAAU,EAAE;;IAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC;IAE5G,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe;QACpD,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,MAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,0CAAE,IAAI,mCAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IAElG,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,OAA8B,EAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1I,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAuB,EACvB,EAAE,YAAY,GAAG,EAAE,EAAE,aAAa,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,KAA4B,EAAE,EACxF,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { CSSProperties } from './types.js';
2
+ export declare const cssPropertyNameToStyleName: (name: string) => string;
3
+ export declare const convertCSSPropertiesToStyles: (properties: CSSProperties) => string;
@@ -0,0 +1,6 @@
1
+ const CAPITAL_LETTER_REGEXP = /[A-Z]/g;
2
+ export const cssPropertyNameToStyleName = (name) => name.replace(CAPITAL_LETTER_REGEXP, (match) => `-${match.toLowerCase()}`);
3
+ export const convertCSSPropertiesToStyles = (properties) => Object.entries(properties)
4
+ .map(([key, value]) => `${cssPropertyNameToStyleName(key)}:${value}`)
5
+ .join(';');
6
+ //# sourceMappingURL=styles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.mjs","sourceRoot":"","sources":["../../src/styles.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AAEvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAE9I,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAyB,EAAU,EAAE,CAChF,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;KACvB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;KACpE,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import CSS from 'csstype';
2
+ export type CSSProperties = CSS.Properties<string | number>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@voiceflow/slate-serializer",
3
+ "type": "module",
3
4
  "description": "Utilities for serializing slate data",
4
- "version": "1.0.0",
5
+ "version": "1.0.1-rc.0",
5
6
  "author": "Ben Teichman",
6
7
  "bugs": {
7
8
  "url": "https://github.com/voiceflow/slate-serializer/issues"
@@ -11,65 +12,95 @@
11
12
  "path": "./node_modules/cz-conventional-changelog"
12
13
  }
13
14
  },
15
+ "dependencies": {
16
+ "csstype": "3.1.2"
17
+ },
14
18
  "devDependencies": {
15
- "@commitlint/cli": "17.1.2",
19
+ "@commitlint/cli": "17.6.1",
16
20
  "@istanbuljs/nyc-config-typescript": "1.0.2",
17
- "@types/chai": "4.3.3",
18
- "@types/mocha": "9.1.1",
19
- "@voiceflow/commitlint-config": "2.0.0",
20
- "@voiceflow/eslint-config": "7.0.0",
21
+ "@types/chai": "4.3.5",
22
+ "@types/mocha": "10.0.1",
23
+ "@types/react": "18.2.4",
24
+ "@voiceflow/commitlint-config": "2.1.0",
25
+ "@voiceflow/dtos-interact": "1.17.1",
26
+ "@voiceflow/eslint-config": "7.1.0",
21
27
  "@voiceflow/git-branch-check": "1.4.0",
22
- "@voiceflow/prettier-config": "1.2.1",
28
+ "@voiceflow/prettier-config": "1.3.0",
23
29
  "@voiceflow/tsconfig": "1.4.8",
24
- "chai": "4.3.6",
25
- "commitizen": "4.2.5",
30
+ "chai": "4.3.7",
31
+ "commitizen": "4.3.0",
26
32
  "cz-conventional-changelog": "^3.3.0",
27
33
  "depcheck": "1.4.3",
28
- "eslint": "8.24.0",
34
+ "eslint": "8.39.0",
29
35
  "eslint-output": "^3.0.1",
30
36
  "fixpack": "^4.0.0",
31
- "husky": "8.0.1",
37
+ "husky": "8.0.3",
32
38
  "istanbul": "^0.4.5",
33
- "lint-staged": "13.0.3",
34
- "mocha": "10.0.0",
39
+ "lint-staged": "13.1.2",
40
+ "mocha": "10.2.0",
35
41
  "nyc": "^15.1.0",
36
- "prettier": "2.7.1",
37
- "react": "^18.2.0",
38
- "slate": "^0.72.3",
42
+ "prettier": "2.8.8",
43
+ "react": "18.2.0",
44
+ "slate": "0.94.1",
39
45
  "source-map-support": "0.5.21",
40
46
  "ts-mocha": "10.0.0",
41
47
  "ts-node": "10.9.1",
42
- "tsc-alias": "1.7.0",
43
- "typescript": "4.8.3"
48
+ "tsc-alias": "1.8.6",
49
+ "tsc-esm-fix": "2.20.13",
50
+ "typescript": "5.0.4",
51
+ "zod": "3.22.4"
52
+ },
53
+ "exports": {
54
+ ".": {
55
+ "import": "./build/esm/index.mjs",
56
+ "require": "./build/cjs/index.cjs"
57
+ },
58
+ "./text": {
59
+ "import": "./build/esm/serializers/text.mjs",
60
+ "require": "./build/cjs/serializers/text.cjs"
61
+ },
62
+ "./markdown": {
63
+ "import": "./build/esm/serializers/markdown.mjs",
64
+ "require": "./build/cjs/serializers/markdown.cjs"
65
+ },
66
+ "./jsx": {
67
+ "import": "./build/esm/serializers/jsx.mjs",
68
+ "require": "./build/cjs/serializers/jsx.cjs"
69
+ }
44
70
  },
45
71
  "files": [
46
72
  "build/"
47
73
  ],
48
74
  "homepage": "https://github.com/voiceflow/slate-serializer#readme",
49
75
  "keywords": [
50
- "slate",
51
76
  "react",
77
+ "slate",
52
78
  "voiceflow"
53
79
  ],
54
80
  "license": "ISC",
55
- "exports": {
56
- ".": "./build/index.js",
57
- "./text": "./build/serializers/text.js",
58
- "./react": "./build/serializers/react.js"
81
+ "peerDependencies": {
82
+ "@voiceflow/dtos-interact": "^1.17.1",
83
+ "react": "^17.0.2",
84
+ "slate": "^0.72.3",
85
+ "zod": "^3"
59
86
  },
60
- "main": "build/index.js",
61
87
  "prettier": "@voiceflow/prettier-config",
88
+ "publishConfig": {
89
+ "access": "public"
90
+ },
62
91
  "repository": {
63
92
  "type": "git",
64
93
  "url": "git+https://github.com/voiceflow/slate-serializer.git"
65
94
  },
66
95
  "scripts": {
67
- "build": "yarn clean && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
96
+ "build": "yarn clean && yarn build:cjs && yarn build:esm",
97
+ "build:cjs": "tsc -p tsconfig.build.cjs.json && tsc-alias -p tsconfig.build.cjs.json && tsc-esm-fix --sourceMap --target build/cjs --ext .cjs",
98
+ "build:esm": "tsc -p tsconfig.build.esm.json && tsc-alias -p tsconfig.build.esm.json && tsc-esm-fix --sourceMap --target build/esm --ext .mjs",
68
99
  "clean": "rimraf build",
69
100
  "commit": "cz",
70
101
  "eslint-output": "eslint-output",
71
- "lint": "eslint '**/*.{js,ts}'",
72
- "lint:output": "yarn run eslint-output --quiet \"**/*.{js,ts}\"",
102
+ "lint": "eslint '**/*.{js,ts,tsx}'",
103
+ "lint:output": "yarn run eslint-output --quiet \"**/*.{js,ts,tsx}\"",
73
104
  "lint:quiet": "yarn lint --quiet",
74
105
  "lint:report": "yarn lint:output",
75
106
  "prepublishOnly": "yarn build",
@@ -79,15 +110,22 @@
79
110
  "test:single": "NODE_ENV=test ts-mocha --paths --config ./config/test/.mocharc.yml",
80
111
  "test:unit": "NODE_ENV=test nyc --report-dir=nyc_coverage_unit ts-mocha --paths --config ./config/test/.mocharc.yml 'test/**/*.unit.ts'"
81
112
  },
82
- "types": "build/index.d.ts",
83
- "dependencies": {
84
- "@types/react": "18.0.21",
85
- "@voiceflow/base-types": "2.68.1"
86
- },
87
- "peerDependencies": {
88
- "slate": "^0.72.3"
113
+ "types": "build/esm/index.d.ts",
114
+ "typesVersions": {
115
+ "*": {
116
+ "text": [
117
+ "./build/esm/serializers/text.d.ts"
118
+ ],
119
+ "jsx": [
120
+ "./build/esm/serializers/jsx.d.ts"
121
+ ],
122
+ "markdown": [
123
+ "./build/esm/serializers/markdown.d.ts"
124
+ ]
125
+ }
89
126
  },
90
- "optionalDependencies": {
91
- "react": "^18.2.0"
127
+ "volta": {
128
+ "node": "20.12.1",
129
+ "yarn": "1.22.19"
92
130
  }
93
131
  }
package/build/guards.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Text } from '@voiceflow/base-types';
2
- export declare const isLinkElement: (element: Text.AnyElement) => element is Text.LinkElement;
3
- export declare const isVariableElement: (element: Text.AnyElement) => element is Text.VariableElement;
package/build/guards.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isVariableElement = exports.isLinkElement = void 0;
4
- const base_types_1 = require("@voiceflow/base-types");
5
- const isLinkElement = (element) => element.type === base_types_1.Text.ElementType.LINK;
6
- exports.isLinkElement = isLinkElement;
7
- const isVariableElement = (element) => element.type === base_types_1.Text.ElementType.VARIABLE;
8
- exports.isVariableElement = isVariableElement;
9
- //# sourceMappingURL=guards.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":";;;AAAA,sDAA6C;AAEtC,MAAM,aAAa,GAAG,CAAC,OAAwB,EAA+B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAAlH,QAAA,aAAa,iBAAqG;AAExH,MAAM,iBAAiB,GAAG,CAAC,OAAwB,EAAmC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAA9H,QAAA,iBAAiB,qBAA6G"}
package/build/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './guards';
2
- export * from './selectors';
3
- export * from './styles';
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB"}
@@ -1,6 +0,0 @@
1
- import { Text } from '@voiceflow/base-types';
2
- import type { CSSProperties } from 'react';
3
- export declare const getElementCSSProperties: (element: Text.AnyElement) => CSSProperties;
4
- export declare const getTextCSSProperties: (text: Text.Text) => CSSProperties;
5
- export declare const getElementStyles: (element: Text.AnyElement) => string;
6
- export declare const getTextStyles: (text: Text.Text) => string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":";;;AAAA,sDAA6C;AAG7C,qCAAwD;AAEjD,MAAM,uBAAuB,GAAG,CAAC,OAAwB,EAAiB,EAAE;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAI,CAAC,eAAe,CAAC,UAAU,CAA+B,CAAC;IAEzF,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAe,EAAiB,EAAE;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;IAC9E,IAAI,QAAQ;QAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC1C,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,UAAU;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,UAAU,GAAG,CAAC;IAEtD,IAAI,WAAW,IAAI,eAAe,EAAE;QAClC,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,WAAW;YAAE,UAAU,IAAI,WAAW,CAAC;QAC3C,IAAI,eAAe;YAAE,UAAU,IAAI,eAAe,CAAC;QAEnD,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;KAC3C;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B;AAEK,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAU,EAAE,CAAC,IAAA,qCAA4B,EAAC,IAAA,+BAAuB,EAAC,OAAO,CAAC,CAAC,CAAC;AAAxH,QAAA,gBAAgB,oBAAwG;AAE9H,MAAM,aAAa,GAAG,CAAC,IAAe,EAAU,EAAE,CAAC,IAAA,qCAA4B,EAAC,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;AAAtG,QAAA,aAAa,iBAAyF"}
@@ -1,3 +0,0 @@
1
- import { BaseText } from '@voiceflow/base-types';
2
- import React from 'react';
3
- export declare const serializeToJSX: (content: BaseText.SlateTextValue) => React.ReactNode;
@@ -1,43 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.serializeToJSX = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const slate_1 = __importDefault(require("slate"));
9
- const guards_1 = require("../guards");
10
- const selectors_1 = require("../selectors");
11
- const serializeTextNode = (node, index) => {
12
- const styles = (0, selectors_1.getTextCSSProperties)(node);
13
- return (react_1.default.createElement("span", { key: index, style: styles }, node.text || react_1.default.createElement(react_1.default.Fragment, null, "\uFEFF")));
14
- };
15
- const serializeLinkElement = (node, index) => {
16
- var _a;
17
- const children = node.children.map(serializeNode);
18
- const styles = (0, selectors_1.getElementCSSProperties)(node);
19
- return (react_1.default.createElement("a", { key: index, rel: "noopener noreferrer", href: (_a = node.url) !== null && _a !== void 0 ? _a : '', target: "_blank", style: Object.assign(Object.assign({}, styles), { pointerEvents: 'all' }), onClick: (event) => {
20
- var _a;
21
- event.stopPropagation();
22
- event.preventDefault();
23
- if (node.url) {
24
- (_a = window.open(node.url, '_blank', 'noopener=true,noreferrer=true')) === null || _a === void 0 ? void 0 : _a.focus();
25
- }
26
- } }, children));
27
- };
28
- const serializeVariableElement = (node, index) => react_1.default.createElement("span", { key: index }, `{${node.name}}`);
29
- const serializeElementNode = (node, index) => {
30
- if ((0, guards_1.isLinkElement)(node))
31
- return serializeLinkElement(node, index);
32
- if ((0, guards_1.isVariableElement)(node))
33
- return serializeVariableElement(node, index);
34
- const children = node.children.map(serializeNode);
35
- const styles = (0, selectors_1.getElementCSSProperties)(node);
36
- return (react_1.default.createElement("div", { key: index, style: styles }, children));
37
- };
38
- const serializeNode = (node, index) =>
39
- // eslint-disable-next-line no-nested-ternary
40
- slate_1.default.Text.isText(node) ? serializeTextNode(node, index) : slate_1.default.Element.isElement(node) ? serializeElementNode(node, index) : null;
41
- const serializeToJSX = (content) => content.map(serializeNode);
42
- exports.serializeToJSX = serializeToJSX;
43
- //# sourceMappingURL=react.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/serializers/react.tsx"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,kDAA0B;AAE1B,sCAA6D;AAC7D,4CAA6E;AAE7E,MAAM,iBAAiB,GAAG,CAAC,IAAmB,EAAE,KAAa,EAAmB,EAAE;IAChF,MAAM,MAAM,GAAG,IAAA,gCAAoB,EAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,CACL,wCAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAC5B,IAAI,CAAC,IAAI,IAAI,uEAAa,CACtB,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,IAA0B,EAAE,KAAa,EAAmB,EAAE;;IAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,mCAAuB,EAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,CACL,qCACE,GAAG,EAAE,KAAK,EACV,GAAG,EAAC,qBAAqB,EACzB,IAAI,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,EAAE,EACpB,MAAM,EAAC,QAAQ,EACf,KAAK,kCAAO,MAAM,KAAE,aAAa,EAAE,KAAK,KACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;;YACjB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,MAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,+BAA+B,CAAC,0CAAE,KAAK,EAAE,CAAC;aAC3E;QACH,CAAC,IAEA,QAAQ,CACP,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,IAA8B,EAAE,KAAa,EAAE,EAAE,CAAC,wCAAM,GAAG,EAAE,KAAK,IAAG,IAAI,IAAI,CAAC,IAAI,GAAG,CAAQ,CAAC;AAEhI,MAAM,oBAAoB,GAAG,CAAC,IAAyB,EAAE,KAAa,EAAmB,EAAE;IACzF,IAAI,IAAA,sBAAa,EAAC,IAAI,CAAC;QAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClE,IAAI,IAAA,0BAAiB,EAAC,IAAI,CAAC;QAAE,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,mCAAuB,EAAC,IAAI,CAAC,CAAC;IAE7C,OAAO,CACL,uCAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAC3B,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAyB,EAAE,KAAa,EAAmB,EAAE;AAClF,6CAA6C;AAC7C,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE/H,MAAM,cAAc,GAAG,CAAC,OAAgC,EAAmB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAAnG,QAAA,cAAc,kBAAqF"}
@@ -1,2 +0,0 @@
1
- import { BaseText } from '@voiceflow/base-types';
2
- export declare const serializeToText: (content: BaseText.SlateTextValue, encode?: boolean) => string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/serializers/text.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA+B;AAE/B,sCAA8C;AAE9C,MAAM,eAAe,GAAG,CAAC,UAAmC,EAAE,EAAU,EAAE,CACxE,OAAO,CAAC,MAAM,CAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE1H,MAAM,eAAe,GAAG,CAAC,KAA8B,EAA2B,EAAE,CAClF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;IACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,OAAO,IAAA,0BAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,iCAAM,IAAI,KAAE,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAE,CAAC;AACtH,CAAC,CAAC,CAAC;AAEE,MAAM,eAAe,GAAG,CAAC,OAAgC,EAAE,MAAM,GAAG,KAAK,EAAU,EAAE,CAC1F,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AADlD,QAAA,eAAe,mBACmC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":";;;AAEA,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AAEhC,MAAM,0BAA0B,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAAjI,QAAA,0BAA0B,8BAAuG;AAEvI,MAAM,4BAA4B,GAAG,CAAC,UAAyB,EAAU,EAAE,CAChF,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;KACvB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAA,kCAA0B,EAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;KACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AAHF,QAAA,4BAA4B,gCAG1B"}