@platecms/delta-cast-util-to-hast 0.1.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 (50) hide show
  1. package/README.md +142 -0
  2. package/package.json +30 -0
  3. package/src/index.d.ts +3 -0
  4. package/src/index.js +9 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/elements/blockquote.d.ts +4 -0
  7. package/src/lib/elements/blockquote.js +13 -0
  8. package/src/lib/elements/blockquote.js.map +1 -0
  9. package/src/lib/elements/bold.d.ts +4 -0
  10. package/src/lib/elements/bold.js +13 -0
  11. package/src/lib/elements/bold.js.map +1 -0
  12. package/src/lib/elements/code.d.ts +4 -0
  13. package/src/lib/elements/code.js +13 -0
  14. package/src/lib/elements/code.js.map +1 -0
  15. package/src/lib/elements/contentValue.d.ts +4 -0
  16. package/src/lib/elements/contentValue.js +14 -0
  17. package/src/lib/elements/contentValue.js.map +1 -0
  18. package/src/lib/elements/heading.d.ts +4 -0
  19. package/src/lib/elements/heading.js +13 -0
  20. package/src/lib/elements/heading.js.map +1 -0
  21. package/src/lib/elements/index.d.ts +12 -0
  22. package/src/lib/elements/index.js +27 -0
  23. package/src/lib/elements/index.js.map +1 -0
  24. package/src/lib/elements/italic.d.ts +4 -0
  25. package/src/lib/elements/italic.js +13 -0
  26. package/src/lib/elements/italic.js.map +1 -0
  27. package/src/lib/elements/lists.d.ts +5 -0
  28. package/src/lib/elements/lists.js +22 -0
  29. package/src/lib/elements/lists.js.map +1 -0
  30. package/src/lib/elements/paragraph.d.ts +4 -0
  31. package/src/lib/elements/paragraph.js +13 -0
  32. package/src/lib/elements/paragraph.js.map +1 -0
  33. package/src/lib/elements/strikehrough.d.ts +4 -0
  34. package/src/lib/elements/strikehrough.js +13 -0
  35. package/src/lib/elements/strikehrough.js.map +1 -0
  36. package/src/lib/elements/text.d.ts +3 -0
  37. package/src/lib/elements/text.js +10 -0
  38. package/src/lib/elements/text.js.map +1 -0
  39. package/src/lib/elements/underline.d.ts +4 -0
  40. package/src/lib/elements/underline.js +13 -0
  41. package/src/lib/elements/underline.js.map +1 -0
  42. package/src/lib/index.d.ts +5 -0
  43. package/src/lib/index.js +55 -0
  44. package/src/lib/index.js.map +1 -0
  45. package/src/lib/transformers/index.d.ts +5 -0
  46. package/src/lib/transformers/index.js +22 -0
  47. package/src/lib/transformers/index.js.map +1 -0
  48. package/src/lib/utils/index.d.ts +3 -0
  49. package/src/lib/utils/index.js +17 -0
  50. package/src/lib/utils/index.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,142 @@
