@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.
Files changed (34) hide show
  1. package/dist/components/RichTextEditor/RichTextEditor.es.js +25 -23
  2. package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -1
  3. package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js +3 -3
  4. package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js.map +1 -1
  5. package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.d.ts +2 -2
  6. package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js +30 -28
  7. package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js.map +1 -1
  8. package/dist/components/RichTextEditor/serializer/markdown/options.es.js +23 -22
  9. package/dist/components/RichTextEditor/serializer/markdown/options.es.js.map +1 -1
  10. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.d.ts +2 -0
  11. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js +16 -0
  12. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js.map +1 -0
  13. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.d.ts +2 -0
  14. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js +52 -0
  15. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js.map +1 -0
  16. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/types.d.ts +4 -0
  17. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.d.ts +2 -0
  18. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js +12 -0
  19. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js.map +1 -0
  20. package/dist/components/RichTextEditor/serializer/markdown/{remarkMention → remarkFondue}/types.d.ts +2 -6
  21. package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js +7 -4
  22. package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js.map +1 -1
  23. package/dist/components/RichTextEditor/serializer/markdown/types.d.ts +7 -2
  24. package/dist/components/RichTextEditor/serializer/markdown/types.es.js +1 -0
  25. package/dist/components/RichTextEditor/serializer/markdown/types.es.js.map +1 -1
  26. package/dist/index.cjs.js +20 -19
  27. package/dist/index.cjs.js.map +1 -1
  28. package/dist/index.umd.js +24 -23
  29. package/dist/index.umd.js.map +1 -1
  30. package/dist/styles.css +1 -1
  31. package/package.json +1 -1
  32. package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.d.ts +0 -3
  33. package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js +0 -49
  34. package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js.map +0 -1
@@ -1,13 +1,13 @@
1
- import { useMemoizedId as V } from "../../hooks/useMemoizedId.es.js";
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 x } from "./ContentReplacement.es.js";
5
- import { RichTextEditorProvider as C } from "./context/RichTextEditorContext.es.js";
6
- import { defaultPlugins as D } from "./Plugins/index.es.js";
7
- import { PaddingSizes as F } from "./types.es.js";
8
- import { defaultDesignTokens as w } from "./utils/defaultDesignTokens.es.js";
9
- import { useEditorState as z } from "./hooks/useEditorState.es.js";
10
- import { KEY_ELEMENT_BREAK_AFTER_COLUMN as G, GAP_DEFAULT as I } from "./Plugins/ColumnBreakPlugin/createColumnBreakPlugin.es.js";
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 = w,
22
+ designTokens: E = F,
23
23
  onTextChange: u,
24
- onBlur: a,
25
- padding: T = F.None,
24
+ onBlur: l,
25
+ padding: T = D.None,
26
26
  position: R = K.FLOATING,
27
- plugins: r = D,
27
+ plugins: r = C,
28
28
  updateValueOnChange: y = !1,
29
29
  onValueChanged: h,
30
30
  border: L = !0
