@platecms/delta-cast-util-from-slate 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.
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # cast-util-from-slate
2
+
3
+ This library is part of the [CAST]() abstract syntax tree utilities.
4
+ It provides a utility to convert a [Slate](https://docs.slatejs.org/) editor document to a [CAST]() abstract syntax tree.
5
+
6
+ ## Usage
7
+
8
+ Using the utility `cast` from `slate` looks as follows:
9
+ ```ts
10
+ import {fromSlate} from '@platecms/delta-cast-util-from-slate'
11
+
12
+ const slate = [
13
+ {
14
+ type: 'paragraph',
15
+ children: [
16
+ { text: 'Hello, world!' }
17
+ ]
18
+ }
19
+ ]
20
+
21
+ console.info(fromSlate(slate))
22
+ ```
23
+
24
+ yields:
25
+ ```json
26
+ {
27
+ "type": "root",
28
+ "children": [
29
+ {
30
+ "type": "paragraph",
31
+ "children": [
32
+ {
33
+ "type": "text",
34
+ "value": "Hello, world!"
35
+ }
36
+ ]
37
+ }
38
+ ]
39
+ }
40
+ ```
41
+
42
+ ## Building
43
+
44
+ Run `nx build cast-util-from-slate` to build the library.
45
+
46
+ ## Running unit tests
47
+
48
+ Run `nx test cast-util-from-slate` to execute the unit tests via [Vitest](https://vitest.dev/).
49
+
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@platecms/delta-cast-util-from-slate",
3
+ "version": "0.1.0",
4
+ "description": "Utility to convert slate nodes to a CAST 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-from-slate",
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-castscript": "1.0.3",
22
+ "@platecms/delta-client": "1.1.0",
23
+ "@platecms/delta-plate-resource-notation": "1.4.1",
24
+ "@graphql-typed-document-node/core": "3.2.0",
25
+ "class-transformer": "0.5.1",
26
+ "graphql": "16.10.0",
27
+ "lodash": "4.17.21",
28
+ "reflect-metadata": "0.2.2",
29
+ "slate": "0.112.0",
30
+ "slate-react": "0.112.1",
31
+ "tslib": "2.8.1",
32
+ "zwitch": "2.0.4",
33
+ "@apollo/client": "3.13.1",
34
+ "defu": "^6.1.4"
35
+ },
36
+ "type": "commonjs"
37
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { fromSlate } from "./lib/index";
2
+ export { fromSlate };
package/src/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromSlate = void 0;
4
+ const index_1 = require("./lib/index");
5
+ Object.defineProperty(exports, "fromSlate", { enumerable: true, get: function () { return index_1.fromSlate; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/cast-util-from-slate/src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AAE/B,0FAFA,iBAAS,OAEA"}
@@ -0,0 +1,3 @@
1
+ import { Root } from "@platecms/delta-cast";
2
+ import { Descendant } from "slate";
3
+ export declare function fromSlate(value: Descendant[]): Root;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromSlate = fromSlate;
4
+ const wrapNode_1 = require("./utils/wrapNode");
5
+ const zwitch_1 = require("zwitch");
6
+ function fromSlate(value) {
7
+ return {
8
+ type: "root",
9
+ children: all(value, {}),
10
+ };
11
+ }
12
+ const handleNode = (0, zwitch_1.zwitch)("type", { handlers: { paragraph, heading, list, listItem, blockquote, code, contentValue } });
13
+ function all(nodes, state = {}) {
14
+ let index = -1;
15
+ const results = [];
16
+ while (++index < nodes.length) {
17
+ const result = one(nodes[index], state);
18
+ results.push(result);
19
+ }
20
+ return results;
21
+ }
22
+ function one(node, state = {}) {
23
+ let result;
24
+ if ("text" in node) {
25
+ result = (0, wrapNode_1.wrapNode)(node);
26
+ return result;
27
+ }
28
+ result = handleNode(node, state);
29
+ return result;
30
+ }
31
+ function paragraph(node, state = {}) {
32
+ return {
33
+ type: "paragraph",
34
+ children: all(node.children, state),
35
+ };
36
+ }
37
+ function heading(node, state = {}) {
38
+ return {
39
+ type: "heading",
40
+ level: node.level,
41
+ children: all(node.children, state),
42
+ };
43
+ }
44
+ function list(node, state = {}) {
45
+ return {
46
+ type: "list",
47
+ ordered: node.ordered,
48
+ children: all(node.children, state),
49
+ };
50
+ }
51
+ function listItem(node, state = {}) {
52
+ return {
53
+ type: "listItem",
54
+ children: all(node.children, state),
55
+ };
56
+ }
57
+ function blockquote(node, state = {}) {
58
+ return {
59
+ type: "blockquote",
60
+ children: all(node.children, state),
61
+ };
62
+ }
63
+ function code(node, state = {}) {
64
+ return {
65
+ type: "code",
66
+ children: all(node.children, state),
67
+ };
68
+ }
69
+ function contentValue(node) {
70
+ const firstChild = node.children[0];
71
+ if ("text" in firstChild) {
72
+ return (0, wrapNode_1.wrapNode)({
73
+ ...firstChild,
74
+ text: "",
75
+ }, {
76
+ prn: node.prn,
77
+ type: "contentValue",
78
+ value: node.root,
79
+ });
80
+ }
81
+ return {
82
+ type: "contentValue",
83
+ prn: node.prn,
84
+ value: node.root,
85
+ };
86
+ }
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/cast-util-from-slate/src/lib/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { DeltaLeaf } from "@platecms/delta-client/slate";
2
+ import { InlineContent } from "@platecms/delta-cast";
3
+ export declare function wrapNode(node: DeltaLeaf, enrich?: object): InlineContent;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapNode = wrapNode;
4
+ const lodash_1 = require("lodash");
5
+ function wrapNode(node, enrich) {
6
+ const wrapIn = (0, lodash_1.keys)(node).filter((key) => key !== "text");
7
+ return (0, lodash_1.reduce)(wrapIn, (acc, key) => ({
8
+ type: key,
9
+ children: [acc],
10
+ }), {
11
+ type: "text",
12
+ value: node.text,
13
+ ...enrich,
14
+ });
15
+ }
16
+ //# sourceMappingURL=wrapNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapNode.js","sourceRoot":"","sources":["../../../../../../../packages/cast-util-from-slate/src/lib/utils/wrapNode.ts"],"names":[],"mappings":";;AAYA,4BAmBC;AA/BD,mCAAsC;AAYtC,SAAgB,QAAQ,CAAC,IAAe,EAAE,MAAe;IACvD,MAAM,MAAM,GAAsC,IAAA,aAAI,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAGvF,CAAC;IAEL,OAAO,IAAA,eAAM,EACX,MAAM,EACN,CAAC,GAAkB,EAAE,GAAG,EAAE,EAAE,CAC1B,CAAC;QACC,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,CAAC,GAAG,CAAC;KAChB,CAA6B,EAChC;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,GAAG,MAAM;KACV,CACF,CAAC;AACJ,CAAC"}