@tinacms/mdx 2.0.7 → 2.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/dist/index.browser.js +159 -7
- package/dist/index.js +159 -7
- package/dist/next/tests/markdown-basic-marks-highlight/field.d.ts +2 -0
- package/dist/next/tests/markdown-basic-marks-highlight/index.test.d.ts +1 -0
- package/dist/parse/mark.d.ts +7 -0
- package/dist/parse/plate.d.ts +2 -0
- package/dist/stringify/index.d.ts +1 -1
- package/package.json +3 -3
package/dist/index.browser.js
CHANGED
|
@@ -40142,13 +40142,26 @@ var text5 = (content3) => {
|
|
|
40142
40142
|
value: content3.text
|
|
40143
40143
|
};
|
|
40144
40144
|
};
|
|
40145
|
+
var markAttributes = (content3) => {
|
|
40146
|
+
if (!content3.highlightColor) {
|
|
40147
|
+
return [];
|
|
40148
|
+
}
|
|
40149
|
+
return [
|
|
40150
|
+
{
|
|
40151
|
+
type: "mdxJsxAttribute",
|
|
40152
|
+
name: "style",
|
|
40153
|
+
value: `background-color: ${content3.highlightColor}`
|
|
40154
|
+
}
|
|
40155
|
+
];
|
|
40156
|
+
};
|
|
40145
40157
|
var eat2 = (c, field, imageCallback) => {
|
|
40146
40158
|
const content3 = replaceLinksWithTextNodes(c);
|
|
40147
40159
|
const first = content3[0];
|
|
40148
40160
|
if (!first) {
|
|
40149
40161
|
return [];
|
|
40150
40162
|
}
|
|
40151
|
-
|
|
40163
|
+
const firstIsText = first.type === "text" || !first.type && typeof first.text === "string";
|
|
40164
|
+
if (first && !firstIsText) {
|
|
40152
40165
|
if (first.type === "a") {
|
|
40153
40166
|
return [
|
|
40154
40167
|
{
|
|
@@ -40224,6 +40237,20 @@ var eat2 = (c, field, imageCallback) => {
|
|
|
40224
40237
|
...eat2(content3.slice(1), field, imageCallback)
|
|
40225
40238
|
];
|
|
40226
40239
|
}
|
|
40240
|
+
if (markToProcess === "highlight") {
|
|
40241
|
+
const f = first;
|
|
40242
|
+
const innerText = text5({ text: f.text });
|
|
40243
|
+
const child = first.linkifyTextNode ? first.linkifyTextNode(innerText) : innerText;
|
|
40244
|
+
return [
|
|
40245
|
+
{
|
|
40246
|
+
type: "mdxJsxTextElement",
|
|
40247
|
+
name: "mark",
|
|
40248
|
+
attributes: markAttributes(f),
|
|
40249
|
+
children: [child]
|
|
40250
|
+
},
|
|
40251
|
+
...eat2(content3.slice(1), field, imageCallback)
|
|
40252
|
+
];
|
|
40253
|
+
}
|
|
40227
40254
|
if (markToProcess === "inlineCode") {
|
|
40228
40255
|
if (nonMatchingSiblingIndex) {
|
|
40229
40256
|
throw new Error("Marks inside inline code are not supported");
|
|
@@ -40264,7 +40291,8 @@ var cleanNode = (node2, mark) => {
|
|
|
40264
40291
|
strong: "bold",
|
|
40265
40292
|
emphasis: "italic",
|
|
40266
40293
|
inlineCode: "code",
|
|
40267
|
-
delete: "strikethrough"
|
|
40294
|
+
delete: "strikethrough",
|
|
40295
|
+
highlight: "highlight"
|
|
40268
40296
|
}[mark];
|
|
40269
40297
|
Object.entries(node2).map(([key, value]) => {
|
|
40270
40298
|
if (key !== markToClear) {
|
|
@@ -40602,7 +40630,8 @@ var blockContentElement = (content3, field, imageCallback) => {
|
|
|
40602
40630
|
};
|
|
40603
40631
|
var getMarks = (content3) => {
|
|
40604
40632
|
const marks = [];
|
|
40605
|
-
|
|
40633
|
+
const isText = content3.type === "text" || !content3.type && typeof content3.text === "string";
|
|
40634
|
+
if (!isText) {
|
|
40606
40635
|
return [];
|
|
40607
40636
|
}
|
|
40608
40637
|
if (content3.bold) {
|
|
@@ -40617,6 +40646,9 @@ var getMarks = (content3) => {
|
|
|
40617
40646
|
if (content3.strikethrough) {
|
|
40618
40647
|
marks.push("delete");
|
|
40619
40648
|
}
|
|
40649
|
+
if (content3.highlight) {
|
|
40650
|
+
marks.push("highlight");
|
|
40651
|
+
}
|
|
40620
40652
|
return marks;
|
|
40621
40653
|
};
|
|
40622
40654
|
|
|
@@ -40951,13 +40983,26 @@ var text6 = (content3) => {
|
|
|
40951
40983
|
value: content3.text
|
|
40952
40984
|
};
|
|
40953
40985
|
};
|
|
40986
|
+
var markAttributes2 = (content3) => {
|
|
40987
|
+
if (!content3.highlightColor) {
|
|
40988
|
+
return [];
|
|
40989
|
+
}
|
|
40990
|
+
return [
|
|
40991
|
+
{
|
|
40992
|
+
type: "mdxJsxAttribute",
|
|
40993
|
+
name: "style",
|
|
40994
|
+
value: `background-color: ${content3.highlightColor}`
|
|
40995
|
+
}
|
|
40996
|
+
];
|
|
40997
|
+
};
|
|
40954
40998
|
var eat3 = (c, field, imageCallback) => {
|
|
40955
40999
|
const content3 = replaceLinksWithTextNodes2(c);
|
|
40956
41000
|
const first = content3[0];
|
|
40957
41001
|
if (!first) {
|
|
40958
41002
|
return [];
|
|
40959
41003
|
}
|
|
40960
|
-
|
|
41004
|
+
const firstIsText = first.type === "text" || !first.type && typeof first.text === "string";
|
|
41005
|
+
if (first && !firstIsText) {
|
|
40961
41006
|
if (first.type === "a") {
|
|
40962
41007
|
return [
|
|
40963
41008
|
{
|
|
@@ -41032,6 +41077,23 @@ var eat3 = (c, field, imageCallback) => {
|
|
|
41032
41077
|
...eat3(content3.slice(1), field, imageCallback)
|
|
41033
41078
|
];
|
|
41034
41079
|
}
|
|
41080
|
+
if (markToProcess === "highlight") {
|
|
41081
|
+
if (nonMatchingSiblingIndex) {
|
|
41082
|
+
throw new Error("Marks inside highlight are not supported");
|
|
41083
|
+
}
|
|
41084
|
+
const f = first;
|
|
41085
|
+
const innerText = text6({ text: f.text });
|
|
41086
|
+
const child = first.linkifyTextNode ? first.linkifyTextNode(innerText) : innerText;
|
|
41087
|
+
return [
|
|
41088
|
+
{
|
|
41089
|
+
type: "mdxJsxTextElement",
|
|
41090
|
+
name: "mark",
|
|
41091
|
+
attributes: markAttributes2(f),
|
|
41092
|
+
children: [child]
|
|
41093
|
+
},
|
|
41094
|
+
...eat3(content3.slice(nonMatchingSiblingIndex + 1), field, imageCallback)
|
|
41095
|
+
];
|
|
41096
|
+
}
|
|
41035
41097
|
if (markToProcess === "inlineCode") {
|
|
41036
41098
|
const f = first;
|
|
41037
41099
|
if (nonMatchingSiblingIndex) {
|
|
@@ -41072,7 +41134,8 @@ var cleanNode2 = (node2, mark) => {
|
|
|
41072
41134
|
strong: "bold",
|
|
41073
41135
|
emphasis: "italic",
|
|
41074
41136
|
inlineCode: "code",
|
|
41075
|
-
delete: "strikethrough"
|
|
41137
|
+
delete: "strikethrough",
|
|
41138
|
+
highlight: "highlight"
|
|
41076
41139
|
}[mark];
|
|
41077
41140
|
Object.entries(node2).map(([key, value]) => {
|
|
41078
41141
|
if (key !== markToClear) {
|
|
@@ -42442,6 +42505,64 @@ var directiveElement = (node2, field, imageCallback, raw) => {
|
|
|
42442
42505
|
};
|
|
42443
42506
|
};
|
|
42444
42507
|
|
|
42508
|
+
// src/parse/mark.ts
|
|
42509
|
+
var getHighlightColorFromAttributes = (attributes2 = []) => {
|
|
42510
|
+
const styleAttribute = attributes2.find(
|
|
42511
|
+
(attribute) => attribute.type === "mdxJsxAttribute" && attribute.name === "style"
|
|
42512
|
+
);
|
|
42513
|
+
if (!styleAttribute || typeof styleAttribute.value !== "string") {
|
|
42514
|
+
return void 0;
|
|
42515
|
+
}
|
|
42516
|
+
const backgroundColorMatch = /background-color:\s*([^;]+)/i.exec(
|
|
42517
|
+
styleAttribute.value
|
|
42518
|
+
);
|
|
42519
|
+
return backgroundColorMatch?.[1]?.trim();
|
|
42520
|
+
};
|
|
42521
|
+
var parseMarkMdxText = (content3, extraMarks = {}, parseChild) => {
|
|
42522
|
+
if (content3.name !== "mark") {
|
|
42523
|
+
return null;
|
|
42524
|
+
}
|
|
42525
|
+
const highlightColor = getHighlightColorFromAttributes(content3.attributes);
|
|
42526
|
+
const markProps = {
|
|
42527
|
+
highlight: true,
|
|
42528
|
+
...highlightColor ? { highlightColor } : {},
|
|
42529
|
+
...extraMarks
|
|
42530
|
+
};
|
|
42531
|
+
return (content3.children || []).flatMap((child) => {
|
|
42532
|
+
if (parseChild) {
|
|
42533
|
+
return applyMarksToInlineElements(parseChild(child), markProps);
|
|
42534
|
+
}
|
|
42535
|
+
if (child.type === "text") {
|
|
42536
|
+
return [
|
|
42537
|
+
{
|
|
42538
|
+
type: "text",
|
|
42539
|
+
text: child.value,
|
|
42540
|
+
...markProps
|
|
42541
|
+
}
|
|
42542
|
+
];
|
|
42543
|
+
}
|
|
42544
|
+
return [];
|
|
42545
|
+
});
|
|
42546
|
+
};
|
|
42547
|
+
var applyMarksToInlineElements = (elements, marks) => {
|
|
42548
|
+
const items = Array.isArray(elements) ? elements : [elements];
|
|
42549
|
+
return items.map((item) => {
|
|
42550
|
+
if (item.type === "text") {
|
|
42551
|
+
return {
|
|
42552
|
+
...item,
|
|
42553
|
+
...marks
|
|
42554
|
+
};
|
|
42555
|
+
}
|
|
42556
|
+
if (item.type === "a") {
|
|
42557
|
+
return {
|
|
42558
|
+
...item,
|
|
42559
|
+
children: applyMarksToInlineElements(item.children, marks)
|
|
42560
|
+
};
|
|
42561
|
+
}
|
|
42562
|
+
return item;
|
|
42563
|
+
});
|
|
42564
|
+
};
|
|
42565
|
+
|
|
42445
42566
|
// src/parse/remarkToPlate.ts
|
|
42446
42567
|
var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
42447
42568
|
const mdxJsxElement2 = skipMDXProcess ? (node2) => node2 : mdxJsxElement;
|
|
@@ -42691,7 +42812,11 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
42691
42812
|
const staticPhrasingContent = (content4) => {
|
|
42692
42813
|
switch (content4.type) {
|
|
42693
42814
|
case "mdxJsxTextElement":
|
|
42694
|
-
return
|
|
42815
|
+
return parseMarkMdxText(
|
|
42816
|
+
content4,
|
|
42817
|
+
{},
|
|
42818
|
+
(child) => staticPhrasingContent(child)
|
|
42819
|
+
) ?? mdxJsxElement2(content4, field, imageCallback);
|
|
42695
42820
|
case "text":
|
|
42696
42821
|
return text7(content4);
|
|
42697
42822
|
case "inlineCode":
|
|
@@ -42717,8 +42842,17 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
42717
42842
|
return link2(content4);
|
|
42718
42843
|
case "image":
|
|
42719
42844
|
return image2(content4);
|
|
42720
|
-
case "mdxJsxTextElement":
|
|
42845
|
+
case "mdxJsxTextElement": {
|
|
42846
|
+
const markNodes = parseMarkMdxText(
|
|
42847
|
+
content4,
|
|
42848
|
+
{},
|
|
42849
|
+
(child) => phrasingContent(child)
|
|
42850
|
+
);
|
|
42851
|
+
if (markNodes) {
|
|
42852
|
+
return markNodes;
|
|
42853
|
+
}
|
|
42721
42854
|
return mdxJsxElement2(content4, field, imageCallback);
|
|
42855
|
+
}
|
|
42722
42856
|
case "emphasis":
|
|
42723
42857
|
return phrashingMark(content4);
|
|
42724
42858
|
case "strong":
|
|
@@ -42757,6 +42891,7 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
42757
42891
|
const phrashingMark = (node2, marks = []) => {
|
|
42758
42892
|
const accum = [];
|
|
42759
42893
|
switch (node2.type) {
|
|
42894
|
+
// @ts-ignore
|
|
42760
42895
|
case "emphasis": {
|
|
42761
42896
|
const children = node2.children.map((child) => phrashingMark(child, [...marks, "italic"])).flat();
|
|
42762
42897
|
children.forEach((child) => {
|
|
@@ -42808,6 +42943,23 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
42808
42943
|
marks.forEach((mark) => markProps[mark] = true);
|
|
42809
42944
|
accum.push({ type: "text", text: node2.value, ...markProps });
|
|
42810
42945
|
break;
|
|
42946
|
+
case "mdxJsxTextElement": {
|
|
42947
|
+
const jsxMark = parseMarkMdxText(
|
|
42948
|
+
node2,
|
|
42949
|
+
Object.fromEntries(marks.map((mark) => [mark, true])),
|
|
42950
|
+
(child) => phrasingContent(child)
|
|
42951
|
+
);
|
|
42952
|
+
if (jsxMark) {
|
|
42953
|
+
accum.push(...jsxMark);
|
|
42954
|
+
break;
|
|
42955
|
+
}
|
|
42956
|
+
accum.push(mdxJsxElement2(node2, field, imageCallback));
|
|
42957
|
+
break;
|
|
42958
|
+
}
|
|
42959
|
+
case "html": {
|
|
42960
|
+
accum.push(html_inline(node2));
|
|
42961
|
+
break;
|
|
42962
|
+
}
|
|
42811
42963
|
/**
|
|
42812
42964
|
* Eg. this is a line break
|
|
42813
42965
|
* vv
|
package/dist/index.js
CHANGED
|
@@ -42008,13 +42008,26 @@ var text5 = (content3) => {
|
|
|
42008
42008
|
value: content3.text
|
|
42009
42009
|
};
|
|
42010
42010
|
};
|
|
42011
|
+
var markAttributes = (content3) => {
|
|
42012
|
+
if (!content3.highlightColor) {
|
|
42013
|
+
return [];
|
|
42014
|
+
}
|
|
42015
|
+
return [
|
|
42016
|
+
{
|
|
42017
|
+
type: "mdxJsxAttribute",
|
|
42018
|
+
name: "style",
|
|
42019
|
+
value: `background-color: ${content3.highlightColor}`
|
|
42020
|
+
}
|
|
42021
|
+
];
|
|
42022
|
+
};
|
|
42011
42023
|
var eat2 = (c, field, imageCallback) => {
|
|
42012
42024
|
const content3 = replaceLinksWithTextNodes(c);
|
|
42013
42025
|
const first = content3[0];
|
|
42014
42026
|
if (!first) {
|
|
42015
42027
|
return [];
|
|
42016
42028
|
}
|
|
42017
|
-
|
|
42029
|
+
const firstIsText = first.type === "text" || !first.type && typeof first.text === "string";
|
|
42030
|
+
if (first && !firstIsText) {
|
|
42018
42031
|
if (first.type === "a") {
|
|
42019
42032
|
return [
|
|
42020
42033
|
{
|
|
@@ -42090,6 +42103,20 @@ var eat2 = (c, field, imageCallback) => {
|
|
|
42090
42103
|
...eat2(content3.slice(1), field, imageCallback)
|
|
42091
42104
|
];
|
|
42092
42105
|
}
|
|
42106
|
+
if (markToProcess === "highlight") {
|
|
42107
|
+
const f = first;
|
|
42108
|
+
const innerText = text5({ text: f.text });
|
|
42109
|
+
const child = first.linkifyTextNode ? first.linkifyTextNode(innerText) : innerText;
|
|
42110
|
+
return [
|
|
42111
|
+
{
|
|
42112
|
+
type: "mdxJsxTextElement",
|
|
42113
|
+
name: "mark",
|
|
42114
|
+
attributes: markAttributes(f),
|
|
42115
|
+
children: [child]
|
|
42116
|
+
},
|
|
42117
|
+
...eat2(content3.slice(1), field, imageCallback)
|
|
42118
|
+
];
|
|
42119
|
+
}
|
|
42093
42120
|
if (markToProcess === "inlineCode") {
|
|
42094
42121
|
if (nonMatchingSiblingIndex) {
|
|
42095
42122
|
throw new Error("Marks inside inline code are not supported");
|
|
@@ -42130,7 +42157,8 @@ var cleanNode = (node2, mark) => {
|
|
|
42130
42157
|
strong: "bold",
|
|
42131
42158
|
emphasis: "italic",
|
|
42132
42159
|
inlineCode: "code",
|
|
42133
|
-
delete: "strikethrough"
|
|
42160
|
+
delete: "strikethrough",
|
|
42161
|
+
highlight: "highlight"
|
|
42134
42162
|
}[mark];
|
|
42135
42163
|
Object.entries(node2).map(([key, value]) => {
|
|
42136
42164
|
if (key !== markToClear) {
|
|
@@ -42468,7 +42496,8 @@ var blockContentElement = (content3, field, imageCallback) => {
|
|
|
42468
42496
|
};
|
|
42469
42497
|
var getMarks = (content3) => {
|
|
42470
42498
|
const marks = [];
|
|
42471
|
-
|
|
42499
|
+
const isText = content3.type === "text" || !content3.type && typeof content3.text === "string";
|
|
42500
|
+
if (!isText) {
|
|
42472
42501
|
return [];
|
|
42473
42502
|
}
|
|
42474
42503
|
if (content3.bold) {
|
|
@@ -42483,6 +42512,9 @@ var getMarks = (content3) => {
|
|
|
42483
42512
|
if (content3.strikethrough) {
|
|
42484
42513
|
marks.push("delete");
|
|
42485
42514
|
}
|
|
42515
|
+
if (content3.highlight) {
|
|
42516
|
+
marks.push("highlight");
|
|
42517
|
+
}
|
|
42486
42518
|
return marks;
|
|
42487
42519
|
};
|
|
42488
42520
|
|
|
@@ -42817,13 +42849,26 @@ var text6 = (content3) => {
|
|
|
42817
42849
|
value: content3.text
|
|
42818
42850
|
};
|
|
42819
42851
|
};
|
|
42852
|
+
var markAttributes2 = (content3) => {
|
|
42853
|
+
if (!content3.highlightColor) {
|
|
42854
|
+
return [];
|
|
42855
|
+
}
|
|
42856
|
+
return [
|
|
42857
|
+
{
|
|
42858
|
+
type: "mdxJsxAttribute",
|
|
42859
|
+
name: "style",
|
|
42860
|
+
value: `background-color: ${content3.highlightColor}`
|
|
42861
|
+
}
|
|
42862
|
+
];
|
|
42863
|
+
};
|
|
42820
42864
|
var eat3 = (c, field, imageCallback) => {
|
|
42821
42865
|
const content3 = replaceLinksWithTextNodes2(c);
|
|
42822
42866
|
const first = content3[0];
|
|
42823
42867
|
if (!first) {
|
|
42824
42868
|
return [];
|
|
42825
42869
|
}
|
|
42826
|
-
|
|
42870
|
+
const firstIsText = first.type === "text" || !first.type && typeof first.text === "string";
|
|
42871
|
+
if (first && !firstIsText) {
|
|
42827
42872
|
if (first.type === "a") {
|
|
42828
42873
|
return [
|
|
42829
42874
|
{
|
|
@@ -42898,6 +42943,23 @@ var eat3 = (c, field, imageCallback) => {
|
|
|
42898
42943
|
...eat3(content3.slice(1), field, imageCallback)
|
|
42899
42944
|
];
|
|
42900
42945
|
}
|
|
42946
|
+
if (markToProcess === "highlight") {
|
|
42947
|
+
if (nonMatchingSiblingIndex) {
|
|
42948
|
+
throw new Error("Marks inside highlight are not supported");
|
|
42949
|
+
}
|
|
42950
|
+
const f = first;
|
|
42951
|
+
const innerText = text6({ text: f.text });
|
|
42952
|
+
const child = first.linkifyTextNode ? first.linkifyTextNode(innerText) : innerText;
|
|
42953
|
+
return [
|
|
42954
|
+
{
|
|
42955
|
+
type: "mdxJsxTextElement",
|
|
42956
|
+
name: "mark",
|
|
42957
|
+
attributes: markAttributes2(f),
|
|
42958
|
+
children: [child]
|
|
42959
|
+
},
|
|
42960
|
+
...eat3(content3.slice(nonMatchingSiblingIndex + 1), field, imageCallback)
|
|
42961
|
+
];
|
|
42962
|
+
}
|
|
42901
42963
|
if (markToProcess === "inlineCode") {
|
|
42902
42964
|
const f = first;
|
|
42903
42965
|
if (nonMatchingSiblingIndex) {
|
|
@@ -42938,7 +43000,8 @@ var cleanNode2 = (node2, mark) => {
|
|
|
42938
43000
|
strong: "bold",
|
|
42939
43001
|
emphasis: "italic",
|
|
42940
43002
|
inlineCode: "code",
|
|
42941
|
-
delete: "strikethrough"
|
|
43003
|
+
delete: "strikethrough",
|
|
43004
|
+
highlight: "highlight"
|
|
42942
43005
|
}[mark];
|
|
42943
43006
|
Object.entries(node2).map(([key, value]) => {
|
|
42944
43007
|
if (key !== markToClear) {
|
|
@@ -44308,6 +44371,64 @@ var directiveElement = (node2, field, imageCallback, raw) => {
|
|
|
44308
44371
|
};
|
|
44309
44372
|
};
|
|
44310
44373
|
|
|
44374
|
+
// src/parse/mark.ts
|
|
44375
|
+
var getHighlightColorFromAttributes = (attributes2 = []) => {
|
|
44376
|
+
const styleAttribute = attributes2.find(
|
|
44377
|
+
(attribute) => attribute.type === "mdxJsxAttribute" && attribute.name === "style"
|
|
44378
|
+
);
|
|
44379
|
+
if (!styleAttribute || typeof styleAttribute.value !== "string") {
|
|
44380
|
+
return void 0;
|
|
44381
|
+
}
|
|
44382
|
+
const backgroundColorMatch = /background-color:\s*([^;]+)/i.exec(
|
|
44383
|
+
styleAttribute.value
|
|
44384
|
+
);
|
|
44385
|
+
return backgroundColorMatch?.[1]?.trim();
|
|
44386
|
+
};
|
|
44387
|
+
var parseMarkMdxText = (content3, extraMarks = {}, parseChild) => {
|
|
44388
|
+
if (content3.name !== "mark") {
|
|
44389
|
+
return null;
|
|
44390
|
+
}
|
|
44391
|
+
const highlightColor = getHighlightColorFromAttributes(content3.attributes);
|
|
44392
|
+
const markProps = {
|
|
44393
|
+
highlight: true,
|
|
44394
|
+
...highlightColor ? { highlightColor } : {},
|
|
44395
|
+
...extraMarks
|
|
44396
|
+
};
|
|
44397
|
+
return (content3.children || []).flatMap((child) => {
|
|
44398
|
+
if (parseChild) {
|
|
44399
|
+
return applyMarksToInlineElements(parseChild(child), markProps);
|
|
44400
|
+
}
|
|
44401
|
+
if (child.type === "text") {
|
|
44402
|
+
return [
|
|
44403
|
+
{
|
|
44404
|
+
type: "text",
|
|
44405
|
+
text: child.value,
|
|
44406
|
+
...markProps
|
|
44407
|
+
}
|
|
44408
|
+
];
|
|
44409
|
+
}
|
|
44410
|
+
return [];
|
|
44411
|
+
});
|
|
44412
|
+
};
|
|
44413
|
+
var applyMarksToInlineElements = (elements, marks) => {
|
|
44414
|
+
const items = Array.isArray(elements) ? elements : [elements];
|
|
44415
|
+
return items.map((item) => {
|
|
44416
|
+
if (item.type === "text") {
|
|
44417
|
+
return {
|
|
44418
|
+
...item,
|
|
44419
|
+
...marks
|
|
44420
|
+
};
|
|
44421
|
+
}
|
|
44422
|
+
if (item.type === "a") {
|
|
44423
|
+
return {
|
|
44424
|
+
...item,
|
|
44425
|
+
children: applyMarksToInlineElements(item.children, marks)
|
|
44426
|
+
};
|
|
44427
|
+
}
|
|
44428
|
+
return item;
|
|
44429
|
+
});
|
|
44430
|
+
};
|
|
44431
|
+
|
|
44311
44432
|
// src/parse/remarkToPlate.ts
|
|
44312
44433
|
var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
44313
44434
|
const mdxJsxElement2 = skipMDXProcess ? (node2) => node2 : mdxJsxElement;
|
|
@@ -44557,7 +44678,11 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
44557
44678
|
const staticPhrasingContent = (content4) => {
|
|
44558
44679
|
switch (content4.type) {
|
|
44559
44680
|
case "mdxJsxTextElement":
|
|
44560
|
-
return
|
|
44681
|
+
return parseMarkMdxText(
|
|
44682
|
+
content4,
|
|
44683
|
+
{},
|
|
44684
|
+
(child) => staticPhrasingContent(child)
|
|
44685
|
+
) ?? mdxJsxElement2(content4, field, imageCallback);
|
|
44561
44686
|
case "text":
|
|
44562
44687
|
return text7(content4);
|
|
44563
44688
|
case "inlineCode":
|
|
@@ -44583,8 +44708,17 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
44583
44708
|
return link2(content4);
|
|
44584
44709
|
case "image":
|
|
44585
44710
|
return image2(content4);
|
|
44586
|
-
case "mdxJsxTextElement":
|
|
44711
|
+
case "mdxJsxTextElement": {
|
|
44712
|
+
const markNodes = parseMarkMdxText(
|
|
44713
|
+
content4,
|
|
44714
|
+
{},
|
|
44715
|
+
(child) => phrasingContent(child)
|
|
44716
|
+
);
|
|
44717
|
+
if (markNodes) {
|
|
44718
|
+
return markNodes;
|
|
44719
|
+
}
|
|
44587
44720
|
return mdxJsxElement2(content4, field, imageCallback);
|
|
44721
|
+
}
|
|
44588
44722
|
case "emphasis":
|
|
44589
44723
|
return phrashingMark(content4);
|
|
44590
44724
|
case "strong":
|
|
@@ -44623,6 +44757,7 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
44623
44757
|
const phrashingMark = (node2, marks = []) => {
|
|
44624
44758
|
const accum = [];
|
|
44625
44759
|
switch (node2.type) {
|
|
44760
|
+
// @ts-ignore
|
|
44626
44761
|
case "emphasis": {
|
|
44627
44762
|
const children = node2.children.map((child) => phrashingMark(child, [...marks, "italic"])).flat();
|
|
44628
44763
|
children.forEach((child) => {
|
|
@@ -44674,6 +44809,23 @@ var remarkToSlate = (root2, field, imageCallback, raw, skipMDXProcess) => {
|
|
|
44674
44809
|
marks.forEach((mark) => markProps[mark] = true);
|
|
44675
44810
|
accum.push({ type: "text", text: node2.value, ...markProps });
|
|
44676
44811
|
break;
|
|
44812
|
+
case "mdxJsxTextElement": {
|
|
44813
|
+
const jsxMark = parseMarkMdxText(
|
|
44814
|
+
node2,
|
|
44815
|
+
Object.fromEntries(marks.map((mark) => [mark, true])),
|
|
44816
|
+
(child) => phrasingContent(child)
|
|
44817
|
+
);
|
|
44818
|
+
if (jsxMark) {
|
|
44819
|
+
accum.push(...jsxMark);
|
|
44820
|
+
break;
|
|
44821
|
+
}
|
|
44822
|
+
accum.push(mdxJsxElement2(node2, field, imageCallback));
|
|
44823
|
+
break;
|
|
44824
|
+
}
|
|
44825
|
+
case "html": {
|
|
44826
|
+
accum.push(html_inline(node2));
|
|
44827
|
+
break;
|
|
44828
|
+
}
|
|
44677
44829
|
/**
|
|
44678
44830
|
* Eg. this is a line break
|
|
44679
44831
|
* vv
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as Plate from './plate';
|
|
2
|
+
import type { PhrasingContent } from 'mdast';
|
|
3
|
+
import type { MdxJsxAttribute, MdxJsxExpressionAttribute, MdxJsxTextElement } from 'mdast-util-mdx-jsx';
|
|
4
|
+
export declare const getHighlightColorFromAttributes: (attributes?: (MdxJsxAttribute | MdxJsxExpressionAttribute)[]) => string | undefined;
|
|
5
|
+
export declare const parseMarkMdxText: <TChild extends PhrasingContent = PhrasingContent>(content: MdxJsxTextElement & {
|
|
6
|
+
children?: TChild[];
|
|
7
|
+
}, extraMarks?: Record<string, boolean | string>, parseChild?: (child: TChild) => Plate.InlineElement | Plate.InlineElement[]) => Plate.InlineElement[] | null;
|
package/dist/parse/plate.d.ts
CHANGED
|
@@ -28,5 +28,5 @@ export declare const toTinaMarkdown: (tree: Md.Root, field: RichTextType) => str
|
|
|
28
28
|
export declare const rootElement: (content: Plate.RootElement, field: RichTextType, imageCallback: (url: string) => string) => Md.Root;
|
|
29
29
|
export declare function codeLinesToString(content: Plate.CodeBlockElement): string;
|
|
30
30
|
export declare const blockElement: (content: Plate.BlockElement, field: RichTextType, imageCallback: (url: string) => string) => Md.Content | null;
|
|
31
|
-
export type Marks = 'strong' | 'emphasis' | 'inlineCode' | 'delete';
|
|
31
|
+
export type Marks = 'strong' | 'emphasis' | 'inlineCode' | 'delete' | 'highlight';
|
|
32
32
|
export declare const getMarks: (content: Plate.InlineElement) => Marks[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinacms/mdx",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"micromark-factory-whitespace": "1.0.0",
|
|
43
43
|
"micromark-util-character": "1.1.0",
|
|
44
44
|
"micromark-util-symbol": "1.0.1",
|
|
45
|
-
"micromark-util-types": "1.0
|
|
45
|
+
"micromark-util-types": "1.1.0",
|
|
46
46
|
"parse-entities": "4.0.1",
|
|
47
47
|
"prettier": "^2.8.8",
|
|
48
48
|
"remark": "14.0.2",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"typescript": "^5.7.3",
|
|
79
79
|
"vite": "^4.5.9",
|
|
80
80
|
"vitest": "^0.32.4",
|
|
81
|
-
"@tinacms/scripts": "1.
|
|
81
|
+
"@tinacms/scripts": "1.6.0"
|
|
82
82
|
},
|
|
83
83
|
"scripts": {
|
|
84
84
|
"types": "tsc",
|