1
+ # cast-util-to-hast
2
+
3
+ This library is part of the [CAST]() abstract syntax tree utilities.
4
+ It provides a utility to convert a [CAST]() abstract syntax tree to a [Hast]() abstract syntax tree.
5
+
6
+ ## Usage
7
+
8
+ Using the utility `cast` to `hast` looks as follows:
9
+ ```ts
10
+ /**
11
+ * @import {Root} from 'cast'
12
+ */
13
+
14
+ import {toHast} from '@platecms/delta-cast-util-to-hast'
15
+
16
+ /** @type {Root} */
17
+ const tree = {
18
+ type: 'root',
19
+ children: [
20
+ {
21
+ type: 'paragraph',
22
+ children: [
23
+ { type: 'text', value: 'Hello, world!' }
24
+ ]
25
+ }
26
+ ]
27
+ }
28
+
29
+ console.info(toHast(tree))
30
+ ```
31
+
32
+ yields:
33
+ ```json
34
+ {
35
+ "type": "root",
36
+ "children": [
37
+ {
38
+ "type": "element",
39
+ "tagName": "p",
40
+ "properties": {},
41
+ "children": [
42
+ {
43
+ "type": "text",
44
+ "value": "Hello, world!"
45
+ }
46
+ ]
47
+ }
48
+ ]
49
+ }
50
+ ```
51
+
52
+ ## Transformers
53
+
54
+ The utility provides a set of transformers that can be used to transform the cast tree before it is converted to hast.
55
+ By default the `contentValue` transformer removes the first block element if it has exactly one child.
56
+ This enables inline rendering of content values when they are used as a single value inside another value.
57
+
58
+ ```ts
59
+ /**
60
+ * @import {Root} from 'cast'
61
+ */
62
+
63
+ import {toHast} from '@platecms/delta-cast-util-to-hast'
64
+
65
+ /** @type {Root} */
66
+ const cast: Root = {
67
+ type: "root",
68
+ children: [
69
+ {
70
+ type: "paragraph",
71
+ children: [
72
+ {
73
+ type: "text",
74
+ value: "My first "
75
+ },
76
+ {
77
+ type: "contentValue",
78
+ value: {
79
+ type: "root",
80
+ children: [
81
+ {
82
+ type: "paragraph",
83
+ children: [
84
+ {
85
+ type: "text",
86
+ value: "content"
87
+ },
88
+ ]
89
+ },
90
+ ]
91
+ },
92
+ prn: "prn:plate-dev:a7734468-b894-4191-83b1-7d218f8c9922:cxc:content-value:b2119c94-24e6-4358-b557-c705dcd19d1d"
93
+ },
94
+ ],
95
+ },
96
+ ],
97
+ };
98
+ ```
99
+
100
+ yields (hast):
101
+ ```json
102
+ {
103
+ "type": "root",
104
+ "children": [
105
+ {
106
+ "type": "element",
107
+ "tagName": "p",
108
+ "properties": {},
109
+ "children": [
110
+ {
111
+ "type": "text",
112
+ "value": "My first "
113
+ },
114
+ {
115
+ "type": "element",
116
+ "tagName": "span",
117
+ "properties": {},
118
+ "children": [
119
+ {
120
+ "type": "text",
121
+ "value": "content"
122
+ }
123
+ ]
124
+ }
125
+ ]
126
+ }
127
+ ]
128
+ }
129
+ ```
130
+
131
+ or yields (html):
132
+ ```html
133
+ <p>My first <span>content</span></p>
134
+ ```
135
+
136
+ ## Building
137
+
138
+ Run `nx build cast-util-to-hast` to build the library.
139
+
140
+ ## Running unit tests
141
+
142
+ Run `nx test cast-util-to-hast` to execute the unit tests via [Vitest](https://vitest.dev/).
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@platecms/delta-cast-util-to-hast",
3
+ "version": "0.1.0",
4
+ "description": "Utility to convert CAST to HAST syntax tree.",
5
+ "license": "UNLICENSED",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://bitbucket.org/startmetplate/delta.git"
12
+ },
13
+ "homepage": "https://bitbucket.org/startmetplate/delta/src/dev/packages/cast-util-to-hast",
14
+ "main": "./src/index.js",
15
+ "types": "./src/index.d.ts",
16
+ "files": [
17
+ "src/**/*"
18
+ ],
19
+ "dependencies": {
20
+ "@platecms/delta-cast": "0.4.8",
21
+ "@platecms/delta-plate-resource-notation": "1.4.1",
22
+ "class-transformer": "0.5.1",
23
+ "hast": "1.0.0",
24
+ "reflect-metadata": "0.2.2",
25
+ "tslib": "2.8.1",
26
+ "zwitch": "2.0.4",
27
+ "lodash": "4.17.21"
28
+ },
29
+ "type": "commonjs"
30
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export { toHast } from "./lib";
2
+ export * from "./lib/utils";
3
+ export * from "./lib/transformers";
package/src/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toHast = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var lib_1 = require("./lib");
6
+ Object.defineProperty(exports, "toHast", { enumerable: true, get: function () { return lib_1.toHast; } });
7
+ tslib_1.__exportStar(require("./lib/utils"), exports);
8
+ tslib_1.__exportStar(require("./lib/transformers"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/cast-util-to-hast/src/index.ts"],"names":[],"mappings":";;;;AAAA,6BAA+B;AAAtB,6FAAA,MAAM,OAAA;AAEf,sDAA4B;AAC5B,6DAAmC"}
@@ -0,0 +1,4 @@
1
+ import { Blockquote } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function blockquote(node: Blockquote, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blockquote = blockquote;
4
+ const __1 = require("..");
5
+ function blockquote(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "blockquote",
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=blockquote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockquote.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/blockquote.ts"],"names":[],"mappings":";;AAKA,gCAOC;AAVD,0BAAyB;AAGzB,SAAgB,UAAU,CAAC,IAAgB,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IAC/F,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Bold } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function bold(node: Bold, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bold = bold;
4
+ const __1 = require("..");
5
+ function bold(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "strong",
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=bold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bold.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/bold.ts"],"names":[],"mappings":";;AAKA,oBAOC;AAVD,0BAAyB;AAGzB,SAAgB,IAAI,CAAC,IAAU,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACnF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { NodeTransformers } from "../transformers";
2
+ import { Code } from "@platecms/delta-cast";
3
+ import { Element as HastElement } from "hast";
4
+ export declare function code(node: Code, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.code = code;
4
+ const __1 = require("..");
5
+ function code(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "code",
9
+ properties: { lang: node.lang },
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/code.ts"],"names":[],"mappings":";;AAKA,oBAOC;AAZD,0BAAyB;AAKzB,SAAgB,IAAI,CAAC,IAAU,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACnF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAC/B,QAAQ,EAAE,IAAA,OAAG,EAAE,IAAoC,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAChF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { InterpolatedContentValue } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function contentValue(node: InterpolatedContentValue, state: object, transform: NodeTransformers): HastElement;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contentValue = contentValue;
4
+ const __1 = require("..");
5
+ function contentValue(node, state, transform) {
6
+ const transformedNode = transform.contentValue ? transform.contentValue(node) : node;
7
+ return {
8
+ type: "element",
9
+ tagName: "span",
10
+ properties: {},
11
+ children: transformedNode.value ? (0, __1.all)(transformedNode.value.children, state, transform) : [],
12
+ };
13
+ }
14
+ //# sourceMappingURL=contentValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentValue.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/contentValue.ts"],"names":[],"mappings":";;AAKA,oCASC;AAZD,0BAAyB;AAGzB,SAAgB,YAAY,CAAC,IAA8B,EAAE,KAAa,EAAE,SAA2B;IACrG,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAErF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,OAAG,EAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;KAC7F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Heading } from "@platecms/delta-cast";
2
+ import { NodeTransformers } from "../transformers";
3
+ import { Element as HastElement } from "hast";
4
+ export declare function heading(node: Heading, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.heading = heading;
4
+ const __1 = require("..");
5
+ function heading(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: `h${node.level}`,
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=heading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/heading.ts"],"names":[],"mappings":";;AAKA,0BAOC;AAXD,0BAAyB;AAIzB,SAAgB,OAAO,CAAC,IAAa,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACzF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;QACzB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { heading } from "./heading";
2
+ import { list, listItem } from "./lists";
3
+ import { code } from "./code";
4
+ import { contentValue } from "./contentValue";
5
+ import { paragraph } from "./paragraph";
6
+ import { bold } from "./bold";
7
+ import { italic } from "./italic";
8
+ import { underline } from "./underline";
9
+ import { strikehrough } from "./strikehrough";
10
+ import { text } from "./text";
11
+ import { blockquote } from "./blockquote";
12
+ export { heading, list, listItem, code, contentValue, paragraph, bold, italic, underline, strikehrough, text, blockquote, };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blockquote = exports.text = exports.strikehrough = exports.underline = exports.italic = exports.bold = exports.paragraph = exports.contentValue = exports.code = exports.listItem = exports.list = exports.heading = void 0;
4
+ const heading_1 = require("./heading");
5
+ Object.defineProperty(exports, "heading", { enumerable: true, get: function () { return heading_1.heading; } });
6
+ const lists_1 = require("./lists");
7
+ Object.defineProperty(exports, "list", { enumerable: true, get: function () { return lists_1.list; } });
8
+ Object.defineProperty(exports, "listItem", { enumerable: true, get: function () { return lists_1.listItem; } });
9
+ const code_1 = require("./code");
10
+ Object.defineProperty(exports, "code", { enumerable: true, get: function () { return code_1.code; } });
11
+ const contentValue_1 = require("./contentValue");
12
+ Object.defineProperty(exports, "contentValue", { enumerable: true, get: function () { return contentValue_1.contentValue; } });
13
+ const paragraph_1 = require("./paragraph");
14
+ Object.defineProperty(exports, "paragraph", { enumerable: true, get: function () { return paragraph_1.paragraph; } });
15
+ const bold_1 = require("./bold");
16
+ Object.defineProperty(exports, "bold", { enumerable: true, get: function () { return bold_1.bold; } });
17
+ const italic_1 = require("./italic");
18
+ Object.defineProperty(exports, "italic", { enumerable: true, get: function () { return italic_1.italic; } });
19
+ const underline_1 = require("./underline");
20
+ Object.defineProperty(exports, "underline", { enumerable: true, get: function () { return underline_1.underline; } });
21
+ const strikehrough_1 = require("./strikehrough");
22
+ Object.defineProperty(exports, "strikehrough", { enumerable: true, get: function () { return strikehrough_1.strikehrough; } });
23
+ const text_1 = require("./text");
24
+ Object.defineProperty(exports, "text", { enumerable: true, get: function () { return text_1.text; } });
25
+ const blockquote_1 = require("./blockquote");
26
+ Object.defineProperty(exports, "blockquote", { enumerable: true, get: function () { return blockquote_1.blockquote; } });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/index.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAalC,wFAbO,iBAAO,OAaP;AAZT,mCAAyC;AAavC,qFAbO,YAAI,OAaP;AACJ,yFAda,gBAAQ,OAcb;AAbV,iCAA8B;AAc5B,qFAdO,WAAI,OAcP;AAbN,iDAA8C;AAc5C,6FAdO,2BAAY,OAcP;AAbd,2CAAwC;AActC,0FAdO,qBAAS,OAcP;AAbX,iCAA8B;AAc5B,qFAdO,WAAI,OAcP;AAbN,qCAAkC;AAchC,uFAdO,eAAM,OAcP;AAbR,2CAAwC;AActC,0FAdO,qBAAS,OAcP;AAbX,iDAA8C;AAc5C,6FAdO,2BAAY,OAcP;AAbd,iCAA8B;AAc5B,qFAdO,WAAI,OAcP;AAbN,6CAA0C;AAcxC,2FAdO,uBAAU,OAcP"}
@@ -0,0 +1,4 @@
1
+ import { Italic } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function italic(node: Italic, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.italic = italic;
4
+ const __1 = require("..");
5
+ function italic(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "em",
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=italic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"italic.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/italic.ts"],"names":[],"mappings":";;AAKA,wBAOC;AAVD,0BAAyB;AAGzB,SAAgB,MAAM,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACvF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { List, ListItem } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function list(node: List, state?: object, transform?: NodeTransformers): HastElement;
5
+ export declare function listItem(node: ListItem, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.list = list;
4
+ exports.listItem = listItem;
5
+ const __1 = require("..");
6
+ function list(node, state = {}, transform = {}) {
7
+ return {
8
+ type: "element",
9
+ tagName: node.ordered ? "ol" : "ul",
10
+ properties: {},
11
+ children: (0, __1.all)(node.children, state, transform),
12
+ };
13
+ }
14
+ function listItem(node, state = {}, transform = {}) {
15
+ return {
16
+ type: "element",
17
+ tagName: "li",
18
+ properties: {},
19
+ children: (0, __1.all)(node.children, state, transform),
20
+ };
21
+ }
22
+ //# sourceMappingURL=lists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/lists.ts"],"names":[],"mappings":";;AAKA,oBAOC;AAED,4BAOC;AAnBD,0BAAyB;AAGzB,SAAgB,IAAI,CAAC,IAAU,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACnF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACnC,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAc,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IAC3F,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Paragraph } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function paragraph(node: Paragraph, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.paragraph = paragraph;
4
+ const __1 = require("..");
5
+ function paragraph(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "p",
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=paragraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paragraph.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/paragraph.ts"],"names":[],"mappings":";;AAKA,8BAOC;AAVD,0BAAyB;AAGzB,SAAgB,SAAS,CAAC,IAAe,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IAC7F,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Strikethrough } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function strikehrough(node: Strikethrough, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.strikehrough = strikehrough;
4
+ const __1 = require("..");
5
+ function strikehrough(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "s",
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=strikehrough.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strikehrough.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/strikehrough.ts"],"names":[],"mappings":";;AAKA,oCAOC;AAVD,0BAAyB;AAGzB,SAAgB,YAAY,CAAC,IAAmB,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACpG,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Text } from "@platecms/delta-cast";
2
+ import { Text as HastText } from "hast";
3
+ export declare function text(node: Text): HastText;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.text = text;
4
+ function text(node) {
5
+ return {
6
+ type: "text",
7
+ value: node.value,
8
+ };
9
+ }
10
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/text.ts"],"names":[],"mappings":";;AAGA,oBAKC;AALD,SAAgB,IAAI,CAAC,IAAU;IAC7B,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Underline } from "@platecms/delta-cast";
2
+ import { Element as HastElement } from "hast";
3
+ import { NodeTransformers } from "../transformers";
4
+ export declare function underline(node: Underline, state?: object, transform?: NodeTransformers): HastElement;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.underline = underline;
4
+ const __1 = require("..");
5
+ function underline(node, state = {}, transform = {}) {
6
+ return {
7
+ type: "element",
8
+ tagName: "u",
9
+ properties: {},
10
+ children: (0, __1.all)(node.children, state, transform),
11
+ };
12
+ }
13
+ //# sourceMappingURL=underline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"underline.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/elements/underline.ts"],"names":[],"mappings":";;AAKA,8BAOC;AAVD,0BAAyB;AAGzB,SAAgB,SAAS,CAAC,IAAe,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IAC7F,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,IAAA,OAAG,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Root as CastRoot, Content } from "@platecms/delta-cast";
2
+ import { Element as HastElement, Root as HastRoot } from "hast";
3
+ import { NodeTransformers } from "./transformers";
4
+ export declare function all(nodes: Content[], state?: object, transform?: NodeTransformers): HastElement[];
5
+ export declare function toHast(value: CastRoot, transform?: NodeTransformers): HastRoot;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.all = all;
4
+ exports.toHast = toHast;
5
+ const zwitch_1 = require("zwitch");
6
+ const elements_1 = require("./elements");
7
+ const transformers_1 = require("./transformers");
8
+ function defaultHandler(node) {
9
+ return {
10
+ type: "element",
11
+ tagName: "span",
12
+ properties: {},
13
+ children: [
14
+ {
15
+ type: "text",
16
+ value: `Unknown node type (${node.type})`,
17
+ },
18
+ ],
19
+ };
20
+ }
21
+ const one = (0, zwitch_1.zwitch)("type", {
22
+ handlers: {
23
+ heading: elements_1.heading,
24
+ list: elements_1.list,
25
+ listItem: elements_1.listItem,
26
+ blockquote: elements_1.blockquote,
27
+ code: elements_1.code,
28
+ paragraph: elements_1.paragraph,
29
+ contentValue: elements_1.contentValue,
30
+ bold: elements_1.bold,
31
+ italic: elements_1.italic,
32
+ underline: elements_1.underline,
33
+ strikehrough: elements_1.strikehrough,
34
+ text: elements_1.text,
35
+ },
36
+ unknown: (value, _s = {}, _t = {}) => defaultHandler(value),
37
+ });
38
+ function all(nodes, state = {}, transform = {}) {
39
+ let index = -1;
40
+ const results = [];
41
+ while (++index < nodes.length) {
42
+ const result = one(nodes[index], state, transform);
43
+ results.push(result);
44
+ }
45
+ return results;
46
+ }
47
+ function toHast(value, transform = {
48
+ contentValue: transformers_1.flattenTextOnlyContentValueNode,
49
+ }) {
50
+ return {
51
+ type: "root",
52
+ children: all(value.children, {}, transform),
53
+ };
54
+ }
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/cast-util-to-hast/src/lib/index.ts"],"names":[],"mappings":";;AAoDA,kBAUC;AAED,wBAUC;AAxED,mCAAgC;AAChC,yCAaoB;AACpB,iDAAmF;AAEnF,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,sBAAsB,IAAI,CAAC,IAAI,GAAG;aAC1C;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,GAAG,GAAG,IAAA,eAAM,EAAC,MAAM,EAAE;IACzB,QAAQ,EAAE;QACR,OAAO,EAAP,kBAAO;QACP,IAAI,EAAJ,eAAI;QACJ,QAAQ,EAAR,mBAAQ;QACR,UAAU,EAAV,qBAAU;QACV,IAAI,EAAJ,eAAI;QACJ,SAAS,EAAT,oBAAS;QACT,YAAY,EAAZ,uBAAY;QACZ,IAAI,EAAJ,eAAI;QACJ,MAAM,EAAN,iBAAM;QACN,SAAS,EAAT,oBAAS;QACT,YAAY,EAAZ,uBAAY;QACZ,IAAI,EAAJ,eAAI;KACL;IAED,OAAO,EAAE,CAAC,KAAc,EAAE,KAAa,EAAE,EAAE,KAAa,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,KAAgB,CAAC;CAChG,CAAC,CAAC;AAEH,SAAgB,GAAG,CAAC,KAAgB,EAAE,QAAgB,EAAE,EAAE,YAA8B,EAAE;IACxF,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,OAAO,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,MAAM,CACpB,KAAe,EACf,YAA8B;IAC5B,YAAY,EAAE,8CAA+B;CAC9C;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,CAAC;KAC7C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { InterpolatedContentValue } from "@platecms/delta-cast";
2
+ export interface NodeTransformers {
3
+ contentValue?: (node: InterpolatedContentValue) => InterpolatedContentValue;
4
+ }
5
+ export declare function flattenTextOnlyContentValueNode(node: InterpolatedContentValue): InterpolatedContentValue;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flattenTextOnlyContentValueNode = flattenTextOnlyContentValueNode;
4
+ const utils_1 = require("../utils");
5
+ function flattenTextOnlyContentValueNode(node) {
6
+ if (node.value && node.value.children.length === 1 && (0, utils_1.hasChildren)(node.value.children[0])) {
7
+ return {
8
+ prn: node.prn,
9
+ type: "contentValue",
10
+ value: {
11
+ ...node.value,
12
+ children: (0, utils_1.isBlockContent)(node.value.children[0]) ? node.value.children[0].children : [],
13
+ },
14
+ };
15
+ }
16
+ return {
17
+ prn: node.prn,
18
+ type: "contentValue",
19
+ value: node.value,
20
+ };
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/transformers/index.ts"],"names":[],"mappings":";;AAOA,0EAiBC;AAvBD,oCAAuD;AAMvD,SAAgB,+BAA+B,CAAC,IAA8B;IAC5E,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAA,mBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE;gBACL,GAAG,IAAI,CAAC,KAAK;gBACb,QAAQ,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;aACxF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { BlockContent, Content } from "@platecms/delta-cast";
2
+ export declare function hasChildren(node?: Content): boolean;
3
+ export declare function isBlockContent(node?: Content): node is BlockContent;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasChildren = hasChildren;
4
+ exports.isBlockContent = isBlockContent;
5
+ function hasChildren(node) {
6
+ if (!node)
7
+ return false;
8
+ return "children" in node;
9
+ }
10
+ function isBlockContent(node) {
11
+ return (node?.type === "paragraph" ||
12
+ node?.type === "heading" ||
13
+ node?.type === "list" ||
14
+ node?.type === "blockquote" ||
15
+ node?.type === "code");
16
+ }
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-to-hast/src/lib/utils/index.ts"],"names":[],"mappings":";;AAEA,kCAIC;AAED,wCAQC;AAdD,SAAgB,WAAW,CAAC,IAAc;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,OAAO,UAAU,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,SAAgB,cAAc,CAAC,IAAc;IAC3C,OAAO,CACL,IAAI,EAAE,IAAI,KAAK,WAAW;QAC1B,IAAI,EAAE,IAAI,KAAK,SAAS;QACxB,IAAI,EAAE,IAAI,KAAK,MAAM;QACrB,IAAI,EAAE,IAAI,KAAK,YAAY;QAC3B,IAAI,EAAE,IAAI,KAAK,MAAM,CACtB,CAAC;AACJ,CAAC"}