@frontify/fondue 12.0.0-beta.134 → 12.0.0-beta.136
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/components/RichTextEditor/RichTextEditor.es.js +25 -23
- package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js +3 -3
- package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.d.ts +2 -2
- package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js +30 -28
- package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/options.es.js +23 -22
- package/dist/components/RichTextEditor/serializer/markdown/options.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.d.ts +2 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js +16 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.d.ts +2 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js +52 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/types.d.ts +4 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.d.ts +2 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js +12 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/{remarkMention → remarkFondue}/types.d.ts +2 -6
- package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js +7 -4
- package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/types.d.ts +7 -2
- package/dist/components/RichTextEditor/serializer/markdown/types.es.js +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/types.es.js.map +1 -1
- package/dist/index.cjs.js +20 -19
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.umd.js +24 -23
- package/dist/index.umd.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.d.ts +0 -3
- package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js +0 -49
- package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { useMemoizedId as
|
|
1
|
+
import { useMemoizedId as O } from "../../hooks/useMemoizedId.es.js";
|
|
2
2
|
import { Plate as v } from "@udecode/plate";
|
|
3
3
|
import t from "react";
|
|
4
|
-
import { ContentReplacement as
|
|
5
|
-
import { RichTextEditorProvider as
|
|
6
|
-
import { defaultPlugins as
|
|
7
|
-
import { PaddingSizes as
|
|
8
|
-
import { defaultDesignTokens as
|
|
9
|
-
import { useEditorState as
|
|
10
|
-
import { KEY_ELEMENT_BREAK_AFTER_COLUMN as
|
|
4
|
+
import { ContentReplacement as w } from "./ContentReplacement.es.js";
|
|
5
|
+
import { RichTextEditorProvider as x } from "./context/RichTextEditorContext.es.js";
|
|
6
|
+
import { defaultPlugins as C } from "./Plugins/index.es.js";
|
|
7
|
+
import { PaddingSizes as D } from "./types.es.js";
|
|
8
|
+
import { defaultDesignTokens as F } from "./utils/defaultDesignTokens.es.js";
|
|
9
|
+
import { useEditorState as I } from "./hooks/useEditorState.es.js";
|
|
10
|
+
import { KEY_ELEMENT_BREAK_AFTER_COLUMN as z, GAP_DEFAULT as G } from "./Plugins/ColumnBreakPlugin/createColumnBreakPlugin.es.js";
|
|
11
11
|
import { Position as K } from "./EditorPositioningWrapper/types.es.js";
|
|
12
12
|
import { parseRawValue as M } from "./utils/parseRawValue.es.js";
|
|
13
13
|
import { forceToBlurActiveElement as B } from "./helpers/forceToBlurActiveElement.es.js";
|
|
@@ -19,48 +19,50 @@ const U = {
|
|
|
19
19
|
value: m,
|
|
20
20
|
placeholder: p = "",
|
|
21
21
|
readonly: f = !1,
|
|
22
|
-
designTokens: E =
|
|
22
|
+
designTokens: E = F,
|
|
23
23
|
onTextChange: u,
|
|
24
|
-
onBlur:
|
|
25
|
-
padding: T =
|
|
24
|
+
onBlur: l,
|
|
25
|
+
padding: T = D.None,
|
|
26
26
|
position: R = K.FLOATING,
|
|
27
|
-
plugins: r =
|
|
27
|
+
plugins: r = C,
|
|
28
28
|
updateValueOnChange: y = !1,
|
|
29
29
|
onValueChanged: h,
|
|
30
30
|
border: L = !0
|
|
31
31
|
}) => {
|
|
32
|
-
var
|
|
33
|
-
const i =
|
|
32
|
+
var a, s;
|
|
33
|
+
const i = O(d), { localValue: N, onChange: g, memoizedValue: P, config: n } = I({
|
|
34
34
|
editorId: i,
|
|
35
35
|
initialValue: m,
|
|
36
36
|
onTextChange: u,
|
|
37
37
|
plugins: r,
|
|
38
38
|
onValueChanged: h
|
|
39
|
-
}), e = r.plugins.find((o) => o.key ===
|
|
39
|
+
}), e = r.plugins.find((o) => o.key === z), S = ((a = e == null ? void 0 : e.options) == null ? void 0 : a.columns) ?? 1, V = ((s = e == null ? void 0 : e.options) == null ? void 0 : s.gap) ?? G, _ = {
|
|
40
40
|
placeholder: p,
|
|
41
41
|
renderPlaceholder: ({ children: o, attributes: c }) => {
|
|
42
|
-
const
|
|
42
|
+
const A = {
|
|
43
43
|
...c,
|
|
44
44
|
style: {
|
|
45
45
|
...c.style,
|
|
46
46
|
...U
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
-
return /* @__PURE__ */ t.createElement("span", { ...
|
|
49
|
+
return /* @__PURE__ */ t.createElement("span", { ...A }, o);
|
|
50
50
|
},
|
|
51
51
|
readOnly: f,
|
|
52
|
-
onBlur: () =>
|
|
52
|
+
onBlur: () => l && l(JSON.stringify(N.current)),
|
|
53
53
|
className: `${T}`,
|
|
54
54
|
style: {
|
|
55
|
-
columns:
|
|
56
|
-
columnGap:
|
|
55
|
+
columns: S,
|
|
56
|
+
columnGap: V
|
|
57
57
|
},
|
|
58
58
|
onKeyDown: (o) => {
|
|
59
59
|
o.code === "Tab" && B();
|
|
60
|
+
},
|
|
61
|
+
scrollSelectionIntoView: () => {
|
|
60
62
|
}
|
|
61
63
|
};
|
|
62
64
|
return /* @__PURE__ */ t.createElement(
|
|
63
|
-
|
|
65
|
+
x,
|
|
64
66
|
{
|
|
65
67
|
value: {
|
|
66
68
|
designTokens: E,
|
|
@@ -73,13 +75,13 @@ const U = {
|
|
|
73
75
|
{
|
|
74
76
|
id: i,
|
|
75
77
|
onChange: g,
|
|
76
|
-
editableProps:
|
|
78
|
+
editableProps: _,
|
|
77
79
|
plugins: n.create(),
|
|
78
80
|
initialValue: P
|
|
79
81
|
},
|
|
80
82
|
n.toolbar(),
|
|
81
83
|
n.inline(),
|
|
82
|
-
y && /* @__PURE__ */ t.createElement(
|
|
84
|
+
y && /* @__PURE__ */ t.createElement(w, { value: M({ editorId: i, raw: m, plugins: r }) })
|
|
83
85
|
)
|
|
84
86
|
);
|
|
85
87
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.es.js","sources":["../../../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { Plate } from '@udecode/plate';\nimport React from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"RichTextEditor.es.js","sources":["../../../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemoizedId } from '@hooks/useMemoizedId';\nimport { Plate, TEditableProps } from '@udecode/plate';\nimport React from 'react';\nimport { RenderPlaceholderProps } from 'slate-react';\nimport { ContentReplacement } from './ContentReplacement';\nimport { RichTextEditorProvider } from './context/RichTextEditorContext';\nimport { Position } from './EditorPositioningWrapper';\nimport { forceToBlurActiveElement } from './helpers';\nimport { useEditorState } from './hooks';\nimport { GAP_DEFAULT, KEY_ELEMENT_BREAK_AFTER_COLUMN, PluginComposer, defaultPlugins } from './Plugins';\nimport { DesignTokens, PaddingSizes, TreeOfNodes } from './types';\nimport { parseRawValue } from './utils';\nimport { defaultDesignTokens } from './utils/defaultDesignTokens';\n\nconst PLACEHOLDER_STYLES: RenderPlaceholderProps['attributes']['style'] = {\n position: 'relative',\n height: '0',\n};\n\nexport type RichTextEditorProps = {\n id?: string;\n placeholder?: string;\n value?: string;\n onTextChange?: (value: string) => void;\n onBlur?: (value: string) => void;\n readonly?: boolean;\n designTokens?: DesignTokens;\n padding?: PaddingSizes;\n position?: Position;\n plugins?: PluginComposer;\n onValueChanged?: (value: TreeOfNodes | null) => void;\n border?: boolean;\n updateValueOnChange?: boolean; // Only set to true when you are sure that performance isn't an issue\n};\n\nexport const RichTextEditor = ({\n id,\n value,\n placeholder = '',\n readonly = false,\n designTokens = defaultDesignTokens,\n onTextChange,\n onBlur,\n padding = PaddingSizes.None,\n position = Position.FLOATING,\n plugins = defaultPlugins,\n updateValueOnChange = false,\n onValueChanged,\n border = true,\n}: RichTextEditorProps) => {\n const editorId = useMemoizedId(id);\n const { localValue, onChange, memoizedValue, config } = useEditorState({\n editorId,\n initialValue: value,\n onTextChange,\n plugins,\n onValueChanged,\n });\n\n const breakAfterPlugin = plugins.plugins.find((plugin) => plugin.key === KEY_ELEMENT_BREAK_AFTER_COLUMN);\n const columns = breakAfterPlugin?.options?.columns ?? 1;\n const columnGap = breakAfterPlugin?.options?.gap ?? GAP_DEFAULT;\n\n const editableProps: TEditableProps = {\n placeholder,\n renderPlaceholder: ({ children, attributes }) => {\n const mergedAttributes = {\n ...attributes,\n style: {\n ...attributes.style,\n ...PLACEHOLDER_STYLES,\n },\n };\n return <span {...mergedAttributes}>{children}</span>;\n },\n readOnly: readonly,\n onBlur: () => onBlur && onBlur(JSON.stringify(localValue.current)),\n className: `${padding}`,\n style: {\n columns,\n columnGap,\n },\n onKeyDown: (event) => {\n if (event.code === 'Tab') {\n // Forcing a blur event because of accessibility\n forceToBlurActiveElement();\n }\n },\n scrollSelectionIntoView: () => {\n // We pass in an empty function here because we don't want the default scroll behaviour\n },\n };\n\n return (\n <RichTextEditorProvider\n value={{\n designTokens,\n position,\n border,\n }}\n >\n <Plate\n id={editorId}\n onChange={onChange}\n editableProps={editableProps}\n plugins={config.create()}\n initialValue={memoizedValue}\n >\n {config.toolbar()}\n {config.inline()}\n {updateValueOnChange && <ContentReplacement value={parseRawValue({ editorId, raw: value, plugins })} />}\n </Plate>\n </RichTextEditorProvider>\n );\n};\nRichTextEditor.displayName = 'FondueRichTextEditor';\n"],"names":["PLACEHOLDER_STYLES","RichTextEditor","id","value","placeholder","readonly","designTokens","defaultDesignTokens","onTextChange","onBlur","padding","PaddingSizes","position","Position","plugins","defaultPlugins","updateValueOnChange","onValueChanged","border","editorId","useMemoizedId","localValue","onChange","memoizedValue","config","useEditorState","breakAfterPlugin","plugin","KEY_ELEMENT_BREAK_AFTER_COLUMN","columns","_a","columnGap","_b","GAP_DEFAULT","editableProps","children","attributes","mergedAttributes","React","event","forceToBlurActiveElement","RichTextEditorProvider","Plate","ContentReplacement","parseRawValue"],"mappings":";;;;;;;;;;;;;AAgBA,MAAMA,IAAoE;AAAA,EACtE,UAAU;AAAA,EACV,QAAQ;AACZ,GAkBaC,IAAiB,CAAC;AAAA,EAC3B,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,cAAAC,IAAeC;AAAA,EACf,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC,IAAUC,EAAa;AAAA,EACvB,UAAAC,IAAWC,EAAS;AAAA,EACpB,SAAAC,IAAUC;AAAA,EACV,qBAAAC,IAAsB;AAAA,EACtB,gBAAAC;AAAA,EACA,QAAAC,IAAS;AACb,MAA2B;;AACjB,QAAAC,IAAWC,EAAclB,CAAE,GAC3B,EAAE,YAAAmB,GAAY,UAAAC,GAAU,eAAAC,GAAe,QAAAC,EAAA,IAAWC,EAAe;AAAA,IACnE,UAAAN;AAAA,IACA,cAAchB;AAAA,IACd,cAAAK;AAAA,IACA,SAAAM;AAAA,IACA,gBAAAG;AAAA,EAAA,CACH,GAEKS,IAAmBZ,EAAQ,QAAQ,KAAK,CAACa,MAAWA,EAAO,QAAQC,CAA8B,GACjGC,MAAUC,IAAAJ,KAAA,gBAAAA,EAAkB,YAAlB,gBAAAI,EAA2B,YAAW,GAChDC,MAAYC,IAAAN,KAAA,gBAAAA,EAAkB,YAAlB,gBAAAM,EAA2B,QAAOC,GAE9CC,IAAgC;AAAA,IAClC,aAAA9B;AAAA,IACA,mBAAmB,CAAC,EAAE,UAAA+B,GAAU,YAAAC,QAAiB;AAC7C,YAAMC,IAAmB;AAAA,QACrB,GAAGD;AAAA,QACH,OAAO;AAAA,UACH,GAAGA,EAAW;AAAA,UACd,GAAGpC;AAAA,QACP;AAAA,MAAA;AAEJ,aAAQ,gBAAAsC,EAAA,cAAA,QAAA,EAAM,GAAGD,EAAA,GAAmBF,CAAS;AAAA,IACjD;AAAA,IACA,UAAU9B;AAAA,IACV,QAAQ,MAAMI,KAAUA,EAAO,KAAK,UAAUY,EAAW,OAAO,CAAC;AAAA,IACjE,WAAW,GAAGX;AAAA,IACd,OAAO;AAAA,MACH,SAAAmB;AAAA,MACA,WAAAE;AAAA,IACJ;AAAA,IACA,WAAW,CAACQ,MAAU;AACd,MAAAA,EAAM,SAAS,SAEUC;IAEjC;AAAA,IACA,yBAAyB,MAAM;AAAA,IAE/B;AAAA,EAAA;AAIA,SAAA,gBAAAF,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACG,OAAO;AAAA,QACH,cAAAnC;AAAA,QACA,UAAAM;AAAA,QACA,QAAAM;AAAA,MACJ;AAAA,IAAA;AAAA,IAEA,gBAAAoB,EAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACG,IAAIvB;AAAA,QACJ,UAAAG;AAAA,QACA,eAAAY;AAAA,QACA,SAASV,EAAO,OAAO;AAAA,QACvB,cAAcD;AAAA,MAAA;AAAA,MAEbC,EAAO,QAAQ;AAAA,MACfA,EAAO,OAAO;AAAA,MACdR,KAAwB,gBAAAsB,EAAA,cAAAK,GAAA,EAAmB,OAAOC,EAAc,EAAE,UAAAzB,GAAU,KAAKhB,GAAO,SAAAW,EAAQ,CAAC,EAAG,CAAA;AAAA,IACzG;AAAA,EAAA;AAGZ;AACAb,EAAe,cAAc;"}
|
|
@@ -4,13 +4,13 @@ import m from "remark-gfm";
|
|
|
4
4
|
import s from "./deserializer/plugin.es.js";
|
|
5
5
|
import { options as t } from "./options.es.js";
|
|
6
6
|
import { MarkdownTransformer as i } from "./MarkdownTransformer.es.js";
|
|
7
|
-
import p from "./
|
|
8
|
-
class
|
|
7
|
+
import { remarkFondue as p } from "./remarkFondue/index.es.js";
|
|
8
|
+
class w extends i {
|
|
9
9
|
process(r) {
|
|
10
10
|
return o().use(e).use(m).use(p).use(s, t(this.editor)).processSync(r).result;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export {
|
|
14
|
-
|
|
14
|
+
w as MarkdownToSlate
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=MarkdownToSlate.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownToSlate.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/MarkdownToSlate.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { unified } from 'unified';\nimport parse from 'remark-parse';\nimport remarkGfm from 'remark-gfm';\nimport deserializer from './deserializer';\nimport { options } from './options';\nimport { MarkdownTransformer } from './MarkdownTransformer';\nimport { NodeType } from './types';\nimport
|
|
1
|
+
{"version":3,"file":"MarkdownToSlate.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/MarkdownToSlate.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { unified } from 'unified';\nimport parse from 'remark-parse';\nimport remarkGfm from 'remark-gfm';\nimport deserializer from './deserializer';\nimport { options } from './options';\nimport { MarkdownTransformer } from './MarkdownTransformer';\nimport { NodeType } from './types';\nimport { remarkFondue } from './remarkFondue';\n\nexport class MarkdownToSlate extends MarkdownTransformer<string, NodeType[]> {\n process(value: string): NodeType[] {\n return unified()\n .use(parse)\n .use(remarkGfm)\n .use(remarkFondue)\n .use(deserializer, options(this.editor))\n .processSync(value).result as NodeType[];\n }\n}\n"],"names":["MarkdownToSlate","MarkdownTransformer","value","unified","parse","remarkGfm","remarkFondue","deserializer","options"],"mappings":";;;;;;;AAWO,MAAMA,UAAwBC,EAAwC;AAAA,EACzE,QAAQC,GAA2B;AACxB,WAAAC,EAAA,EACF,IAAIC,CAAK,EACT,IAAIC,CAAS,EACb,IAAIC,CAAY,EAChB,IAAIC,GAAcC,EAAQ,KAAK,MAAM,CAAC,EACtC,YAAYN,CAAK,EAAE;AAAA,EAC5B;AACJ;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BlockQuoteNode, CodeBlockNode, HeadingNode, ImageNode, InputNodeTypes, ItalicNode, LinkNode, ListItemNode, ListNode, MarkdownAstNode, OptionType, ParagraphNode, ThematicBreakNode } from '../types';
|
|
2
|
-
export default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType): CodeBlockNode<T> | HeadingNode<T> | ListNode<T> | ListItemNode<T> | ParagraphNode<T> | LinkNode<T> | ImageNode<T> | BlockQuoteNode<T> | ThematicBreakNode<T> | ItalicNode<T> | {
|
|
1
|
+
import { BlockQuoteNode, CodeBlockNode, HeadingNode, ImageNode, InputNodeTypes, ItalicNode, LinkNode, ListItemChildNode, ListItemNode, ListNode, MarkdownAstNode, OptionType, ParagraphNode, ThematicBreakNode } from '../types';
|
|
2
|
+
export default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType): CodeBlockNode<T> | HeadingNode<T> | ListNode<T> | ListItemNode<T> | ListItemChildNode<T> | ParagraphNode<T> | LinkNode<T> | ImageNode<T> | BlockQuoteNode<T> | ThematicBreakNode<T> | ItalicNode<T> | {
|
|
3
3
|
type: string;
|
|
4
4
|
category: string;
|
|
5
5
|
id: string;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { MENTION_DESERIALIZE_REGEX as
|
|
2
|
-
function
|
|
1
|
+
import { MENTION_DESERIALIZE_REGEX as m } from "../utils.es.js";
|
|
2
|
+
function g(e, a) {
|
|
3
3
|
var s, u;
|
|
4
|
-
const t =
|
|
5
|
-
let
|
|
6
|
-
switch (o(e.children) && (
|
|
7
|
-
(c) =>
|
|
4
|
+
const t = a == null ? void 0 : a.nodeTypes, { linkDestinationKey: i, imageSourceKey: y, imageCaptionKey: h } = d(a);
|
|
5
|
+
let r = [{ text: "" }];
|
|
6
|
+
switch (o(e.children) && (r = e.children.flatMap(
|
|
7
|
+
(c) => g(
|
|
8
8
|
{
|
|
9
9
|
...c,
|
|
10
10
|
ordered: e.ordered || !1
|
|
11
11
|
},
|
|
12
|
-
|
|
12
|
+
a
|
|
13
13
|
)
|
|
14
14
|
)), e.type) {
|
|
15
15
|
case "mention":
|
|
16
|
-
const c = e.children ? e.children[0].value : void 0, p = c == null ? void 0 : c.match(
|
|
16
|
+
const c = e.children ? e.children[0].value : void 0, p = c == null ? void 0 : c.match(m);
|
|
17
17
|
return {
|
|
18
18
|
type: t.mention,
|
|
19
19
|
category: p[1],
|
|
@@ -23,22 +23,24 @@ function m(e, r) {
|
|
|
23
23
|
case "heading":
|
|
24
24
|
return {
|
|
25
25
|
type: t.heading[e.depth || 1],
|
|
26
|
-
children:
|
|
26
|
+
children: r
|
|
27
27
|
};
|
|
28
28
|
case "list":
|
|
29
29
|
return {
|
|
30
30
|
type: e.ordered ? t.olList : t.ulList,
|
|
31
|
-
children:
|
|
31
|
+
children: r
|
|
32
32
|
};
|
|
33
33
|
case "listItem":
|
|
34
|
-
return { type: t.listItem, children:
|
|
34
|
+
return { type: t.listItem, children: r };
|
|
35
|
+
case "listItemChild":
|
|
36
|
+
return { type: t.listItemChild, children: r };
|
|
35
37
|
case "paragraph":
|
|
36
|
-
return { type: t.paragraph, children:
|
|
38
|
+
return { type: t.paragraph, children: r };
|
|
37
39
|
case "link":
|
|
38
40
|
return {
|
|
39
41
|
type: t.link,
|
|
40
42
|
[i]: e.url,
|
|
41
|
-
children:
|
|
43
|
+
children: r
|
|
42
44
|
};
|
|
43
45
|
case "image":
|
|
44
46
|
return {
|
|
@@ -48,7 +50,7 @@ function m(e, r) {
|
|
|
48
50
|
[h]: e.alt
|
|
49
51
|
};
|
|
50
52
|
case "blockquote":
|
|
51
|
-
return { type: t.blockQuote, children:
|
|
53
|
+
return { type: t.blockQuote, children: r };
|
|
52
54
|
case "code":
|
|
53
55
|
return {
|
|
54
56
|
type: t.codeBlock,
|
|
@@ -64,26 +66,26 @@ function m(e, r) {
|
|
|
64
66
|
case "emphasis":
|
|
65
67
|
return {
|
|
66
68
|
[t.emphasisMark]: !0,
|
|
67
|
-
...l(
|
|
68
|
-
...n(
|
|
69
|
+
...l(r),
|
|
70
|
+
...n(r)
|
|
69
71
|
};
|
|
70
72
|
case "strong":
|
|
71
73
|
return {
|
|
72
74
|
[t.strongMark]: !0,
|
|
73
|
-
...l(
|
|
74
|
-
...n(
|
|
75
|
+
...l(r),
|
|
76
|
+
...n(r)
|
|
75
77
|
};
|
|
76
78
|
case "delete":
|
|
77
79
|
return {
|
|
78
80
|
[t.deleteMark]: !0,
|
|
79
|
-
...l(
|
|
80
|
-
...n(
|
|
81
|
+
...l(r),
|
|
82
|
+
...n(r)
|
|
81
83
|
};
|
|
82
84
|
case "inlineCode":
|
|
83
85
|
return {
|
|
84
86
|
[t.inlineCodeMark]: !0,
|
|
85
87
|
text: e.value,
|
|
86
|
-
...n(
|
|
88
|
+
...n(r)
|
|
87
89
|
};
|
|
88
90
|
case "thematicBreak":
|
|
89
91
|
return {
|
|
@@ -96,16 +98,16 @@ function m(e, r) {
|
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
const o = (e) => !!e && Array.isArray(e) && e.length > 0, l = (e) => ({
|
|
99
|
-
text: e.map((
|
|
100
|
-
}), n = (e) => e.reduce((
|
|
101
|
+
text: e.map((a) => a == null ? void 0 : a.text).join("")
|
|
102
|
+
}), n = (e) => e.reduce((a, t) => {
|
|
101
103
|
for (const i of Object.keys(t))
|
|
102
|
-
i === "children" || i === "type" || i === "text" || (
|
|
103
|
-
return
|
|
104
|
+
i === "children" || i === "type" || i === "text" || (a[i] = t[i]);
|
|
105
|
+
return a;
|
|
104
106
|
}, {}), d = (e) => {
|
|
105
|
-
const
|
|
106
|
-
return { linkDestinationKey:
|
|
107
|
+
const a = e.linkDestinationKey ?? "link", t = e.imageSourceKey ?? "link", i = e.imageCaptionKey ?? "caption";
|
|
108
|
+
return { linkDestinationKey: a, imageSourceKey: t, imageCaptionKey: i };
|
|
107
109
|
};
|
|
108
110
|
export {
|
|
109
|
-
|
|
111
|
+
g as default
|
|
110
112
|
};
|
|
111
113
|
//# sourceMappingURL=deserialize.es.js.map
|
package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialize.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/deserializer/deserialize.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n BlockQuoteNode,\n CodeBlockNode,\n DeserializedNode,\n HeadingNode,\n ImageNode,\n InputNodeTypes,\n ItalicNode,\n LinkNode,\n ListItemNode,\n ListNode,\n MarkdownAstNode,\n OptionType,\n ParagraphNode,\n TextNode,\n ThematicBreakNode,\n} from '../types';\nimport { MENTION_DESERIALIZE_REGEX } from '../utils';\n\nexport default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType) {\n const types = options?.nodeTypes as InputNodeTypes;\n const { linkDestinationKey, imageSourceKey, imageCaptionKey } = getOptions(options);\n\n let children: Array<DeserializedNode<T>> = [{ text: '' }];\n\n if (hasNodeChildren(node.children)) {\n children = node.children.flatMap((c: MarkdownAstNode) =>\n deserialize(\n {\n ...c,\n ordered: node.ordered || false,\n },\n options,\n ),\n );\n }\n\n switch (node.type) {\n case 'mention':\n const value = node.children ? node.children[0].value : undefined;\n const matches = value?.match(MENTION_DESERIALIZE_REGEX) as RegExpMatchArray;\n return {\n type: types.mention,\n category: matches[1],\n id: matches[2],\n children: [{ text: '' }],\n };\n case 'heading':\n return {\n type: types.heading[node.depth || 1],\n children,\n } as HeadingNode<T>;\n case 'list':\n return {\n type: node.ordered ? types.olList : types.ulList,\n children,\n } as ListNode<T>;\n case 'listItem':\n return { type: types.listItem, children } as ListItemNode<T>;\n case 'paragraph':\n return { type: types.paragraph, children } as ParagraphNode<T>;\n case 'link':\n return {\n type: types.link,\n [linkDestinationKey]: node.url,\n children,\n } as LinkNode<T>;\n case 'image':\n return {\n type: types.image,\n children: [{ text: '' }],\n [imageSourceKey]: node.url,\n [imageCaptionKey]: node.alt,\n } as ImageNode<T>;\n case 'blockquote':\n return { type: types.blockQuote, children } as BlockQuoteNode<T>;\n case 'code':\n return {\n type: types.codeBlock,\n language: node.lang ?? undefined,\n children: [{ text: node.value }],\n } as CodeBlockNode<T>;\n\n case 'html':\n if (node.value?.includes('<br>')) {\n return {\n break: true,\n type: types.paragraph,\n children: [{ text: node.value?.replace(/<br>/g, '') || '' }],\n } as ParagraphNode<T>;\n }\n return { type: 'paragraph', children: [{ text: node.value || '' }] };\n\n case 'emphasis':\n return {\n [types.emphasisMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n } as unknown as ItalicNode<T>;\n case 'strong':\n return {\n [types.strongMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'delete':\n return {\n [types.deleteMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'inlineCode':\n return {\n [types.inlineCodeMark as string]: true,\n text: node.value,\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'thematicBreak':\n return {\n type: types.thematicBreak,\n children: [{ text: '' }],\n } as ThematicBreakNode<T>;\n\n case 'text':\n default:\n return { text: node.value ?? '' };\n }\n}\n\nconst hasNodeChildren = (children: MarkdownAstNode['children']): children is MarkdownAstNode[] =>\n !!children && Array.isArray(children) && children.length > 0;\n\nconst forceLeafNode = (children: Array<TextNode>) => ({\n text: children.map((k) => k?.text).join(''),\n});\n\n// This function is will take any unknown keys, and bring them up a level\n// allowing leaf nodes to have many different formats at once\n// for example, bold and italic on the same node\nconst persistLeafFormats = (children: Array<MarkdownAstNode>): Omit<MarkdownAstNode, 'children' | 'type' | 'text'> => {\n return children.reduce((acc, node) => {\n for (const key of Object.keys(node) as Array<keyof MarkdownAstNode>) {\n if (key === 'children' || key === 'type' || key === 'text') {\n continue;\n }\n\n acc[key] = node[key];\n }\n\n return acc;\n }, {});\n};\n\nconst getOptions = (options: OptionType) => {\n const linkDestinationKey = options.linkDestinationKey ?? 'link';\n const imageSourceKey = options.imageSourceKey ?? 'link';\n const imageCaptionKey = options.imageCaptionKey ?? 'caption';\n\n return { linkDestinationKey, imageSourceKey, imageCaptionKey };\n};\n"],"names":["deserialize","node","options","types","linkDestinationKey","imageSourceKey","imageCaptionKey","getOptions","children","hasNodeChildren","value","matches","MENTION_DESERIALIZE_REGEX","_a","_b","forceLeafNode","persistLeafFormats","k","acc","key"],"mappings":";
|
|
1
|
+
{"version":3,"file":"deserialize.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/deserializer/deserialize.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n BlockQuoteNode,\n CodeBlockNode,\n DeserializedNode,\n HeadingNode,\n ImageNode,\n InputNodeTypes,\n ItalicNode,\n LinkNode,\n ListItemChildNode,\n ListItemNode,\n ListNode,\n MarkdownAstNode,\n OptionType,\n ParagraphNode,\n TextNode,\n ThematicBreakNode,\n} from '../types';\nimport { MENTION_DESERIALIZE_REGEX } from '../utils';\n\nexport default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType) {\n const types = options?.nodeTypes as InputNodeTypes;\n const { linkDestinationKey, imageSourceKey, imageCaptionKey } = getOptions(options);\n\n let children: Array<DeserializedNode<T>> = [{ text: '' }];\n\n if (hasNodeChildren(node.children)) {\n children = node.children.flatMap((c: MarkdownAstNode) =>\n deserialize(\n {\n ...c,\n ordered: node.ordered || false,\n },\n options,\n ),\n );\n }\n\n switch (node.type) {\n case 'mention':\n const value = node.children ? node.children[0].value : undefined;\n const matches = value?.match(MENTION_DESERIALIZE_REGEX) as RegExpMatchArray;\n return {\n type: types.mention,\n category: matches[1],\n id: matches[2],\n children: [{ text: '' }],\n };\n case 'heading':\n return {\n type: types.heading[node.depth || 1],\n children,\n } as HeadingNode<T>;\n case 'list':\n return {\n type: node.ordered ? types.olList : types.ulList,\n children,\n } as ListNode<T>;\n case 'listItem':\n return { type: types.listItem, children } as ListItemNode<T>;\n case 'listItemChild':\n return { type: types.listItemChild, children } as ListItemChildNode<T>;\n case 'paragraph':\n return { type: types.paragraph, children } as ParagraphNode<T>;\n case 'link':\n return {\n type: types.link,\n [linkDestinationKey]: node.url,\n children,\n } as LinkNode<T>;\n case 'image':\n return {\n type: types.image,\n children: [{ text: '' }],\n [imageSourceKey]: node.url,\n [imageCaptionKey]: node.alt,\n } as ImageNode<T>;\n case 'blockquote':\n return { type: types.blockQuote, children } as BlockQuoteNode<T>;\n case 'code':\n return {\n type: types.codeBlock,\n language: node.lang ?? undefined,\n children: [{ text: node.value }],\n } as CodeBlockNode<T>;\n\n case 'html':\n if (node.value?.includes('<br>')) {\n return {\n break: true,\n type: types.paragraph,\n children: [{ text: node.value?.replace(/<br>/g, '') || '' }],\n } as ParagraphNode<T>;\n }\n return { type: 'paragraph', children: [{ text: node.value || '' }] };\n\n case 'emphasis':\n return {\n [types.emphasisMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n } as unknown as ItalicNode<T>;\n case 'strong':\n return {\n [types.strongMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'delete':\n return {\n [types.deleteMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'inlineCode':\n return {\n [types.inlineCodeMark as string]: true,\n text: node.value,\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'thematicBreak':\n return {\n type: types.thematicBreak,\n children: [{ text: '' }],\n } as ThematicBreakNode<T>;\n\n case 'text':\n default:\n return { text: node.value ?? '' };\n }\n}\n\nconst hasNodeChildren = (children: MarkdownAstNode['children']): children is MarkdownAstNode[] =>\n !!children && Array.isArray(children) && children.length > 0;\n\nconst forceLeafNode = (children: Array<TextNode>) => ({\n text: children.map((k) => k?.text).join(''),\n});\n\n// This function is will take any unknown keys, and bring them up a level\n// allowing leaf nodes to have many different formats at once\n// for example, bold and italic on the same node\nconst persistLeafFormats = (children: Array<MarkdownAstNode>): Omit<MarkdownAstNode, 'children' | 'type' | 'text'> => {\n return children.reduce((acc, node) => {\n for (const key of Object.keys(node) as Array<keyof MarkdownAstNode>) {\n if (key === 'children' || key === 'type' || key === 'text') {\n continue;\n }\n\n acc[key] = node[key];\n }\n\n return acc;\n }, {});\n};\n\nconst getOptions = (options: OptionType) => {\n const linkDestinationKey = options.linkDestinationKey ?? 'link';\n const imageSourceKey = options.imageSourceKey ?? 'link';\n const imageCaptionKey = options.imageCaptionKey ?? 'caption';\n\n return { linkDestinationKey, imageSourceKey, imageCaptionKey };\n};\n"],"names":["deserialize","node","options","types","linkDestinationKey","imageSourceKey","imageCaptionKey","getOptions","children","hasNodeChildren","value","matches","MENTION_DESERIALIZE_REGEX","_a","_b","forceLeafNode","persistLeafFormats","k","acc","key"],"mappings":"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"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { getPluginType as
|
|
2
|
-
import { TextStyles as
|
|
1
|
+
import { getPluginType as L, ELEMENT_PARAGRAPH as T, ELEMENT_LINK as N, MARK_CODE as _, MARK_BOLD as l, MARK_ITALIC as n, MARK_STRIKETHROUGH as I, ELEMENT_IMAGE as a, ELEMENT_CODE_BLOCK as A, ELEMENT_HR as s, ELEMENT_UL as m, ELEMENT_OL as H, ELEMENT_LI as k, ELEMENT_LIC as p, ELEMENT_H5 as R, ELEMENT_H6 as D, ELEMENT_MENTION as K } from "@udecode/plate";
|
|
2
|
+
import { TextStyles as M } from "../../Plugins/TextStylePlugin/TextStyles/textStyles.es.js";
|
|
3
3
|
const G = (E) => ({
|
|
4
4
|
nodeTypes: {
|
|
5
|
-
paragraph:
|
|
6
|
-
link:
|
|
7
|
-
blockQuote:
|
|
8
|
-
inlineCodeMark:
|
|
9
|
-
strongMark:
|
|
10
|
-
emphasisMark:
|
|
11
|
-
deleteMark:
|
|
12
|
-
image:
|
|
13
|
-
codeBlock:
|
|
14
|
-
thematicBreak:
|
|
15
|
-
ulList:
|
|
16
|
-
olList:
|
|
17
|
-
listItem:
|
|
5
|
+
paragraph: L(E, T),
|
|
6
|
+
link: L(E, N),
|
|
7
|
+
blockQuote: L(E, M.ELEMENT_QUOTE),
|
|
8
|
+
inlineCodeMark: L(E, _),
|
|
9
|
+
strongMark: L(E, l),
|
|
10
|
+
emphasisMark: L(E, n),
|
|
11
|
+
deleteMark: L(E, I),
|
|
12
|
+
image: L(E, a),
|
|
13
|
+
codeBlock: L(E, A),
|
|
14
|
+
thematicBreak: L(E, s),
|
|
15
|
+
ulList: L(E, m),
|
|
16
|
+
olList: L(E, H),
|
|
17
|
+
listItem: L(E, k),
|
|
18
|
+
listItemChild: L(E, p),
|
|
18
19
|
heading: {
|
|
19
|
-
1:
|
|
20
|
-
2:
|
|
21
|
-
3:
|
|
22
|
-
4:
|
|
23
|
-
5:
|
|
24
|
-
6:
|
|
20
|
+
1: L(E, M.ELEMENT_HEADING1),
|
|
21
|
+
2: L(E, M.ELEMENT_HEADING2),
|
|
22
|
+
3: L(E, M.ELEMENT_HEADING3),
|
|
23
|
+
4: L(E, M.ELEMENT_HEADING4),
|
|
24
|
+
5: L(E, R),
|
|
25
|
+
6: L(E, D)
|
|
25
26
|
},
|
|
26
|
-
mention:
|
|
27
|
+
mention: L(E, K)
|
|
27
28
|
},
|
|
28
29
|
linkDestinationKey: "url"
|
|
29
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/options.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { TextStyles } from '@components/RichTextEditor/Plugins/TextStylePlugin/TextStyles';\nimport {\n ELEMENT_CODE_BLOCK,\n ELEMENT_H5,\n ELEMENT_H6,\n ELEMENT_HR,\n ELEMENT_IMAGE,\n ELEMENT_LI,\n ELEMENT_LINK,\n ELEMENT_MENTION,\n ELEMENT_OL,\n ELEMENT_PARAGRAPH,\n ELEMENT_UL,\n MARK_BOLD,\n MARK_CODE,\n MARK_ITALIC,\n MARK_STRIKETHROUGH,\n PlateEditor,\n getPluginType,\n} from '@udecode/plate';\nimport { PartialOptionType } from './types';\n\nexport const options = (editor: PlateEditor): PartialOptionType => ({\n nodeTypes: {\n paragraph: getPluginType(editor, ELEMENT_PARAGRAPH),\n link: getPluginType(editor, ELEMENT_LINK),\n blockQuote: getPluginType(editor, TextStyles.ELEMENT_QUOTE),\n inlineCodeMark: getPluginType(editor, MARK_CODE),\n strongMark: getPluginType(editor, MARK_BOLD),\n emphasisMark: getPluginType(editor, MARK_ITALIC),\n deleteMark: getPluginType(editor, MARK_STRIKETHROUGH),\n image: getPluginType(editor, ELEMENT_IMAGE),\n codeBlock: getPluginType(editor, ELEMENT_CODE_BLOCK),\n thematicBreak: getPluginType(editor, ELEMENT_HR),\n ulList: getPluginType(editor, ELEMENT_UL),\n olList: getPluginType(editor, ELEMENT_OL),\n listItem: getPluginType(editor, ELEMENT_LI),\n heading: {\n 1: getPluginType(editor, TextStyles.ELEMENT_HEADING1),\n 2: getPluginType(editor, TextStyles.ELEMENT_HEADING2),\n 3: getPluginType(editor, TextStyles.ELEMENT_HEADING3),\n 4: getPluginType(editor, TextStyles.ELEMENT_HEADING4),\n 5: getPluginType(editor, ELEMENT_H5),\n 6: getPluginType(editor, ELEMENT_H6),\n },\n mention: getPluginType(editor, ELEMENT_MENTION),\n },\n linkDestinationKey: 'url',\n});\n"],"names":["options","editor","getPluginType","ELEMENT_PARAGRAPH","ELEMENT_LINK","TextStyles","MARK_CODE","MARK_BOLD","MARK_ITALIC","MARK_STRIKETHROUGH","ELEMENT_IMAGE","ELEMENT_CODE_BLOCK","ELEMENT_HR","ELEMENT_UL","ELEMENT_OL","ELEMENT_LI","ELEMENT_H5","ELEMENT_H6","ELEMENT_MENTION"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"options.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/options.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { TextStyles } from '@components/RichTextEditor/Plugins/TextStylePlugin/TextStyles';\nimport {\n ELEMENT_CODE_BLOCK,\n ELEMENT_H5,\n ELEMENT_H6,\n ELEMENT_HR,\n ELEMENT_IMAGE,\n ELEMENT_LI,\n ELEMENT_LIC,\n ELEMENT_LINK,\n ELEMENT_MENTION,\n ELEMENT_OL,\n ELEMENT_PARAGRAPH,\n ELEMENT_UL,\n MARK_BOLD,\n MARK_CODE,\n MARK_ITALIC,\n MARK_STRIKETHROUGH,\n PlateEditor,\n getPluginType,\n} from '@udecode/plate';\nimport { PartialOptionType } from './types';\n\nexport const options = (editor: PlateEditor): PartialOptionType => ({\n nodeTypes: {\n paragraph: getPluginType(editor, ELEMENT_PARAGRAPH),\n link: getPluginType(editor, ELEMENT_LINK),\n blockQuote: getPluginType(editor, TextStyles.ELEMENT_QUOTE),\n inlineCodeMark: getPluginType(editor, MARK_CODE),\n strongMark: getPluginType(editor, MARK_BOLD),\n emphasisMark: getPluginType(editor, MARK_ITALIC),\n deleteMark: getPluginType(editor, MARK_STRIKETHROUGH),\n image: getPluginType(editor, ELEMENT_IMAGE),\n codeBlock: getPluginType(editor, ELEMENT_CODE_BLOCK),\n thematicBreak: getPluginType(editor, ELEMENT_HR),\n ulList: getPluginType(editor, ELEMENT_UL),\n olList: getPluginType(editor, ELEMENT_OL),\n listItem: getPluginType(editor, ELEMENT_LI),\n listItemChild: getPluginType(editor, ELEMENT_LIC),\n heading: {\n 1: getPluginType(editor, TextStyles.ELEMENT_HEADING1),\n 2: getPluginType(editor, TextStyles.ELEMENT_HEADING2),\n 3: getPluginType(editor, TextStyles.ELEMENT_HEADING3),\n 4: getPluginType(editor, TextStyles.ELEMENT_HEADING4),\n 5: getPluginType(editor, ELEMENT_H5),\n 6: getPluginType(editor, ELEMENT_H6),\n },\n mention: getPluginType(editor, ELEMENT_MENTION),\n },\n linkDestinationKey: 'url',\n});\n"],"names":["options","editor","getPluginType","ELEMENT_PARAGRAPH","ELEMENT_LINK","TextStyles","MARK_CODE","MARK_BOLD","MARK_ITALIC","MARK_STRIKETHROUGH","ELEMENT_IMAGE","ELEMENT_CODE_BLOCK","ELEMENT_HR","ELEMENT_UL","ELEMENT_OL","ELEMENT_LI","ELEMENT_LIC","ELEMENT_H5","ELEMENT_H6","ELEMENT_MENTION"],"mappings":";;AAyBa,MAAAA,IAAU,CAACC,OAA4C;AAAA,EAChE,WAAW;AAAA,IACP,WAAWC,EAAcD,GAAQE,CAAiB;AAAA,IAClD,MAAMD,EAAcD,GAAQG,CAAY;AAAA,IACxC,YAAYF,EAAcD,GAAQI,EAAW,aAAa;AAAA,IAC1D,gBAAgBH,EAAcD,GAAQK,CAAS;AAAA,IAC/C,YAAYJ,EAAcD,GAAQM,CAAS;AAAA,IAC3C,cAAcL,EAAcD,GAAQO,CAAW;AAAA,IAC/C,YAAYN,EAAcD,GAAQQ,CAAkB;AAAA,IACpD,OAAOP,EAAcD,GAAQS,CAAa;AAAA,IAC1C,WAAWR,EAAcD,GAAQU,CAAkB;AAAA,IACnD,eAAeT,EAAcD,GAAQW,CAAU;AAAA,IAC/C,QAAQV,EAAcD,GAAQY,CAAU;AAAA,IACxC,QAAQX,EAAcD,GAAQa,CAAU;AAAA,IACxC,UAAUZ,EAAcD,GAAQc,CAAU;AAAA,IAC1C,eAAeb,EAAcD,GAAQe,CAAW;AAAA,IAChD,SAAS;AAAA,MACL,GAAGd,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQgB,CAAU;AAAA,MACnC,GAAGf,EAAcD,GAAQiB,CAAU;AAAA,IACvC;AAAA,IACA,SAAShB,EAAcD,GAAQkB,CAAe;AAAA,EAClD;AAAA,EACA,oBAAoB;AACxB;"}
|
package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { visit as s } from "unist-util-visit";
|
|
2
|
+
function a() {
|
|
3
|
+
return r;
|
|
4
|
+
}
|
|
5
|
+
const r = (t) => {
|
|
6
|
+
s(t, "listItem", i);
|
|
7
|
+
function i(o) {
|
|
8
|
+
const { children: e } = o;
|
|
9
|
+
for (const n of e)
|
|
10
|
+
c(n, "paragraph") && f(n);
|
|
11
|
+
}
|
|
12
|
+
}, c = (t, i) => t.type === i, f = (t) => t.type = "listItemChild";
|
|
13
|
+
export {
|
|
14
|
+
a as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../../../src/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { VisitorResult, visit } from 'unist-util-visit';\nimport { NodeChild, ParagraphNode, RemarkExtension } from '../../types';\n\nexport default function Extension(): RemarkExtension {\n return transformer;\n}\n\nconst transformer = (tree: ParagraphNode) => {\n visit(tree, 'listItem', visitor);\n\n function visitor(node: ParagraphNode): VisitorResult {\n const { children } = node;\n\n for (const child of children) {\n if (!isType(child, 'paragraph')) {\n continue;\n }\n\n changeTypeToListItemChild(child);\n }\n }\n};\n\nconst isType = (node: NodeChild, type: string): boolean => node.type === type;\nconst changeTypeToListItemChild = (node: NodeChild) => (node.type = 'listItemChild');\n"],"names":["Extension","transformer","tree","visit","visitor","node","children","child","isType","changeTypeToListItemChild","type"],"mappings":";AAKA,SAAwBA,IAA6B;AAC1C,SAAAC;AACX;AAEA,MAAMA,IAAc,CAACC,MAAwB;AACnC,EAAAC,EAAAD,GAAM,YAAYE,CAAO;AAE/B,WAASA,EAAQC,GAAoC;AAC3C,UAAA,EAAE,UAAAC,EAAa,IAAAD;AAErB,eAAWE,KAASD;AAChB,MAAKE,EAAOD,GAAO,WAAW,KAI9BE,EAA0BF,CAAK;AAAA,EAEvC;AACJ,GAEMC,IAAS,CAACH,GAAiBK,MAA0BL,EAAK,SAASK,GACnED,IAA4B,CAACJ,MAAqBA,EAAK,OAAO;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { visit as s } from "unist-util-visit";
|
|
2
|
+
import { MENTION_SERIALIZE_REGEX as h } from "../../../utils.es.js";
|
|
3
|
+
function a() {
|
|
4
|
+
return u;
|
|
5
|
+
}
|
|
6
|
+
const u = (t) => {
|
|
7
|
+
s(t, "paragraph", i);
|
|
8
|
+
function i(e) {
|
|
9
|
+
const { children: r } = e;
|
|
10
|
+
e.children = [];
|
|
11
|
+
for (const n of r) {
|
|
12
|
+
if (!o(n, "text") || !n.value) {
|
|
13
|
+
e.children.push(n);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const l = [...n.value.matchAll(h)];
|
|
17
|
+
if (l === null || l.length === 0) {
|
|
18
|
+
e.children.push(n);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
p(l, e, n.value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}, o = (t, i) => t[i] !== "" && !!t.value, p = (t, i, e) => {
|
|
25
|
+
t[0].index > 0 && i.children.push({
|
|
26
|
+
type: "text",
|
|
27
|
+
value: e.slice(0, t[0].index)
|
|
28
|
+
});
|
|
29
|
+
for (const [n, l] of t.entries())
|
|
30
|
+
if (i.children.push({
|
|
31
|
+
type: "mention",
|
|
32
|
+
children: [{ type: "text", value: l[0] }]
|
|
33
|
+
}), t.length > n + 1 && e) {
|
|
34
|
+
const c = l.index + l[0].length;
|
|
35
|
+
i.children.push({
|
|
36
|
+
type: "text",
|
|
37
|
+
value: e.slice(c, t[n + 1].index)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const r = t[t.length - 1];
|
|
41
|
+
r.index + r[0].length < e.length ? i.children.push({
|
|
42
|
+
type: "text",
|
|
43
|
+
value: e.slice(r.index + r[0].length)
|
|
44
|
+
}) : i.children.push({
|
|
45
|
+
type: "text",
|
|
46
|
+
value: ""
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
a as default
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../../../src/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { VisitorResult, visit } from 'unist-util-visit';\nimport { NodeChild, NodeChildKey, ParagraphNode, RemarkExtension } from '../../types';\nimport { MENTION_SERIALIZE_REGEX } from '../../../utils';\nimport { RegExpMatchArray } from './types';\n\nexport default function Extension(): RemarkExtension {\n return transformer;\n}\n\nconst transformer = (tree: ParagraphNode) => {\n visit(tree, 'paragraph', visitor);\n\n function visitor(node: ParagraphNode): VisitorResult {\n const { children } = node;\n node.children = [];\n\n for (const child of children) {\n if (!is(child, 'text') || !child.value) {\n node.children.push(child);\n continue;\n }\n\n const matches = [...child.value.matchAll(MENTION_SERIALIZE_REGEX)] as RegExpMatchArray[];\n\n if (matches === null || matches.length === 0) {\n node.children.push(child);\n continue;\n }\n\n createNodes(matches, node, child.value);\n }\n }\n};\n\nconst is = (node: NodeChild, key: NodeChildKey): boolean => node[key] !== '' && !!node.value;\n\nconst createNodes = (matches: RegExpMatchArray[], node: ParagraphNode, value: string) => {\n if (matches[0].index > 0) {\n node.children.push({\n type: 'text',\n value: value.slice(0, matches[0].index),\n });\n }\n\n for (const [index, match] of matches.entries()) {\n node.children.push({\n type: 'mention',\n children: [{ type: 'text', value: match[0] }],\n });\n\n if (matches.length > index + 1 && value) {\n const startAt = match.index + match[0].length;\n node.children.push({\n type: 'text',\n value: value.slice(startAt, matches[index + 1].index),\n });\n }\n }\n\n const lastMatch = matches[matches.length - 1];\n\n if (lastMatch.index + lastMatch[0].length < value.length) {\n node.children.push({\n type: 'text',\n value: value.slice(lastMatch.index + lastMatch[0].length),\n });\n } else {\n node.children.push({\n type: 'text',\n value: '',\n });\n }\n};\n"],"names":["Extension","transformer","tree","visit","visitor","node","children","child","is","matches","MENTION_SERIALIZE_REGEX","createNodes","key","value","index","match","startAt","lastMatch"],"mappings":";;AAOA,SAAwBA,IAA6B;AAC1C,SAAAC;AACX;AAEA,MAAMA,IAAc,CAACC,MAAwB;AACnC,EAAAC,EAAAD,GAAM,aAAaE,CAAO;AAEhC,WAASA,EAAQC,GAAoC;AAC3C,UAAA,EAAE,UAAAC,EAAa,IAAAD;AACrB,IAAAA,EAAK,WAAW;AAEhB,eAAWE,KAASD,GAAU;AAC1B,UAAI,CAACE,EAAGD,GAAO,MAAM,KAAK,CAACA,EAAM,OAAO;AAC/B,QAAAF,EAAA,SAAS,KAAKE,CAAK;AACxB;AAAA,MACJ;AAEA,YAAME,IAAU,CAAC,GAAGF,EAAM,MAAM,SAASG,CAAuB,CAAC;AAEjE,UAAID,MAAY,QAAQA,EAAQ,WAAW,GAAG;AACrC,QAAAJ,EAAA,SAAS,KAAKE,CAAK;AACxB;AAAA,MACJ;AAEY,MAAAI,EAAAF,GAASJ,GAAME,EAAM,KAAK;AAAA,IAC1C;AAAA,EACJ;AACJ,GAEMC,IAAK,CAACH,GAAiBO,MAA+BP,EAAKO,CAAG,MAAM,MAAM,CAAC,CAACP,EAAK,OAEjFM,IAAc,CAACF,GAA6BJ,GAAqBQ,MAAkB;AACrF,EAAIJ,EAAQ,CAAC,EAAE,QAAQ,KACnBJ,EAAK,SAAS,KAAK;AAAA,IACf,MAAM;AAAA,IACN,OAAOQ,EAAM,MAAM,GAAGJ,EAAQ,CAAC,EAAE,KAAK;AAAA,EAAA,CACzC;AAGL,aAAW,CAACK,GAAOC,CAAK,KAAKN,EAAQ;AAMjC,QALAJ,EAAK,SAAS,KAAK;AAAA,MACf,MAAM;AAAA,MACN,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAOU,EAAM,CAAC,GAAG;AAAA,IAAA,CAC/C,GAEGN,EAAQ,SAASK,IAAQ,KAAKD,GAAO;AACrC,YAAMG,IAAUD,EAAM,QAAQA,EAAM,CAAC,EAAE;AACvC,MAAAV,EAAK,SAAS,KAAK;AAAA,QACf,MAAM;AAAA,QACN,OAAOQ,EAAM,MAAMG,GAASP,EAAQK,IAAQ,CAAC,EAAE,KAAK;AAAA,MAAA,CACvD;AAAA,IACL;AAGJ,QAAMG,IAAYR,EAAQA,EAAQ,SAAS,CAAC;AAE5C,EAAIQ,EAAU,QAAQA,EAAU,CAAC,EAAE,SAASJ,EAAM,SAC9CR,EAAK,SAAS,KAAK;AAAA,IACf,MAAM;AAAA,IACN,OAAOQ,EAAM,MAAMI,EAAU,QAAQA,EAAU,CAAC,EAAE,MAAM;AAAA,EAAA,CAC3D,IAEDZ,EAAK,SAAS,KAAK;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,EAAA,CACV;AAET;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import e from "./extensions/mention/index.es.js";
|
|
2
|
+
import s from "./extensions/list/index.es.js";
|
|
3
|
+
const r = (o) => {
|
|
4
|
+
const n = /* @__PURE__ */ new Map();
|
|
5
|
+
n.set("mentionExtension", e()), n.set("listExtension", s());
|
|
6
|
+
for (const t of n.values())
|
|
7
|
+
t(o);
|
|
8
|
+
}, x = () => r;
|
|
9
|
+
export {
|
|
10
|
+
x as remarkFondue
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/remarkFondue/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ParagraphNode, RemarkExtension } from './types';\nimport remarkMention from './extensions/mention';\nimport remarkList from './extensions/list';\n\nconst transformer = (tree: ParagraphNode) => {\n const extensions = new Map<string, RemarkExtension>();\n\n extensions.set('mentionExtension', remarkMention());\n extensions.set('listExtension', remarkList());\n\n for (const extension of extensions.values()) {\n extension(tree);\n }\n};\n\nexport const remarkFondue = () => transformer;\n"],"names":["transformer","tree","extensions","remarkMention","remarkList","extension","remarkFondue"],"mappings":";;AAMA,MAAMA,IAAc,CAACC,MAAwB;AACnC,QAAAC,wBAAiB;AAEZ,EAAAA,EAAA,IAAI,oBAAoBC,EAAe,CAAA,GACvCD,EAAA,IAAI,iBAAiBE,EAAY,CAAA;AAEjC,aAAAC,KAAaH,EAAW;AAC/B,IAAAG,EAAUJ,CAAI;AAEtB,GAEaK,IAAe,MAAMN;"}
|
package/dist/components/RichTextEditor/serializer/markdown/{remarkMention → remarkFondue}/types.d.ts
RENAMED
|
@@ -4,13 +4,9 @@ export type NodeChild = {
|
|
|
4
4
|
text?: string;
|
|
5
5
|
children?: NodeChild[];
|
|
6
6
|
};
|
|
7
|
-
export type NodeChildKey = keyof NodeChild;
|
|
8
7
|
export type ParagraphNode = {
|
|
9
8
|
type: string;
|
|
10
9
|
children: NodeChild[];
|
|
11
10
|
};
|
|
12
|
-
export type
|
|
13
|
-
export type
|
|
14
|
-
index: number;
|
|
15
|
-
input: string;
|
|
16
|
-
};
|
|
11
|
+
export type NodeChildKey = keyof NodeChild;
|
|
12
|
+
export type RemarkExtension = (tree: ParagraphNode) => void;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import i from "escape-html";
|
|
2
2
|
import { isLeafNode as p } from "./isLeafNode.es.js";
|
|
3
|
-
const u = (o) => `@[${o.category}:${o.id}]`,
|
|
3
|
+
const u = (o) => `@[${o.category}:${o.id}]`, l = (o) => `${o}
|
|
4
|
+
`, g = (o, t, s, r) => {
|
|
4
5
|
const a = s && s.parentType === o.olList, c = s.children.length === 1 && p(s.children[0]);
|
|
5
6
|
let e = "";
|
|
6
7
|
for (let n = 0; r > n; n++)
|
|
7
8
|
a ? e += " " : e += " ";
|
|
8
9
|
return `${e}${a ? "1." : "-"} ${t}${c ? `
|
|
9
10
|
` : ""}`;
|
|
10
|
-
},
|
|
11
|
+
}, m = (o, t, s, r) => (r === t.codeBlock || s === t.codeBlock || (o = i(o)), o), L = (o, t, s, r, a, c) => {
|
|
11
12
|
const e = o.nodeTypes;
|
|
12
13
|
switch (a) {
|
|
13
14
|
case e.heading[1]:
|
|
@@ -49,6 +50,8 @@ ${t}
|
|
|
49
50
|
`;
|
|
50
51
|
case e.listItem:
|
|
51
52
|
return g(e, t, s, r);
|
|
53
|
+
case e.listItemChild:
|
|
54
|
+
return l(t);
|
|
52
55
|
case e.paragraph:
|
|
53
56
|
return `${t}
|
|
54
57
|
`;
|
|
@@ -60,10 +63,10 @@ ${t}
|
|
|
60
63
|
case e.mention:
|
|
61
64
|
return u(s);
|
|
62
65
|
default:
|
|
63
|
-
return
|
|
66
|
+
return m(t, e, a, c);
|
|
64
67
|
}
|
|
65
68
|
};
|
|
66
69
|
export {
|
|
67
|
-
|
|
70
|
+
L as applyFormattingToBlockNode
|
|
68
71
|
};
|
|
69
72
|
//# sourceMappingURL=applyFormattingToBlockNode.es.js.map
|