31
31
  }) => {
32
- var l, s;
33
- const i = V(d), { localValue: N, onChange: g, memoizedValue: P, config: n } = z({
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 === G), _ = ((l = e == null ? void 0 : e.options) == null ? void 0 : l.columns) ?? 1, A = ((s = e == null ? void 0 : e.options) == null ? void 0 : s.gap) ?? I, O = {
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 S = {
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", { ...S }, o);
49
+ return /* @__PURE__ */ t.createElement("span", { ...A }, o);
50
50
  },
51
51
  readOnly: f,
52
- onBlur: () => a && a(JSON.stringify(N.current)),
52
+ onBlur: () => l && l(JSON.stringify(N.current)),
53
53
  className: `${T}`,
54
54
  style: {
55
- columns: _,
56
- columnGap: A
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
- C,
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: O,
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(x, { value: M({ editorId: i, raw: m, plugins: r }) })
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 { EditableProps, RenderPlaceholderProps } from 'slate-react/dist/components/editable';\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: EditableProps = {\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 };\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,IAA+B;AAAA,IACjC,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,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;"}
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 "./remarkMention/index.es.js";
8
- class M extends i {
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
- M as MarkdownToSlate
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 remarkMention from './remarkMention';\n\nexport class MarkdownToSlate extends MarkdownTransformer<string, NodeType[]> {\n process(value: string): NodeType[] {\n return unified()\n .use(parse)\n .use(remarkGfm)\n .use(remarkMention)\n .use(deserializer, options(this.editor))\n .processSync(value).result as NodeType[];\n }\n}\n"],"names":["MarkdownToSlate","MarkdownTransformer","value","unified","parse","remarkGfm","remarkMention","deserializer","options"],"mappings":";;;;;;;AAWO,MAAMA,UAAwBC,EAAwC;AAAA,EACzE,QAAQC,GAA2B;AACxB,WAAAC,EAAA,EACF,IAAIC,CAAK,EACT,IAAIC,CAAS,EACb,IAAIC,CAAa,EACjB,IAAIC,GAAcC,EAAQ,KAAK,MAAM,CAAC,EACtC,YAAYN,CAAK,EAAE;AAAA,EAC5B;AACJ;"}
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 g } from "../utils.es.js";
2
- function m(e, r) {
1
+ import { MENTION_DESERIALIZE_REGEX as m } from "../utils.es.js";
2
+ function g(e, a) {
3
3
  var s, u;
4
- const t = r == null ? void 0 : r.nodeTypes, { linkDestinationKey: i, imageSourceKey: y, imageCaptionKey: h } = d(r);
5
- let a = [{ text: "" }];
6
- switch (o(e.children) && (a = e.children.flatMap(
7
- (c) => m(
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
- r
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(g);
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: a
26
+ children: r
27
27
  };
28
28
  case "list":
29
29
  return {
30
30
  type: e.ordered ? t.olList : t.ulList,
31
- children: a
31
+ children: r
32
32
  };
33
33
  case "listItem":
34
- return { type: t.listItem, children: a };
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: a };
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: a
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: a };
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(a),
68
- ...n(a)
69
+ ...l(r),
70
+ ...n(r)
69
71
  };
70
72
  case "strong":
71
73
  return {
72
74
  [t.strongMark]: !0,
73
- ...l(a),
74
- ...n(a)
75
+ ...l(r),
76
+ ...n(r)
75
77
  };
76
78
  case "delete":
77
79
  return {
78
80
  [t.deleteMark]: !0,
79
- ...l(a),
80
- ...n(a)
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(a)
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((r) => r == null ? void 0 : r.text).join("")
100
- }), n = (e) => e.reduce((r, t) => {
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" || (r[i] = t[i]);
103
- return r;
104
+ i === "children" || i === "type" || i === "text" || (a[i] = t[i]);
105
+ return a;
104
106
  }, {}), d = (e) => {
105
- const r = e.linkDestinationKey ?? "link", t = e.imageSourceKey ?? "link", i = e.imageCaptionKey ?? "caption";
106
- return { linkDestinationKey: r, imageSourceKey: t, imageCaptionKey: i };
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
- m as default
111
+ g as default
110
112
  };
111
113
  //# sourceMappingURL=deserialize.es.js.map
@@ -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":";AAqBwB,SAAAA,EAAsCC,GAAuBC,GAAqB;;AACtG,QAAMC,IAAQD,KAAA,gBAAAA,EAAS,WACjB,EAAE,oBAAAE,GAAoB,gBAAAC,GAAgB,iBAAAC,EAAgB,IAAIC,EAAWL,CAAO;AAElF,MAAIM,IAAuC,CAAC,EAAE,MAAM,GAAI,CAAA;AAcxD,UAZIC,EAAgBR,EAAK,QAAQ,MAC7BO,IAAWP,EAAK,SAAS;AAAA,IAAQ,CAAC,MAC9BD;AAAA,MACI;AAAA,QACI,GAAG;AAAA,QACH,SAASC,EAAK,WAAW;AAAA,MAC7B;AAAA,MACAC;AAAA,IACJ;AAAA,EAAA,IAIAD,EAAK,MAAM;AAAA,IACf,KAAK;AACD,YAAMS,IAAQT,EAAK,WAAWA,EAAK,SAAS,CAAC,EAAE,QAAQ,QACjDU,IAAUD,KAAA,gBAAAA,EAAO,MAAME;AACtB,aAAA;AAAA,QACH,MAAMT,EAAM;AAAA,QACZ,UAAUQ,EAAQ,CAAC;AAAA,QACnB,IAAIA,EAAQ,CAAC;AAAA,QACb,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,MAAA;AAAA,IAE/B,KAAK;AACM,aAAA;AAAA,QACH,MAAMR,EAAM,QAAQF,EAAK,SAAS,CAAC;AAAA,QACnC,UAAAO;AAAA,MAAA;AAAA,IAER,KAAK;AACM,aAAA;AAAA,QACH,MAAMP,EAAK,UAAUE,EAAM,SAASA,EAAM;AAAA,QAC1C,UAAAK;AAAA,MAAA;AAAA,IAER,KAAK;AACD,aAAO,EAAE,MAAML,EAAM,UAAU,UAAAK,EAAS;AAAA,IAC5C,KAAK;AACD,aAAO,EAAE,MAAML,EAAM,WAAW,UAAAK,EAAS;AAAA,IAC7C,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,CAACC,CAAkB,GAAGH,EAAK;AAAA,QAC3B,UAAAO;AAAA,MAAA;AAAA,IAER,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,QACvB,CAACE,CAAc,GAAGJ,EAAK;AAAA,QACvB,CAACK,CAAe,GAAGL,EAAK;AAAA,MAAA;AAAA,IAEhC,KAAK;AACD,aAAO,EAAE,MAAME,EAAM,YAAY,UAAAK,EAAS;AAAA,IAC9C,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,UAAUF,EAAK,QAAQ;AAAA,QACvB,UAAU,CAAC,EAAE,MAAMA,EAAK,OAAO;AAAA,MAAA;AAAA,IAGvC,KAAK;AACD,cAAIY,IAAAZ,EAAK,UAAL,QAAAY,EAAY,SAAS,UACd;AAAA,QACH,OAAO;AAAA,QACP,MAAMV,EAAM;AAAA,QACZ,UAAU,CAAC,EAAE,QAAMW,IAAAb,EAAK,UAAL,gBAAAa,EAAY,QAAQ,SAAS,QAAO,IAAI;AAAA,MAAA,IAG5D,EAAE,MAAM,aAAa,UAAU,CAAC,EAAE,MAAMb,EAAK,SAAS,GAAI,CAAA;IAErE,KAAK;AACM,aAAA;AAAA,QACH,CAACE,EAAM,YAAsB,GAAG;AAAA,QAChC,GAAGY,EAAcP,CAA2B;AAAA,QAC5C,GAAGQ,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,CAACL,EAAM,UAAoB,GAAG;AAAA,QAC9B,GAAGY,EAAcP,CAA2B;AAAA,QAC5C,GAAGQ,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,CAACL,EAAM,UAAoB,GAAG;AAAA,QAC9B,GAAGY,EAAcP,CAA2B;AAAA,QAC5C,GAAGQ,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,CAACL,EAAM,cAAwB,GAAG;AAAA,QAClC,MAAMF,EAAK;AAAA,QACX,GAAGe,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,MAAA;AAAA,IAG/B,KAAK;AAAA,IACL;AACI,aAAO,EAAE,MAAMF,EAAK,SAAS,GAAG;AAAA,EACxC;AACJ;AAEA,MAAMQ,IAAkB,CAACD,MACrB,CAAC,CAACA,KAAY,MAAM,QAAQA,CAAQ,KAAKA,EAAS,SAAS,GAEzDO,IAAgB,CAACP,OAA+B;AAAA,EAClD,MAAMA,EAAS,IAAI,CAACS,MAAMA,KAAA,gBAAAA,EAAG,IAAI,EAAE,KAAK,EAAE;AAC9C,IAKMD,IAAqB,CAACR,MACjBA,EAAS,OAAO,CAACU,GAAKjB,MAAS;AAClC,aAAWkB,KAAO,OAAO,KAAKlB,CAAI;AAC9B,IAAIkB,MAAQ,cAAcA,MAAQ,UAAUA,MAAQ,WAIhDD,EAAAC,CAAG,IAAIlB,EAAKkB,CAAG;AAGhB,SAAAD;AACX,GAAG,CAAE,CAAA,GAGHX,IAAa,CAACL,MAAwB;AAClC,QAAAE,IAAqBF,EAAQ,sBAAsB,QACnDG,IAAiBH,EAAQ,kBAAkB,QAC3CI,IAAkBJ,EAAQ,mBAAmB;AAE5C,SAAA,EAAE,oBAAAE,GAAoB,gBAAAC,GAAgB,iBAAAC;AACjD;"}
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":";AAsBwB,SAAAA,EAAsCC,GAAuBC,GAAqB;;AACtG,QAAMC,IAAQD,KAAA,gBAAAA,EAAS,WACjB,EAAE,oBAAAE,GAAoB,gBAAAC,GAAgB,iBAAAC,EAAgB,IAAIC,EAAWL,CAAO;AAElF,MAAIM,IAAuC,CAAC,EAAE,MAAM,GAAI,CAAA;AAcxD,UAZIC,EAAgBR,EAAK,QAAQ,MAC7BO,IAAWP,EAAK,SAAS;AAAA,IAAQ,CAAC,MAC9BD;AAAA,MACI;AAAA,QACI,GAAG;AAAA,QACH,SAASC,EAAK,WAAW;AAAA,MAC7B;AAAA,MACAC;AAAA,IACJ;AAAA,EAAA,IAIAD,EAAK,MAAM;AAAA,IACf,KAAK;AACD,YAAMS,IAAQT,EAAK,WAAWA,EAAK,SAAS,CAAC,EAAE,QAAQ,QACjDU,IAAUD,KAAA,gBAAAA,EAAO,MAAME;AACtB,aAAA;AAAA,QACH,MAAMT,EAAM;AAAA,QACZ,UAAUQ,EAAQ,CAAC;AAAA,QACnB,IAAIA,EAAQ,CAAC;AAAA,QACb,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,MAAA;AAAA,IAE/B,KAAK;AACM,aAAA;AAAA,QACH,MAAMR,EAAM,QAAQF,EAAK,SAAS,CAAC;AAAA,QACnC,UAAAO;AAAA,MAAA;AAAA,IAER,KAAK;AACM,aAAA;AAAA,QACH,MAAMP,EAAK,UAAUE,EAAM,SAASA,EAAM;AAAA,QAC1C,UAAAK;AAAA,MAAA;AAAA,IAER,KAAK;AACD,aAAO,EAAE,MAAML,EAAM,UAAU,UAAAK,EAAS;AAAA,IAC5C,KAAK;AACD,aAAO,EAAE,MAAML,EAAM,eAAe,UAAAK,EAAS;AAAA,IACjD,KAAK;AACD,aAAO,EAAE,MAAML,EAAM,WAAW,UAAAK,EAAS;AAAA,IAC7C,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,CAACC,CAAkB,GAAGH,EAAK;AAAA,QAC3B,UAAAO;AAAA,MAAA;AAAA,IAER,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,QACvB,CAACE,CAAc,GAAGJ,EAAK;AAAA,QACvB,CAACK,CAAe,GAAGL,EAAK;AAAA,MAAA;AAAA,IAEhC,KAAK;AACD,aAAO,EAAE,MAAME,EAAM,YAAY,UAAAK,EAAS;AAAA,IAC9C,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,UAAUF,EAAK,QAAQ;AAAA,QACvB,UAAU,CAAC,EAAE,MAAMA,EAAK,OAAO;AAAA,MAAA;AAAA,IAGvC,KAAK;AACD,cAAIY,IAAAZ,EAAK,UAAL,QAAAY,EAAY,SAAS,UACd;AAAA,QACH,OAAO;AAAA,QACP,MAAMV,EAAM;AAAA,QACZ,UAAU,CAAC,EAAE,QAAMW,IAAAb,EAAK,UAAL,gBAAAa,EAAY,QAAQ,SAAS,QAAO,IAAI;AAAA,MAAA,IAG5D,EAAE,MAAM,aAAa,UAAU,CAAC,EAAE,MAAMb,EAAK,SAAS,GAAI,CAAA;IAErE,KAAK;AACM,aAAA;AAAA,QACH,CAACE,EAAM,YAAsB,GAAG;AAAA,QAChC,GAAGY,EAAcP,CAA2B;AAAA,QAC5C,GAAGQ,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,CAACL,EAAM,UAAoB,GAAG;AAAA,QAC9B,GAAGY,EAAcP,CAA2B;AAAA,QAC5C,GAAGQ,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,CAACL,EAAM,UAAoB,GAAG;AAAA,QAC9B,GAAGY,EAAcP,CAA2B;AAAA,QAC5C,GAAGQ,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,CAACL,EAAM,cAAwB,GAAG;AAAA,QAClC,MAAMF,EAAK;AAAA,QACX,GAAGe,EAAmBR,CAAkC;AAAA,MAAA;AAAA,IAEhE,KAAK;AACM,aAAA;AAAA,QACH,MAAML,EAAM;AAAA,QACZ,UAAU,CAAC,EAAE,MAAM,IAAI;AAAA,MAAA;AAAA,IAG/B,KAAK;AAAA,IACL;AACI,aAAO,EAAE,MAAMF,EAAK,SAAS,GAAG;AAAA,EACxC;AACJ;AAEA,MAAMQ,IAAkB,CAACD,MACrB,CAAC,CAACA,KAAY,MAAM,QAAQA,CAAQ,KAAKA,EAAS,SAAS,GAEzDO,IAAgB,CAACP,OAA+B;AAAA,EAClD,MAAMA,EAAS,IAAI,CAACS,MAAMA,KAAA,gBAAAA,EAAG,IAAI,EAAE,KAAK,EAAE;AAC9C,IAKMD,IAAqB,CAACR,MACjBA,EAAS,OAAO,CAACU,GAAKjB,MAAS;AAClC,aAAWkB,KAAO,OAAO,KAAKlB,CAAI;AAC9B,IAAIkB,MAAQ,cAAcA,MAAQ,UAAUA,MAAQ,WAIhDD,EAAAC,CAAG,IAAIlB,EAAKkB,CAAG;AAGhB,SAAAD;AACX,GAAG,CAAE,CAAA,GAGHX,IAAa,CAACL,MAAwB;AAClC,QAAAE,IAAqBF,EAAQ,sBAAsB,QACnDG,IAAiBH,EAAQ,kBAAkB,QAC3CI,IAAkBJ,EAAQ,mBAAmB;AAE5C,SAAA,EAAE,oBAAAE,GAAoB,gBAAAC,GAAgB,iBAAAC;AACjD;"}
@@ -1,29 +1,30 @@
1
- import { getPluginType as M, ELEMENT_PARAGRAPH as T, ELEMENT_LINK as N, MARK_CODE as _, MARK_BOLD as n, MARK_ITALIC as a, MARK_STRIKETHROUGH as A, ELEMENT_IMAGE as l, ELEMENT_CODE_BLOCK as I, ELEMENT_HR as s, ELEMENT_UL as H, ELEMENT_OL as k, ELEMENT_LI as m, ELEMENT_H5 as p, ELEMENT_H6 as R, ELEMENT_MENTION as D } from "@udecode/plate";
2
- import { TextStyles as L } from "../../Plugins/TextStylePlugin/TextStyles/textStyles.es.js";
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: M(E, T),
6
- link: M(E, N),
7
- blockQuote: M(E, L.ELEMENT_QUOTE),
8
- inlineCodeMark: M(E, _),
9
- strongMark: M(E, n),
10
- emphasisMark: M(E, a),
11
- deleteMark: M(E, A),
12
- image: M(E, l),
13
- codeBlock: M(E, I),
14
- thematicBreak: M(E, s),
15
- ulList: M(E, H),
16
- olList: M(E, k),
17
- listItem: M(E, m),
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: M(E, L.ELEMENT_HEADING1),
20
- 2: M(E, L.ELEMENT_HEADING2),
21
- 3: M(E, L.ELEMENT_HEADING3),
22
- 4: M(E, L.ELEMENT_HEADING4),
23
- 5: M(E, p),
24
- 6: M(E, R)
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: M(E, D)
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":";;AAwBa,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,SAAS;AAAA,MACL,GAAGb,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,GAAQe,CAAU;AAAA,MACnC,GAAGd,EAAcD,GAAQgB,CAAU;AAAA,IACvC;AAAA,IACA,SAASf,EAAcD,GAAQiB,CAAe;AAAA,EAClD;AAAA,EACA,oBAAoB;AACxB;"}
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;"}
@@ -0,0 +1,2 @@
1
+ import { RemarkExtension } from '../../types';
2
+ export default function Extension(): RemarkExtension;
@@ -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,2 @@
1
+ import { RemarkExtension } from '../../types';
2
+ export default function Extension(): RemarkExtension;
@@ -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,4 @@
1
+ export type RegExpMatchArray = string[] & {
2
+ index: number;
3
+ input: string;
4
+ };
@@ -0,0 +1,2 @@
1
+ import { ParagraphNode } from './types';
2
+ export declare const remarkFondue: () => (tree: ParagraphNode) => void;
@@ -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;"}
@@ -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 Transformer = (tree: ParagraphNode) => void;
13
- export type RegExpMatchArray = string[] & {
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}]`, g = (o, t, s, r) => {
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
- }, l = (o, t, s, r) => (r === t.codeBlock || s === t.codeBlock || (o = i(o)), o), d = (o, t, s, r, a, c) => {
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 l(t, e, a, c);
66
+ return m(t, e, a, c);
64
67
  }
65
68
  };
66
69
  export {
67
- d as applyFormattingToBlockNode
70
+ L as applyFormattingToBlockNode
68
71
  };
69
72
  //# sourceMappingURL=applyFormattingToBlockNode.es.js.map