@valbuild/shared 0.49.0 → 0.51.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 +1 -1
- package/dist/declarations/src/internal/IValStore.d.ts +5 -0
- package/dist/declarations/src/internal/index.d.ts +1 -0
- package/dist/declarations/src/internal/richtext/conversion/index.d.ts +3 -2
- package/dist/declarations/src/internal/richtext/conversion/remirrorToRichTextSource.d.ts +5 -0
- package/dist/declarations/src/internal/richtext/conversion/remirrorTypes.d.ts +1889 -0
- package/dist/declarations/src/internal/richtext/conversion/richTextToRemirror.d.ts +3 -0
- package/dist/declarations/src/internal/server/types.d.ts +1 -1
- package/internal/dist/valbuild-shared-internal.cjs.dev.js +531 -350
- package/internal/dist/valbuild-shared-internal.cjs.prod.js +531 -350
- package/internal/dist/valbuild-shared-internal.esm.js +519 -345
- package/package.json +4 -4
- package/dist/declarations/src/internal/richtext/conversion/lexicalToRichTextSource.d.ts +0 -12
- package/dist/declarations/src/internal/richtext/conversion/richTextSourceToLexical.d.ts +0 -68
@@ -1,79 +1,25 @@
|
|
1
1
|
import { VAL_EXTENSION, Internal, FILE_REF_PROP } from '@valbuild/core';
|
2
2
|
import * as marked from 'marked';
|
3
|
+
import { z } from 'zod';
|
3
4
|
|
4
|
-
function
|
5
|
-
if (
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
if (null != t) {
|
11
|
-
var e,
|
12
|
-
n,
|
13
|
-
i,
|
14
|
-
u,
|
15
|
-
a = [],
|
16
|
-
f = !0,
|
17
|
-
o = !1;
|
18
|
-
try {
|
19
|
-
if (i = (t = t.call(r)).next, 0 === l) {
|
20
|
-
if (Object(t) !== t) return;
|
21
|
-
f = !1;
|
22
|
-
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
23
|
-
} catch (r) {
|
24
|
-
o = !0, n = r;
|
25
|
-
} finally {
|
26
|
-
try {
|
27
|
-
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
28
|
-
} finally {
|
29
|
-
if (o) throw n;
|
30
|
-
}
|
31
|
-
}
|
32
|
-
return a;
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
function _arrayLikeToArray(arr, len) {
|
37
|
-
if (len == null || len > arr.length) len = arr.length;
|
38
|
-
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
39
|
-
return arr2;
|
40
|
-
}
|
41
|
-
|
42
|
-
function _unsupportedIterableToArray(o, minLen) {
|
43
|
-
if (!o) return;
|
44
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
45
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
46
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
47
|
-
if (n === "Map" || n === "Set") return Array.from(o);
|
48
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
49
|
-
}
|
50
|
-
|
51
|
-
function _nonIterableRest() {
|
52
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
53
|
-
}
|
54
|
-
|
55
|
-
function _slicedToArray(arr, i) {
|
56
|
-
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
57
|
-
}
|
58
|
-
|
59
|
-
function _toPrimitive(input, hint) {
|
60
|
-
if (typeof input !== "object" || input === null) return input;
|
61
|
-
var prim = input[Symbol.toPrimitive];
|
62
|
-
if (prim !== undefined) {
|
63
|
-
var res = prim.call(input, hint || "default");
|
64
|
-
if (typeof res !== "object") return res;
|
5
|
+
function toPrimitive(t, r) {
|
6
|
+
if ("object" != typeof t || !t) return t;
|
7
|
+
var e = t[Symbol.toPrimitive];
|
8
|
+
if (void 0 !== e) {
|
9
|
+
var i = e.call(t, r || "default");
|
10
|
+
if ("object" != typeof i) return i;
|
65
11
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
66
12
|
}
|
67
|
-
return (
|
13
|
+
return ("string" === r ? String : Number)(t);
|
68
14
|
}
|
69
15
|
|
70
|
-
function
|
71
|
-
var
|
72
|
-
return
|
16
|
+
function toPropertyKey(t) {
|
17
|
+
var i = toPrimitive(t, "string");
|
18
|
+
return "symbol" == typeof i ? i : String(i);
|
73
19
|
}
|
74
20
|
|
75
21
|
function _defineProperty(obj, key, value) {
|
76
|
-
key =
|
22
|
+
key = toPropertyKey(key);
|
77
23
|
if (key in obj) {
|
78
24
|
Object.defineProperty(obj, key, {
|
79
25
|
value: value,
|
@@ -87,6 +33,21 @@ function _defineProperty(obj, key, value) {
|
|
87
33
|
return obj;
|
88
34
|
}
|
89
35
|
|
36
|
+
function _arrayLikeToArray(arr, len) {
|
37
|
+
if (len == null || len > arr.length) len = arr.length;
|
38
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
39
|
+
return arr2;
|
40
|
+
}
|
41
|
+
|
42
|
+
function _unsupportedIterableToArray(o, minLen) {
|
43
|
+
if (!o) return;
|
44
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
45
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
46
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
47
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
48
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
49
|
+
}
|
50
|
+
|
90
51
|
function _createForOfIteratorHelper(o, allowArrayLike) {
|
91
52
|
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
92
53
|
if (!it) {
|
@@ -155,6 +116,46 @@ function _toConsumableArray(arr) {
|
|
155
116
|
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
156
117
|
}
|
157
118
|
|
119
|
+
function _arrayWithHoles(arr) {
|
120
|
+
if (Array.isArray(arr)) return arr;
|
121
|
+
}
|
122
|
+
|
123
|
+
function _iterableToArrayLimit(r, l) {
|
124
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
125
|
+
if (null != t) {
|
126
|
+
var e,
|
127
|
+
n,
|
128
|
+
i,
|
129
|
+
u,
|
130
|
+
a = [],
|
131
|
+
f = !0,
|
132
|
+
o = !1;
|
133
|
+
try {
|
134
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
135
|
+
if (Object(t) !== t) return;
|
136
|
+
f = !1;
|
137
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
138
|
+
} catch (r) {
|
139
|
+
o = !0, n = r;
|
140
|
+
} finally {
|
141
|
+
try {
|
142
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
143
|
+
} finally {
|
144
|
+
if (o) throw n;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
return a;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
function _nonIterableRest() {
|
152
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
153
|
+
}
|
154
|
+
|
155
|
+
function _slicedToArray(arr, i) {
|
156
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
157
|
+
}
|
158
|
+
|
158
159
|
var EXT_TO_MIME_TYPES = {
|
159
160
|
x3d: "application/vnd.hzn-3d-crossword",
|
160
161
|
"3gp": "video/3gpp",
|
@@ -877,16 +878,18 @@ function filenameToMimeType(filename) {
|
|
877
878
|
}
|
878
879
|
}
|
879
880
|
|
880
|
-
|
881
|
-
|
882
|
-
var markdownIRBlocks = node.
|
883
|
-
|
881
|
+
function remirrorToRichTextSource(node) {
|
882
|
+
var files = {};
|
883
|
+
var markdownIRBlocks = node.content.map(function (child) {
|
884
|
+
return createBlock(child, files);
|
885
|
+
});
|
886
|
+
return fromIRToRichTextSource(markdownIRBlocks, files);
|
884
887
|
}
|
885
|
-
function createBlock(node) {
|
888
|
+
function createBlock(node, files) {
|
886
889
|
if (node.type === "heading") {
|
887
|
-
var _node$
|
890
|
+
var _node$attrs, _node$content;
|
888
891
|
var headingTag = "";
|
889
|
-
var depth =
|
892
|
+
var depth = ((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.level) || 1;
|
890
893
|
if (Number.isNaN(depth)) {
|
891
894
|
throw new Error("Invalid header depth");
|
892
895
|
}
|
@@ -896,10 +899,13 @@ function createBlock(node) {
|
|
896
899
|
var headingText = ["".concat(headingTag, " ")];
|
897
900
|
return {
|
898
901
|
type: "block",
|
899
|
-
children: headingText.concat.apply(headingText, _toConsumableArray(node.
|
902
|
+
children: headingText.concat.apply(headingText, _toConsumableArray(((_node$content = node.content) === null || _node$content === void 0 ? void 0 : _node$content.map(function (child) {
|
903
|
+
return transformLeafNode(child, files);
|
904
|
+
})) || []))
|
900
905
|
};
|
901
906
|
} else if (node.type === "paragraph") {
|
902
|
-
|
907
|
+
var _node$content2;
|
908
|
+
if (!node.content || ((_node$content2 = node.content) === null || _node$content2 === void 0 ? void 0 : _node$content2.length) === 0) {
|
903
909
|
return {
|
904
910
|
type: "block",
|
905
911
|
children: ["<br />"]
|
@@ -907,26 +913,26 @@ function createBlock(node) {
|
|
907
913
|
}
|
908
914
|
return {
|
909
915
|
type: "block",
|
910
|
-
children: node.
|
911
|
-
return transformLeafNode(child);
|
916
|
+
children: node.content.map(function (child) {
|
917
|
+
return transformLeafNode(child, files);
|
912
918
|
})
|
913
919
|
};
|
914
|
-
} else if (node.type === "
|
920
|
+
} else if (node.type === "bulletList" || node.type === "orderedList") {
|
921
|
+
var _node$content3;
|
915
922
|
return {
|
916
923
|
type: "block",
|
917
|
-
children: node.
|
918
|
-
return formatListItemNode(getListPrefix(node), child, 0, i === 0);
|
919
|
-
})
|
924
|
+
children: ((_node$content3 = node.content) === null || _node$content3 === void 0 ? void 0 : _node$content3.flatMap(function (child, i) {
|
925
|
+
return formatListItemNode(getListPrefix(node), child, 0, files, i === 0);
|
926
|
+
})) || []
|
920
927
|
};
|
921
928
|
} else {
|
922
929
|
var exhaustiveCheck = node;
|
923
930
|
throw new Error("Unhandled node type: ".concat("type" in exhaustiveCheck ? "exhaustiveCheck.type" : "unknown"));
|
924
931
|
}
|
925
932
|
}
|
926
|
-
function fromIRToRichTextSource(markdownIRBlocks) {
|
933
|
+
function fromIRToRichTextSource(markdownIRBlocks, files) {
|
927
934
|
var templateStrings = ["\n"];
|
928
935
|
var exprs = [];
|
929
|
-
var files = {};
|
930
936
|
for (var blockIdx = 0; blockIdx < markdownIRBlocks.length; blockIdx++) {
|
931
937
|
var block = markdownIRBlocks[blockIdx];
|
932
938
|
var _iterator = _createForOfIteratorHelper(block.children),
|
@@ -937,10 +943,10 @@ function fromIRToRichTextSource(markdownIRBlocks) {
|
|
937
943
|
if (typeof child === "string") {
|
938
944
|
templateStrings[templateStrings.length - 1] += child;
|
939
945
|
} else {
|
940
|
-
if (child.
|
941
|
-
exprs.push(
|
942
|
-
} else if (child.
|
943
|
-
exprs.push(
|
946
|
+
if (child._type === "file") {
|
947
|
+
exprs.push(child);
|
948
|
+
} else if (child._type === "link") {
|
949
|
+
exprs.push(child);
|
944
950
|
} else {
|
945
951
|
var exhaustiveCheck = child;
|
946
952
|
throw new Error("Unexpected node type: ".concat(JSON.stringify(exhaustiveCheck, null, 2)));
|
@@ -962,7 +968,17 @@ function fromIRToRichTextSource(markdownIRBlocks) {
|
|
962
968
|
return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, VAL_EXTENSION, "richtext"), "templateStrings", templateStrings), "exprs", exprs), "files", files);
|
963
969
|
}
|
964
970
|
function formatText(node) {
|
965
|
-
var
|
971
|
+
var _node$marks;
|
972
|
+
var classes = ((_node$marks = node.marks) === null || _node$marks === void 0 ? void 0 : _node$marks.flatMap(function (mark) {
|
973
|
+
if (mark.type === "bold") {
|
974
|
+
return ["bold"];
|
975
|
+
} else if (mark.type === "italic") {
|
976
|
+
return ["italic"];
|
977
|
+
} else if (mark.type === "strike") {
|
978
|
+
return ["line-through"];
|
979
|
+
}
|
980
|
+
return [];
|
981
|
+
})) || [];
|
966
982
|
var text = node.text.trimStart();
|
967
983
|
var prefixWS = node.text.length - text.length;
|
968
984
|
text = text.trimEnd();
|
@@ -981,87 +997,94 @@ function formatText(node) {
|
|
981
997
|
// text = splitIntoChunks(text);
|
982
998
|
return "".concat(" ".repeat(prefixWS)).concat(text).concat(" ".repeat(suffixWS));
|
983
999
|
}
|
984
|
-
function transformLeafNode(node) {
|
1000
|
+
function transformLeafNode(node, files) {
|
985
1001
|
if (node.type === "text") {
|
1002
|
+
var _node$marks2;
|
1003
|
+
var linkMark = (_node$marks2 = node.marks) === null || _node$marks2 === void 0 ? void 0 : _node$marks2.find(function (mark) {
|
1004
|
+
return mark.type === "link";
|
1005
|
+
});
|
1006
|
+
if ((linkMark === null || linkMark === void 0 ? void 0 : linkMark.type) === "link") {
|
1007
|
+
return {
|
1008
|
+
_type: "link",
|
1009
|
+
href: linkMark.attrs.href,
|
1010
|
+
children: [formatText(node)]
|
1011
|
+
};
|
1012
|
+
}
|
986
1013
|
return formatText(node);
|
987
|
-
} else if (node.type === "
|
988
|
-
return "
|
1014
|
+
} else if (node.type === "hardBreak") {
|
1015
|
+
return "<br />";
|
1016
|
+
} else if (node.type === "image") {
|
1017
|
+
return fromRemirrorImageNode(node, files);
|
989
1018
|
} else {
|
990
|
-
|
1019
|
+
var exhaustiveCheck = node;
|
1020
|
+
throw new Error("Unexpected node type: ".concat(JSON.stringify(exhaustiveCheck)));
|
991
1021
|
}
|
992
1022
|
}
|
993
|
-
function formatListItemNode(listPrefix, node, indent) {
|
994
|
-
var _node$
|
995
|
-
var isFirstTopLevelListItem = arguments.length >
|
1023
|
+
function formatListItemNode(listPrefix, node, indent, files) {
|
1024
|
+
var _node$content4, _node$content5;
|
1025
|
+
var isFirstTopLevelListItem = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
996
1026
|
var newLine = isFirstTopLevelListItem ? "" : "\n";
|
997
1027
|
var prefix = ["".concat(newLine).concat(" ".repeat(indent)).concat(listPrefix)];
|
998
|
-
if (((_node$
|
1028
|
+
if (!(((_node$content4 = node.content) === null || _node$content4 === void 0 || (_node$content4 = _node$content4[0]) === null || _node$content4 === void 0 ? void 0 : _node$content4.type) === "bulletList" || ((_node$content5 = node.content) === null || _node$content5 === void 0 || (_node$content5 = _node$content5[0]) === null || _node$content5 === void 0 ? void 0 : _node$content5.type) === "orderedList")) {
|
999
1029
|
prefix.push(" ");
|
1000
1030
|
}
|
1001
|
-
return prefix.concat(node.
|
1002
|
-
if (child.type === "
|
1003
|
-
return child.
|
1004
|
-
return formatListItemNode(getListPrefix(child), subChild, indent + 4);
|
1031
|
+
return prefix.concat((node.content || []).flatMap(function (child, i) {
|
1032
|
+
if (child.type === "bulletList" || child.type === "orderedList") {
|
1033
|
+
return (child.content || []).flatMap(function (subChild) {
|
1034
|
+
return formatListItemNode(getListPrefix(child), subChild, indent + 4, files);
|
1005
1035
|
});
|
1006
1036
|
} else {
|
1007
|
-
return
|
1037
|
+
return (child.content || []).flatMap(function (subChild) {
|
1038
|
+
var _child$content, _child$content2;
|
1039
|
+
var res = [];
|
1040
|
+
if ((_child$content = child.content) !== null && _child$content !== void 0 && _child$content.length && ((_child$content2 = child.content) === null || _child$content2 === void 0 ? void 0 : _child$content2.length) > 0 && i > 0) {
|
1041
|
+
res.push("<br />\n");
|
1042
|
+
}
|
1043
|
+
res.push(transformLeafNode(subChild, files));
|
1044
|
+
return res;
|
1045
|
+
});
|
1008
1046
|
}
|
1009
1047
|
}));
|
1010
1048
|
}
|
1011
1049
|
function getListPrefix(node) {
|
1012
|
-
if (node.
|
1050
|
+
if (node.type === "bulletList") {
|
1013
1051
|
return "-";
|
1014
|
-
} else if (node.
|
1052
|
+
} else if (node.type === "orderedList") {
|
1015
1053
|
return "1.";
|
1016
1054
|
} else {
|
1017
|
-
|
1055
|
+
var exhaustiveCheck = node;
|
1056
|
+
throw new Error("Unhandled list node: ".concat(JSON.stringify(exhaustiveCheck)));
|
1018
1057
|
}
|
1019
1058
|
}
|
1020
|
-
var FORMAT_MAPPING$1 = {
|
1021
|
-
bold: 1,
|
1022
|
-
// 0001
|
1023
|
-
italic: 2,
|
1024
|
-
// 0010
|
1025
|
-
"line-through": 4 // 0100
|
1026
|
-
// underline: 8, // 1000
|
1027
|
-
};
|
1028
|
-
|
1029
|
-
function fromLexicalFormat(format) {
|
1030
|
-
return Object.entries(FORMAT_MAPPING$1).flatMap(function (_ref2) {
|
1031
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
1032
|
-
key = _ref3[0],
|
1033
|
-
value = _ref3[1];
|
1034
|
-
if ((value & /* bitwise and */format) === value) {
|
1035
|
-
return [key];
|
1036
|
-
}
|
1037
|
-
return [];
|
1038
|
-
});
|
1039
|
-
}
|
1040
1059
|
var textEncoder = new TextEncoder();
|
1041
|
-
function
|
1042
|
-
if (node.src.startsWith("data:")) {
|
1043
|
-
var sha256 = Internal.getSHA256Hash(textEncoder.encode(node.src));
|
1044
|
-
var mimeType = getMimeType(node.src);
|
1060
|
+
function fromRemirrorImageNode(node, files) {
|
1061
|
+
if (node.attrs && node.attrs.src.startsWith("data:")) {
|
1062
|
+
var sha256 = Internal.getSHA256Hash(textEncoder.encode(node.attrs.src));
|
1063
|
+
var mimeType = getMimeType(node.attrs.src);
|
1045
1064
|
if (mimeType === undefined) {
|
1046
|
-
throw new Error("Could not detect Mime Type for image: ".concat(node.src));
|
1065
|
+
throw new Error("Could not detect Mime Type for image: ".concat(node.attrs.src));
|
1047
1066
|
}
|
1048
1067
|
var fileExt = mimeTypeToFileExt(mimeType);
|
1049
|
-
var
|
1050
|
-
|
1068
|
+
var fileName = node.attrs.fileName || "".concat(sha256, ".").concat(fileExt);
|
1069
|
+
var filePath = "/public/".concat(fileName);
|
1070
|
+
files[filePath] = node.attrs.src;
|
1051
1071
|
return _defineProperty(_defineProperty(_defineProperty({}, VAL_EXTENSION, "file"), FILE_REF_PROP, filePath), "metadata", {
|
1052
|
-
width: node.width
|
1053
|
-
height: node.height
|
1072
|
+
width: typeof node.attrs.width === "number" ? node.attrs.width : 0,
|
1073
|
+
height: typeof node.attrs.height === "number" ? node.attrs.height : 0,
|
1054
1074
|
sha256: sha256 || "",
|
1055
1075
|
mimeType: mimeType
|
1056
1076
|
});
|
1057
|
-
} else {
|
1058
|
-
var _sha = getParam("sha256", node.src);
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1077
|
+
} else if (node.attrs) {
|
1078
|
+
var _sha = getParam("sha256", node.attrs.src);
|
1079
|
+
var noParamsSrc = node.attrs.src.split("?")[0];
|
1080
|
+
return _defineProperty(_defineProperty(_defineProperty({}, VAL_EXTENSION, "file"), FILE_REF_PROP, "/public".concat(node.attrs.src.split("?")[0])), "metadata", {
|
1081
|
+
width: typeof node.attrs.width === "number" ? node.attrs.width : 0,
|
1082
|
+
height: typeof node.attrs.height === "number" ? node.attrs.height : 0,
|
1062
1083
|
sha256: _sha || "",
|
1063
|
-
mimeType:
|
1084
|
+
mimeType: noParamsSrc && filenameToMimeType(noParamsSrc) || ""
|
1064
1085
|
});
|
1086
|
+
} else {
|
1087
|
+
throw new Error("Invalid image node (no attrs): " + JSON.stringify(node));
|
1065
1088
|
}
|
1066
1089
|
}
|
1067
1090
|
function getParam(param, url) {
|
@@ -1076,196 +1099,6 @@ function getParam(param, url) {
|
|
1076
1099
|
}
|
1077
1100
|
return undefined;
|
1078
1101
|
}
|
1079
|
-
function fromLexicalLinkNode(node) {
|
1080
|
-
return _defineProperty(_defineProperty(_defineProperty({}, VAL_EXTENSION, "link"), "href", node.url), "children", node.children.map(formatText));
|
1081
|
-
}
|
1082
|
-
|
1083
|
-
function ownKeys(e, r) {
|
1084
|
-
var t = Object.keys(e);
|
1085
|
-
if (Object.getOwnPropertySymbols) {
|
1086
|
-
var o = Object.getOwnPropertySymbols(e);
|
1087
|
-
r && (o = o.filter(function (r) {
|
1088
|
-
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
1089
|
-
})), t.push.apply(t, o);
|
1090
|
-
}
|
1091
|
-
return t;
|
1092
|
-
}
|
1093
|
-
function _objectSpread2(e) {
|
1094
|
-
for (var r = 1; r < arguments.length; r++) {
|
1095
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
1096
|
-
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
1097
|
-
_defineProperty(e, r, t[r]);
|
1098
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
1099
|
-
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
1100
|
-
});
|
1101
|
-
}
|
1102
|
-
return e;
|
1103
|
-
}
|
1104
|
-
|
1105
|
-
/// Serialized Lexical Nodes:
|
1106
|
-
// TODO: replace with Lexical libs types - not currently exported?
|
1107
|
-
var COMMON_LEXICAL_PROPS = {
|
1108
|
-
version: 1,
|
1109
|
-
format: "",
|
1110
|
-
indent: 0,
|
1111
|
-
direction: null
|
1112
|
-
};
|
1113
|
-
function toLexicalNode(node) {
|
1114
|
-
var useBreakNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
1115
|
-
if (typeof node === "string") {
|
1116
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1117
|
-
type: "text",
|
1118
|
-
format: "",
|
1119
|
-
text: node
|
1120
|
-
});
|
1121
|
-
}
|
1122
|
-
if ("tag" in node) {
|
1123
|
-
switch (node.tag) {
|
1124
|
-
case "h1":
|
1125
|
-
return toLexicalHeadingNode(node);
|
1126
|
-
case "h2":
|
1127
|
-
return toLexicalHeadingNode(node);
|
1128
|
-
case "h3":
|
1129
|
-
return toLexicalHeadingNode(node);
|
1130
|
-
case "h4":
|
1131
|
-
return toLexicalHeadingNode(node);
|
1132
|
-
case "h5":
|
1133
|
-
return toLexicalHeadingNode(node);
|
1134
|
-
case "h6":
|
1135
|
-
return toLexicalHeadingNode(node);
|
1136
|
-
case "li":
|
1137
|
-
return toLexicalListItemNode(node);
|
1138
|
-
case "p":
|
1139
|
-
return toLexicalParagraphNode(node);
|
1140
|
-
case "ul":
|
1141
|
-
return toLexicalListNode(node);
|
1142
|
-
case "ol":
|
1143
|
-
return toLexicalListNode(node);
|
1144
|
-
case "span":
|
1145
|
-
return toLexicalTextNode(node);
|
1146
|
-
case "a":
|
1147
|
-
return toLexicalLinkNode(node);
|
1148
|
-
case "img":
|
1149
|
-
return toLexicalImageNode(node);
|
1150
|
-
case "br":
|
1151
|
-
if (useBreakNode) {
|
1152
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1153
|
-
type: "linebreak"
|
1154
|
-
});
|
1155
|
-
}
|
1156
|
-
return toLexicalPseudoLineBreakNode();
|
1157
|
-
default:
|
1158
|
-
throw Error("Unexpected node tag: " + JSON.stringify(node, null, 2));
|
1159
|
-
}
|
1160
|
-
} else {
|
1161
|
-
throw Error("Unexpected node: " + JSON.stringify(node, null, 2));
|
1162
|
-
}
|
1163
|
-
}
|
1164
|
-
function toLexicalImageNode(node) {
|
1165
|
-
var url = node.src;
|
1166
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1167
|
-
type: "image",
|
1168
|
-
src: url,
|
1169
|
-
width: node.width,
|
1170
|
-
height: node.height,
|
1171
|
-
mimeType: node.mimeType
|
1172
|
-
// TODO: altText
|
1173
|
-
});
|
1174
|
-
}
|
1175
|
-
|
1176
|
-
function toLexicalLinkNode(link) {
|
1177
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1178
|
-
type: "link",
|
1179
|
-
url: link.href,
|
1180
|
-
children: link.children.map(function (child) {
|
1181
|
-
return toLexicalNode(child);
|
1182
|
-
})
|
1183
|
-
});
|
1184
|
-
}
|
1185
|
-
function richTextSourceToLexical(richtext) {
|
1186
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1187
|
-
format: "",
|
1188
|
-
type: "root",
|
1189
|
-
children: richtext.children.map(function (child) {
|
1190
|
-
return toLexicalNode(child);
|
1191
|
-
})
|
1192
|
-
});
|
1193
|
-
}
|
1194
|
-
function toLexicalHeadingNode(heading) {
|
1195
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1196
|
-
type: "heading",
|
1197
|
-
tag: heading.tag,
|
1198
|
-
children: heading.children.map(function (child) {
|
1199
|
-
return toLexicalNode(child);
|
1200
|
-
})
|
1201
|
-
});
|
1202
|
-
}
|
1203
|
-
function toLexicalParagraphNode(paragraph) {
|
1204
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1205
|
-
type: "paragraph",
|
1206
|
-
children: paragraph.children.map(function (child) {
|
1207
|
-
return toLexicalNode(child, true);
|
1208
|
-
})
|
1209
|
-
});
|
1210
|
-
}
|
1211
|
-
|
1212
|
-
// Lexical does not support line breaks, so we convert them to empty paragraphs
|
1213
|
-
function toLexicalPseudoLineBreakNode() {
|
1214
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1215
|
-
type: "paragraph",
|
1216
|
-
children: []
|
1217
|
-
});
|
1218
|
-
}
|
1219
|
-
function toLexicalListItemNode(listItem) {
|
1220
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1221
|
-
type: "listitem",
|
1222
|
-
children: listItem.children.map(function (child) {
|
1223
|
-
return toLexicalNode(child, true);
|
1224
|
-
})
|
1225
|
-
});
|
1226
|
-
}
|
1227
|
-
function toLexicalListNode(list) {
|
1228
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1229
|
-
type: "list",
|
1230
|
-
listType: list.tag === "ol" ? "number" : "bullet",
|
1231
|
-
children: list.children.map(function (child) {
|
1232
|
-
return toLexicalNode(child);
|
1233
|
-
})
|
1234
|
-
}, list.dir ? {
|
1235
|
-
direction: list.dir
|
1236
|
-
} : {
|
1237
|
-
direction: null
|
1238
|
-
});
|
1239
|
-
}
|
1240
|
-
var FORMAT_MAPPING = {
|
1241
|
-
bold: 1,
|
1242
|
-
// 0001
|
1243
|
-
italic: 2,
|
1244
|
-
// 0010
|
1245
|
-
"line-through": 4 // 0100
|
1246
|
-
// underline: 8, // 1000
|
1247
|
-
};
|
1248
|
-
|
1249
|
-
function toLexicalFormat(classes) {
|
1250
|
-
return classes.reduce(function (prev, curr) {
|
1251
|
-
return prev | /* bitwise or */FORMAT_MAPPING[curr];
|
1252
|
-
}, 0);
|
1253
|
-
}
|
1254
|
-
function toLexicalTextNode(spanNode) {
|
1255
|
-
var child = spanNode.children[0];
|
1256
|
-
if (typeof child === "string") {
|
1257
|
-
return _objectSpread2(_objectSpread2({}, COMMON_LEXICAL_PROPS), {}, {
|
1258
|
-
type: "text",
|
1259
|
-
text: child,
|
1260
|
-
format: toLexicalFormat(spanNode.classes)
|
1261
|
-
});
|
1262
|
-
} else {
|
1263
|
-
// recurse the spans and merge their classes
|
1264
|
-
return toLexicalTextNode(_objectSpread2(_objectSpread2({}, child), {}, {
|
1265
|
-
classes: spanNode.classes.concat(child.classes)
|
1266
|
-
}));
|
1267
|
-
}
|
1268
|
-
}
|
1269
1102
|
|
1270
1103
|
var VAL_START_TAG_PREFIX = '<val value="';
|
1271
1104
|
var VAL_START_TAG_SUFFIX = '">';
|
@@ -1273,6 +1106,18 @@ var VAL_END_TAG = "</val>";
|
|
1273
1106
|
function parseTokens(tokens, sourceNodes, cursor) {
|
1274
1107
|
var insideList = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
1275
1108
|
var children = [];
|
1109
|
+
function merge(token, clazz) {
|
1110
|
+
var parsedTokens = parseTokens(token.tokens ? token.tokens : [], sourceNodes, 0);
|
1111
|
+
children.push({
|
1112
|
+
tag: "span",
|
1113
|
+
classes: [clazz].concat(parsedTokens.children.flatMap(function (child) {
|
1114
|
+
return typeof child === "string" ? [] : child.classes;
|
1115
|
+
})),
|
1116
|
+
children: parsedTokens.children.flatMap(function (child) {
|
1117
|
+
return typeof child === "string" ? child : child.children;
|
1118
|
+
})
|
1119
|
+
});
|
1120
|
+
}
|
1276
1121
|
var _loop = function _loop() {
|
1277
1122
|
var token = tokens[cursor];
|
1278
1123
|
if (token.type === "heading") {
|
@@ -1286,23 +1131,11 @@ function parseTokens(tokens, sourceNodes, cursor) {
|
|
1286
1131
|
children: parseTokens(token.tokens ? token.tokens : [], sourceNodes, 0).children
|
1287
1132
|
});
|
1288
1133
|
} else if (token.type === "strong") {
|
1289
|
-
|
1290
|
-
tag: "span",
|
1291
|
-
classes: ["bold"],
|
1292
|
-
children: parseTokens(token.tokens ? token.tokens : [], sourceNodes, 0).children
|
1293
|
-
});
|
1134
|
+
merge(token, "bold");
|
1294
1135
|
} else if (token.type === "em") {
|
1295
|
-
|
1296
|
-
tag: "span",
|
1297
|
-
classes: ["italic"],
|
1298
|
-
children: parseTokens(token.tokens ? token.tokens : [], sourceNodes, 0).children
|
1299
|
-
});
|
1136
|
+
merge(token, "italic");
|
1300
1137
|
} else if (token.type === "del") {
|
1301
|
-
|
1302
|
-
tag: "span",
|
1303
|
-
classes: ["line-through"],
|
1304
|
-
children: parseTokens(token.tokens ? token.tokens : [], sourceNodes, 0).children
|
1305
|
-
});
|
1138
|
+
merge(token, "line-through");
|
1306
1139
|
} else if (token.type === "text") {
|
1307
1140
|
if ("tokens" in token && Array.isArray(token.tokens)) {
|
1308
1141
|
children.push.apply(children, _toConsumableArray(parseTokens(token.tokens, sourceNodes, cursor, insideList).children));
|
@@ -1311,6 +1144,11 @@ function parseTokens(tokens, sourceNodes, cursor) {
|
|
1311
1144
|
var lines = token.raw.split("\n");
|
1312
1145
|
var tags = lines.flatMap(function (line, i) {
|
1313
1146
|
if (i === lines.length - 1) return [line];
|
1147
|
+
if (i === lines.length - 1 && line === "") return [];
|
1148
|
+
if (line === "") return {
|
1149
|
+
tag: "br",
|
1150
|
+
children: []
|
1151
|
+
};
|
1314
1152
|
return [line, {
|
1315
1153
|
tag: "br",
|
1316
1154
|
children: []
|
@@ -1380,10 +1218,16 @@ function parseTokens(tokens, sourceNodes, cursor) {
|
|
1380
1218
|
}
|
1381
1219
|
var br_html_regex = /<br\s*\/?>/gi; // matches <br>, <br/>, <br />; case insensitive
|
1382
1220
|
if (token.text.trim().match(br_html_regex)) {
|
1221
|
+
var _tokens;
|
1383
1222
|
children.push({
|
1384
1223
|
tag: "br",
|
1385
1224
|
children: []
|
1386
1225
|
});
|
1226
|
+
if (((_tokens = tokens[cursor + 1]) === null || _tokens === void 0 ? void 0 : _tokens.raw.trim()) === "") {
|
1227
|
+
// if next token is a new line or white-spaces, skip it
|
1228
|
+
// this typically means we have a <br> AND a new line, which, semantically, is just a <br>
|
1229
|
+
cursor++;
|
1230
|
+
}
|
1387
1231
|
}
|
1388
1232
|
} else if (token.type === "link") {
|
1389
1233
|
if (token.raw === token.href) {
|
@@ -1443,8 +1287,338 @@ function parseRichTextSource(_ref) {
|
|
1443
1287
|
return _defineProperty(_defineProperty({}, VAL_EXTENSION, "richtext"), "children", children);
|
1444
1288
|
}
|
1445
1289
|
|
1290
|
+
var RemirrorTextMark = z.object({
|
1291
|
+
type: z.union([z.literal("bold"), z.literal("strike"), z.literal("italic")])
|
1292
|
+
});
|
1293
|
+
var RemirrorLinkMark = z.object({
|
1294
|
+
type: z.literal("link"),
|
1295
|
+
attrs: z.object({
|
1296
|
+
href: z.string(),
|
1297
|
+
target: z.union([z.literal("_blank"), z["null"]()]),
|
1298
|
+
auto: z["boolean"]()
|
1299
|
+
})
|
1300
|
+
});
|
1301
|
+
var RemirrorText = z.intersection(z.object({
|
1302
|
+
type: z.literal("text"),
|
1303
|
+
text: z.string()
|
1304
|
+
}), z.object({
|
1305
|
+
marks: z.array(z.union([RemirrorTextMark, RemirrorLinkMark]))
|
1306
|
+
}).partial());
|
1307
|
+
var RemirrorBr = z.intersection(z.object({
|
1308
|
+
type: z.literal("hardBreak")
|
1309
|
+
}), z.object({
|
1310
|
+
marks: z.array(RemirrorTextMark)
|
1311
|
+
}).partial());
|
1312
|
+
var RemirrorImage = z.intersection(z.object({
|
1313
|
+
type: z.literal("image")
|
1314
|
+
}), z.object({
|
1315
|
+
attrs: z.intersection(z.object({
|
1316
|
+
src: z.string()
|
1317
|
+
}), z.object({
|
1318
|
+
align: z.union([z.literal("center"), z.literal("end"), z.literal("justify"), z.literal("left"), z.literal("match-parent"), z.literal("right"), z.literal("start"), z["null"]()]),
|
1319
|
+
alt: z.union([z.string(), z["null"]()]),
|
1320
|
+
height: z.union([z.string(), z.number(), z["null"]()]),
|
1321
|
+
width: z.union([z.string(), z.number(), z["null"]()]),
|
1322
|
+
rotate: z.union([z.string(), z["null"]()]),
|
1323
|
+
title: z.union([z.string(), z["null"]()]),
|
1324
|
+
fileName: z.union([z.string(), z["null"]()])
|
1325
|
+
}).partial())
|
1326
|
+
}).partial());
|
1327
|
+
var RemirrorHeading = z.intersection(z.object({
|
1328
|
+
type: z.literal("heading")
|
1329
|
+
}), z.object({
|
1330
|
+
attrs: z.object({
|
1331
|
+
level: z.number()
|
1332
|
+
}),
|
1333
|
+
content: z.array(z.union([RemirrorText, RemirrorBr]))
|
1334
|
+
}).partial());
|
1335
|
+
var RemirrorBulletList = z.lazy(function () {
|
1336
|
+
return z.intersection(z.object({
|
1337
|
+
type: z.literal("bulletList")
|
1338
|
+
}), z.object({
|
1339
|
+
content: z.array(RemirrorListItem)
|
1340
|
+
}).partial());
|
1341
|
+
});
|
1342
|
+
var RemirrorOrderedList = z.lazy(function () {
|
1343
|
+
return z.intersection(z.object({
|
1344
|
+
type: z.literal("orderedList")
|
1345
|
+
}), z.object({
|
1346
|
+
content: z.array(RemirrorListItem)
|
1347
|
+
}).partial());
|
1348
|
+
});
|
1349
|
+
var RemirrorListItem = z.lazy(function () {
|
1350
|
+
return z.intersection(z.object({
|
1351
|
+
type: z.literal("listItem")
|
1352
|
+
}), z.object({
|
1353
|
+
content: z.array(z.union([RemirrorParagraph, RemirrorBulletList, RemirrorOrderedList]))
|
1354
|
+
}).partial());
|
1355
|
+
});
|
1356
|
+
var RemirrorParagraph = z.intersection(z.object({
|
1357
|
+
type: z.literal("paragraph")
|
1358
|
+
}), z.object({
|
1359
|
+
content: z.array(z.union([RemirrorText, RemirrorImage, RemirrorBr]))
|
1360
|
+
}).partial());
|
1361
|
+
var RemirrorJSON = z.object({
|
1362
|
+
type: z.literal("doc"),
|
1363
|
+
content: z.array(z.union([RemirrorParagraph, RemirrorHeading, RemirrorBulletList, RemirrorOrderedList]))
|
1364
|
+
});
|
1365
|
+
|
1366
|
+
function ownKeys(e, r) {
|
1367
|
+
var t = Object.keys(e);
|
1368
|
+
if (Object.getOwnPropertySymbols) {
|
1369
|
+
var o = Object.getOwnPropertySymbols(e);
|
1370
|
+
r && (o = o.filter(function (r) {
|
1371
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
1372
|
+
})), t.push.apply(t, o);
|
1373
|
+
}
|
1374
|
+
return t;
|
1375
|
+
}
|
1376
|
+
function _objectSpread2(e) {
|
1377
|
+
for (var r = 1; r < arguments.length; r++) {
|
1378
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
1379
|
+
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
|
1380
|
+
_defineProperty(e, r, t[r]);
|
1381
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
1382
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
1383
|
+
});
|
1384
|
+
}
|
1385
|
+
return e;
|
1386
|
+
}
|
1387
|
+
|
1388
|
+
function richTextToRemirror(richtext) {
|
1389
|
+
return {
|
1390
|
+
type: "doc",
|
1391
|
+
content: richtext.children.map(function (child) {
|
1392
|
+
return toRemirrorNode(child);
|
1393
|
+
})
|
1394
|
+
};
|
1395
|
+
}
|
1396
|
+
function toRemirrorNode(child) {
|
1397
|
+
switch (child.tag) {
|
1398
|
+
case "h1":
|
1399
|
+
return convertHeadingToRemirror(1, child.children);
|
1400
|
+
case "h2":
|
1401
|
+
return convertHeadingToRemirror(2, child.children);
|
1402
|
+
case "h3":
|
1403
|
+
return convertHeadingToRemirror(3, child.children);
|
1404
|
+
case "h4":
|
1405
|
+
return convertHeadingToRemirror(4, child.children);
|
1406
|
+
case "h5":
|
1407
|
+
return convertHeadingToRemirror(5, child.children);
|
1408
|
+
case "h6":
|
1409
|
+
return convertHeadingToRemirror(6, child.children);
|
1410
|
+
case "p":
|
1411
|
+
return convertParagraphToRemirror(child.children);
|
1412
|
+
case "ul":
|
1413
|
+
return convertUlToRemirror(child);
|
1414
|
+
case "ol":
|
1415
|
+
return convertOlToRemirror(child);
|
1416
|
+
case "br":
|
1417
|
+
return convertParagraphToRemirror([child]);
|
1418
|
+
default:
|
1419
|
+
{
|
1420
|
+
var _exhaustiveCheck = child;
|
1421
|
+
throw Error("Unexpected child node: " + JSON.stringify(_exhaustiveCheck));
|
1422
|
+
}
|
1423
|
+
}
|
1424
|
+
}
|
1425
|
+
function convertHeadingToRemirror(level, children) {
|
1426
|
+
return {
|
1427
|
+
type: "heading",
|
1428
|
+
attrs: {
|
1429
|
+
level: level
|
1430
|
+
},
|
1431
|
+
content: children.flatMap(convertStringOrSpanNodeToRemirror)
|
1432
|
+
};
|
1433
|
+
}
|
1434
|
+
function convertStringToRemirror(child) {
|
1435
|
+
return {
|
1436
|
+
type: "text",
|
1437
|
+
text: child
|
1438
|
+
};
|
1439
|
+
}
|
1440
|
+
function convertStringOrSpanNodeToRemirror(child) {
|
1441
|
+
if (typeof child === "string") {
|
1442
|
+
return [convertStringToRemirror(child)];
|
1443
|
+
}
|
1444
|
+
return convertSpanNodeToRemirror(child);
|
1445
|
+
}
|
1446
|
+
function convertSpanNodeToRemirror(spanNode) {
|
1447
|
+
if (spanNode.classes.length === 0 && spanNode.children.length === 1) {
|
1448
|
+
if (typeof spanNode.children[0] === "string") {
|
1449
|
+
return [convertStringToRemirror(spanNode.children[0])];
|
1450
|
+
} else {
|
1451
|
+
// TODO: replace with error logging and something more graceful?
|
1452
|
+
throw Error("Unexpected amount of children in span node: " + JSON.stringify(spanNode, null, 2));
|
1453
|
+
}
|
1454
|
+
}
|
1455
|
+
return spanNode.children.map(function (child) {
|
1456
|
+
return {
|
1457
|
+
type: "text",
|
1458
|
+
text: child,
|
1459
|
+
marks: spanNode.classes.map(function (className) {
|
1460
|
+
switch (className) {
|
1461
|
+
case "bold":
|
1462
|
+
return {
|
1463
|
+
type: "bold"
|
1464
|
+
};
|
1465
|
+
case "italic":
|
1466
|
+
return {
|
1467
|
+
type: "italic"
|
1468
|
+
};
|
1469
|
+
case "line-through":
|
1470
|
+
return {
|
1471
|
+
type: "strike"
|
1472
|
+
};
|
1473
|
+
default:
|
1474
|
+
{
|
1475
|
+
var _exhaustiveCheck = className;
|
1476
|
+
throw Error("Unexpected span class: " + _exhaustiveCheck);
|
1477
|
+
}
|
1478
|
+
}
|
1479
|
+
})
|
1480
|
+
};
|
1481
|
+
});
|
1482
|
+
}
|
1483
|
+
function convertParagraphToRemirror(children) {
|
1484
|
+
return {
|
1485
|
+
type: "paragraph",
|
1486
|
+
content: children.flatMap(function (child) {
|
1487
|
+
if (typeof child === "string") {
|
1488
|
+
return [convertStringToRemirror(child)];
|
1489
|
+
}
|
1490
|
+
switch (child.tag) {
|
1491
|
+
case "span":
|
1492
|
+
return convertSpanNodeToRemirror(child);
|
1493
|
+
case "a":
|
1494
|
+
return convertLinkNodeToRemirror(child);
|
1495
|
+
case "img":
|
1496
|
+
return [convertImageNodeToRemirror(child)];
|
1497
|
+
case "br":
|
1498
|
+
return [createRemirrorBr()];
|
1499
|
+
default:
|
1500
|
+
{
|
1501
|
+
var _exhaustiveCheck = child;
|
1502
|
+
throw Error("Unexpected paragraph child: " + JSON.stringify(_exhaustiveCheck));
|
1503
|
+
}
|
1504
|
+
}
|
1505
|
+
})
|
1506
|
+
};
|
1507
|
+
}
|
1508
|
+
function createRemirrorBr() {
|
1509
|
+
return {
|
1510
|
+
type: "hardBreak",
|
1511
|
+
marks: []
|
1512
|
+
};
|
1513
|
+
}
|
1514
|
+
function convertLinkNodeToRemirror(linkNode) {
|
1515
|
+
return linkNode.children.flatMap(convertStringOrSpanNodeToRemirror).map(function (remirrorText) {
|
1516
|
+
return _objectSpread2(_objectSpread2({}, remirrorText), {}, {
|
1517
|
+
marks: (remirrorText.marks || []).concat({
|
1518
|
+
type: "link",
|
1519
|
+
attrs: {
|
1520
|
+
href: linkNode.href,
|
1521
|
+
auto: false,
|
1522
|
+
target: null
|
1523
|
+
}
|
1524
|
+
})
|
1525
|
+
});
|
1526
|
+
});
|
1527
|
+
}
|
1528
|
+
function convertImageNodeToRemirror(imageNode) {
|
1529
|
+
return {
|
1530
|
+
type: "image",
|
1531
|
+
attrs: {
|
1532
|
+
height: imageNode.height,
|
1533
|
+
width: imageNode.width,
|
1534
|
+
src: imageNode.src // at time of writing we are not sure if src as href or data url works, also: how to keep mimeType etc?
|
1535
|
+
}
|
1536
|
+
};
|
1537
|
+
}
|
1538
|
+
function convertUlToRemirror(ulNode) {
|
1539
|
+
return {
|
1540
|
+
type: "bulletList",
|
1541
|
+
content: ulNode.children.map(convertListItemToRemirror)
|
1542
|
+
};
|
1543
|
+
}
|
1544
|
+
function convertOlToRemirror(olNode) {
|
1545
|
+
return {
|
1546
|
+
type: "orderedList",
|
1547
|
+
content: olNode.children.map(convertListItemToRemirror)
|
1548
|
+
};
|
1549
|
+
}
|
1550
|
+
function convertListItemToRemirror(liNode) {
|
1551
|
+
return {
|
1552
|
+
type: "listItem",
|
1553
|
+
content: convertListItemToRemirrorParagraph(liNode.children)
|
1554
|
+
};
|
1555
|
+
}
|
1556
|
+
function convertListItemToRemirrorParagraph(rtChildren) {
|
1557
|
+
var children = [];
|
1558
|
+
var _iterator = _createForOfIteratorHelper(rtChildren),
|
1559
|
+
_step;
|
1560
|
+
try {
|
1561
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
1562
|
+
var child = _step.value;
|
1563
|
+
var lastChild = children[children.length - 1];
|
1564
|
+
if (!lastChild) {
|
1565
|
+
lastChild = {
|
1566
|
+
type: "paragraph",
|
1567
|
+
content: []
|
1568
|
+
};
|
1569
|
+
children.push(lastChild);
|
1570
|
+
}
|
1571
|
+
var lastChildContent = lastChild.content;
|
1572
|
+
if (typeof child === "string") {
|
1573
|
+
lastChildContent.push(convertStringToRemirror(child));
|
1574
|
+
} else {
|
1575
|
+
switch (child.tag) {
|
1576
|
+
case "a":
|
1577
|
+
{
|
1578
|
+
lastChildContent.push.apply(lastChildContent, _toConsumableArray(convertLinkNodeToRemirror(child)));
|
1579
|
+
break;
|
1580
|
+
}
|
1581
|
+
case "br":
|
1582
|
+
{
|
1583
|
+
children.push({
|
1584
|
+
type: "paragraph",
|
1585
|
+
content: [] // create new paragraph
|
1586
|
+
});
|
1587
|
+
break;
|
1588
|
+
}
|
1589
|
+
case "span":
|
1590
|
+
{
|
1591
|
+
lastChildContent.push.apply(lastChildContent, _toConsumableArray(convertSpanNodeToRemirror(child)));
|
1592
|
+
break;
|
1593
|
+
}
|
1594
|
+
case "ol":
|
1595
|
+
{
|
1596
|
+
children.push(convertOlToRemirror(child));
|
1597
|
+
break;
|
1598
|
+
}
|
1599
|
+
case "ul":
|
1600
|
+
{
|
1601
|
+
children.push(convertUlToRemirror(child));
|
1602
|
+
break;
|
1603
|
+
}
|
1604
|
+
default:
|
1605
|
+
{
|
1606
|
+
var _exhaustiveCheck = child;
|
1607
|
+
throw Error("Unexpected list item child: " + JSON.stringify(_exhaustiveCheck));
|
1608
|
+
}
|
1609
|
+
}
|
1610
|
+
}
|
1611
|
+
}
|
1612
|
+
} catch (err) {
|
1613
|
+
_iterator.e(err);
|
1614
|
+
} finally {
|
1615
|
+
_iterator.f();
|
1616
|
+
}
|
1617
|
+
return children;
|
1618
|
+
}
|
1619
|
+
|
1446
1620
|
var VAL_SESSION_COOKIE = Internal.VAL_SESSION_COOKIE;
|
1447
1621
|
var VAL_STATE_COOKIE = Internal.VAL_STATE_COOKIE;
|
1448
1622
|
var VAL_ENABLE_COOKIE_NAME = Internal.VAL_ENABLE_COOKIE_NAME;
|
1449
1623
|
|
1450
|
-
export {
|
1624
|
+
export { EXT_TO_MIME_TYPES, MIME_TYPES_TO_EXT, RemirrorBr, RemirrorBulletList, RemirrorHeading, RemirrorImage, RemirrorJSON, RemirrorLinkMark, RemirrorListItem, RemirrorOrderedList, RemirrorParagraph, RemirrorText, RemirrorTextMark, VAL_ENABLE_COOKIE_NAME, VAL_SESSION_COOKIE, VAL_STATE_COOKIE, filenameToMimeType, getMimeType, mimeTypeToFileExt, parseRichTextSource, remirrorToRichTextSource, richTextToRemirror };
|