@frontify/fondue 12.0.0-beta.133 → 12.0.0-beta.135

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 (42) hide show
  1. package/dist/components/RichTextEditor/Plugins/AlignPlugin/AlignPlugin.es.js +1 -1
  2. package/dist/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListButton/CheckboxListToolbarButton.es.js +17 -15
  3. package/dist/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListButton/CheckboxListToolbarButton.es.js.map +1 -1
  4. package/dist/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListElement.es.js +28 -19
  5. package/dist/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListElement.es.js.map +1 -1
  6. package/dist/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/DropdownItem.es.js +16 -17
  7. package/dist/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/DropdownItem.es.js.map +1 -1
  8. package/dist/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/useSelectedTextStyles.es.js +14 -15
  9. package/dist/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/useSelectedTextStyles.es.js.map +1 -1
  10. package/dist/components/RichTextEditor/Plugins/TextStylePlugin/TextStyles/textStyles.es.js +8 -8
  11. package/dist/components/RichTextEditor/Plugins/TextStylePlugin/TextStyles/textStyles.es.js.map +1 -1
  12. package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js +3 -3
  13. package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js.map +1 -1
  14. package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.d.ts +2 -2
  15. package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js +30 -28
  16. package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js.map +1 -1
  17. package/dist/components/RichTextEditor/serializer/markdown/options.es.js +23 -22
  18. package/dist/components/RichTextEditor/serializer/markdown/options.es.js.map +1 -1
  19. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.d.ts +2 -0
  20. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js +16 -0
  21. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js.map +1 -0
  22. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.d.ts +2 -0
  23. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js +52 -0
  24. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js.map +1 -0
  25. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/types.d.ts +4 -0
  26. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.d.ts +2 -0
  27. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js +12 -0
  28. package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js.map +1 -0
  29. package/dist/components/RichTextEditor/serializer/markdown/{remarkMention → remarkFondue}/types.d.ts +2 -6
  30. package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js +7 -4
  31. package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js.map +1 -1
  32. package/dist/components/RichTextEditor/serializer/markdown/types.d.ts +7 -2
  33. package/dist/components/RichTextEditor/serializer/markdown/types.es.js +1 -0
  34. package/dist/components/RichTextEditor/serializer/markdown/types.es.js.map +1 -1
  35. package/dist/index.cjs.js +26 -25
  36. package/dist/index.cjs.js.map +1 -1
  37. package/dist/index.umd.js +26 -25
  38. package/dist/index.umd.js.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.d.ts +0 -3
  41. package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js +0 -49
  42. package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { createAlignPlugin as T, ELEMENT_PARAGRAPH as M, ELEMENT_LIC as N } from "@udecode/plate";
2
2
  import { Plugin as _ } from "../Plugin.es.js";
3
- import { ELEMENT_CHECK_ITEM as L } from "../CheckboxListPlugin/id.es.js";
4
3
  import { TextStyles as E } from "../TextStylePlugin/TextStyles/textStyles.es.js";
4
+ import { ELEMENT_CHECK_ITEM as L } from "../CheckboxListPlugin/id.es.js";
5
5
  class o extends _ {
6
6
  plugins() {
7
7
  return [
@@ -1,19 +1,21 @@
1
- import { getTooltip as c } from "../../../helpers/getTooltip.es.js";
2
- import { withPlateProvider as s, usePlateEditorState as m, useEventPlateId as u, someNode as p, ToolbarButton as f, unwrapList as v, getPreventDefaultHandler as d, toggleNodeType as P } from "@udecode/plate";
3
- import T from "react";
4
- const w = s(
5
- ({ id: r, type: e, inactiveType: i, active: n, ...a }) => {
6
- const t = m(u(r)), o = n ?? (!!(t != null && t.selection) && p(t, { match: { type: e } }));
7
- return /* @__PURE__ */ T.createElement(
8
- f,
1
+ import { getTooltip as u } from "../../../helpers/getTooltip.es.js";
2
+ import { withPlateProvider as m, usePlateEditorState as f, useEventPlateId as E, getNode as P, someNode as h, ToolbarButton as v, unwrapList as T, getPreventDefaultHandler as g, toggleNodeType as A, setElements as N, ELEMENT_PARAGRAPH as b } from "@udecode/plate";
3
+ import d from "react";
4
+ const L = m(
5
+ ({ id: l, type: s, active: r, ...a }) => {
6
+ var i, n, c;
7
+ const t = f(E(l)), e = ((i = t.selection) == null ? void 0 : i.focus.path) && P(t, (c = (n = t == null ? void 0 : t.selection) == null ? void 0 : n.focus) == null ? void 0 : c.path), o = r ?? (!!(t != null && t.selection) && h(t, { match: { type: s } }));
8
+ return /* @__PURE__ */ d.createElement(
9
+ v,
9
10
  {
10
- tooltip: c("Checklist"),
11
+ tooltip: u("Checklist"),
11
12
  active: o,
12
- onMouseDown: (l) => {
13
- !t || !t.selection || (o || v(t, {}), d(P, t, {
14
- activeType: e,
15
- inactiveType: i
16
- })(l));
13
+ onMouseDown: (p) => {
14
+ !t || !t.selection || (o || T(t, {}), g(A, t, {
15
+ activeType: s
16
+ })(p), o && N(t, {
17
+ type: (e == null ? void 0 : e.textStyle) ?? b
18
+ }));
17
19
  },
18
20
  ...a
19
21
  }
@@ -21,6 +23,6 @@ const w = s(
21
23
  }
22
24
  );
23
25
  export {
24
- w as CheckboxListToolbarButton
26
+ L as CheckboxListToolbarButton
25
27
  };
26
28
  //# sourceMappingURL=CheckboxListToolbarButton.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxListToolbarButton.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListButton/CheckboxListToolbarButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { getTooltip } from '@components/RichTextEditor/helpers/getTooltip';\nimport {\n BlockToolbarButtonProps,\n ToolbarButton,\n getPreventDefaultHandler,\n someNode,\n toggleNodeType,\n unwrapList,\n useEventPlateId,\n usePlateEditorState,\n withPlateProvider,\n} from '@udecode/plate';\nimport React from 'react';\n\nexport const CheckboxListToolbarButton = withPlateProvider(\n ({ id, type, inactiveType, active, ...props }: BlockToolbarButtonProps) => {\n const editor = usePlateEditorState(useEventPlateId(id));\n\n const isActive = active ?? (!!editor?.selection && someNode(editor, { match: { type } }));\n\n return (\n <ToolbarButton\n tooltip={getTooltip('Checklist')}\n active={isActive}\n onMouseDown={(event) => {\n if (!editor || !editor.selection) {\n return;\n }\n\n if (!isActive) {\n unwrapList(editor, {});\n }\n\n getPreventDefaultHandler(toggleNodeType, editor, {\n activeType: type,\n inactiveType,\n })(event);\n }}\n {...props}\n />\n );\n },\n);\n"],"names":["CheckboxListToolbarButton","withPlateProvider","id","type","inactiveType","active","props","editor","usePlateEditorState","useEventPlateId","isActive","someNode","React","ToolbarButton","getTooltip","event","unwrapList","getPreventDefaultHandler","toggleNodeType"],"mappings":";;;AAgBO,MAAMA,IAA4BC;AAAA,EACrC,CAAC,EAAE,IAAAC,GAAI,MAAAC,GAAM,cAAAC,GAAc,QAAAC,GAAQ,GAAGC,QAAqC;AACvE,UAAMC,IAASC,EAAoBC,EAAgBP,CAAE,CAAC,GAEhDQ,IAAWL,MAAW,CAAC,EAACE,KAAA,QAAAA,EAAQ,cAAaI,EAASJ,GAAQ,EAAE,OAAO,EAAE,MAAAJ,KAAQ;AAGnF,WAAA,gBAAAS,EAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,SAASC,EAAW,WAAW;AAAA,QAC/B,QAAQJ;AAAA,QACR,aAAa,CAACK,MAAU;AACpB,UAAI,CAACR,KAAU,CAACA,EAAO,cAIlBG,KACUM,EAAAT,GAAQ,CAAA,CAAE,GAGzBU,EAAyBC,GAAgBX,GAAQ;AAAA,YAC7C,YAAYJ;AAAA,YACZ,cAAAC;AAAA,UAAA,CACH,EAAEW,CAAK;AAAA,QACZ;AAAA,QACC,GAAGT;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;"}
1
+ {"version":3,"file":"CheckboxListToolbarButton.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListButton/CheckboxListToolbarButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { getTooltip } from '@components/RichTextEditor/helpers/getTooltip';\nimport {\n BlockToolbarButtonProps,\n ELEMENT_PARAGRAPH,\n ToolbarButton,\n getNode,\n getPreventDefaultHandler,\n setElements,\n someNode,\n toggleNodeType,\n unwrapList,\n useEventPlateId,\n usePlateEditorState,\n withPlateProvider,\n} from '@udecode/plate';\nimport React from 'react';\n\nexport const CheckboxListToolbarButton = withPlateProvider(\n ({ id, type, active, ...props }: BlockToolbarButtonProps) => {\n const editor = usePlateEditorState(useEventPlateId(id));\n const node = editor.selection?.focus.path && getNode(editor, editor?.selection?.focus?.path);\n\n const isActive = active ?? (!!editor?.selection && someNode(editor, { match: { type } }));\n\n return (\n <ToolbarButton\n tooltip={getTooltip('Checklist')}\n active={isActive}\n onMouseDown={(event) => {\n if (!editor || !editor.selection) {\n return;\n }\n\n if (!isActive) {\n unwrapList(editor, {});\n }\n\n getPreventDefaultHandler(toggleNodeType, editor, {\n activeType: type,\n })(event);\n\n if (isActive) {\n setElements(editor, {\n type: (node?.textStyle as string) ?? ELEMENT_PARAGRAPH,\n });\n }\n }}\n {...props}\n />\n );\n },\n);\n"],"names":["CheckboxListToolbarButton","withPlateProvider","id","type","active","props","editor","usePlateEditorState","useEventPlateId","node","_a","getNode","_c","_b","isActive","someNode","React","ToolbarButton","getTooltip","event","unwrapList","getPreventDefaultHandler","toggleNodeType","setElements","ELEMENT_PARAGRAPH"],"mappings":";;;AAmBO,MAAMA,IAA4BC;AAAA,EACrC,CAAC,EAAE,IAAAC,GAAI,MAAAC,GAAM,QAAAC,GAAQ,GAAGC,QAAqC;;AACzD,UAAMC,IAASC,EAAoBC,EAAgBN,CAAE,CAAC,GAChDO,MAAOC,IAAAJ,EAAO,cAAP,gBAAAI,EAAkB,MAAM,SAAQC,EAAQL,IAAQM,KAAAC,IAAAP,KAAA,gBAAAA,EAAQ,cAAR,gBAAAO,EAAmB,UAAnB,gBAAAD,EAA0B,IAAI,GAErFE,IAAWV,MAAW,CAAC,EAACE,KAAA,QAAAA,EAAQ,cAAaS,EAAST,GAAQ,EAAE,OAAO,EAAE,MAAAH,KAAQ;AAGnF,WAAA,gBAAAa,EAAA;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,SAASC,EAAW,WAAW;AAAA,QAC/B,QAAQJ;AAAA,QACR,aAAa,CAACK,MAAU;AACpB,UAAI,CAACb,KAAU,CAACA,EAAO,cAIlBQ,KACUM,EAAAd,GAAQ,CAAA,CAAE,GAGzBe,EAAyBC,GAAgBhB,GAAQ;AAAA,YAC7C,YAAYH;AAAA,UAAA,CACf,EAAEgB,CAAK,GAEJL,KACAS,EAAYjB,GAAQ;AAAA,YAChB,OAAOG,KAAA,gBAAAA,EAAM,cAAwBe;AAAA,UAAA,CACxC;AAAA,QAET;AAAA,QACC,GAAGnB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;"}
@@ -1,18 +1,20 @@
1
1
  import t from "react";
2
2
  import { ReactEditor as w } from "slate-react";
3
- import { getRootProps as E, setNodes as f } from "@udecode/plate";
4
- import { merge as m } from "../../../../utilities/merge.es.js";
5
- import { MarkupElement as u } from "../MarkupElement.es.js";
6
- import { ELEMENT_CHECK_ITEM as k } from "./id.es.js";
7
- import { justifyClassNames as x } from "../TextStylePlugin/TextStyles/alignment.es.js";
8
- const g = (o) => {
9
- const { attributes: c, children: r, nodeProps: i, element: e, editor: s } = o, l = E(o), a = e.checked, d = e.align ?? "left", p = e.children.every((n) => n.text === "");
3
+ import { getRootProps as k, setNodes as u } from "@udecode/plate";
4
+ import { merge as i } from "../../../../utilities/merge.es.js";
5
+ import { MarkupElement as x } from "../MarkupElement.es.js";
6
+ import { ELEMENT_CHECK_ITEM as g } from "./id.es.js";
7
+ import { useRichTextEditorContext as N } from "../../context/RichTextEditorContext.es.js";
8
+ import { getTextStyle as b } from "../ListPlugin/ListItemContentMarkupElement.es.js";
9
+ import { justifyClassNames as y } from "../TextStylePlugin/TextStyles/alignment.es.js";
10
+ const C = (o) => {
11
+ const { attributes: c, children: n, nodeProps: a, element: e, editor: s } = o, l = k(o), m = e.checked, { designTokens: d } = N(), p = d[b(e.children[0])], h = e.align ?? "left", f = e.children.every((r) => r.text === "");
10
12
  return /* @__PURE__ */ t.createElement(
11
13
  "div",
12
14
  {
13
15
  ...c,
14
16
  ...l,
15
- className: m(["tw-flex tw-flex-row tw-pb-2 tw-gap-1.5 tw-items-center", x[d]])
17
+ className: i(["tw-flex tw-flex-row tw-pb-2 tw-gap-1.5 tw-items-center", y[h]])
16
18
  },
17
19
  /* @__PURE__ */ t.createElement("div", { contentEditable: !1, className: "tw-select-none" }, /* @__PURE__ */ t.createElement(
18
20
  "input",
@@ -20,24 +22,31 @@ const g = (o) => {
20
22
  "data-test-id": "checkbox-input",
21
23
  className: "tw-w-4 tw-h-4 tw-m-0",
22
24
  type: "checkbox",
23
- checked: !!a,
24
- onChange: (n) => {
25
- const h = w.findPath(s, e);
26
- f(s, { checked: n.target.checked }, { at: h });
25
+ checked: !!m,
26
+ onChange: (r) => {
27
+ const E = w.findPath(s, e);
28
+ u(s, { checked: r.target.checked }, { at: E });
27
29
  },
28
- ...i
30
+ ...a
29
31
  }
30
32
  )),
31
- /* @__PURE__ */ t.createElement("span", { className: m(["focus:tw-outline-none", a && "tw-line-through", p && "tw-w-10"]) }, r)
33
+ /* @__PURE__ */ t.createElement(
34
+ "span",
35
+ {
36
+ style: p,
37
+ className: i(["focus:tw-outline-none", m && "tw-line-through", f && "tw-w-10"])
38
+ },
39
+ n
40
+ )
32
41
  );
33
42
  };
34
- class M extends u {
35
- constructor(c = k, r = g) {
36
- super(c, r);
43
+ class H extends x {
44
+ constructor(c = g, n = C) {
45
+ super(c, n);
37
46
  }
38
47
  }
39
48
  export {
40
- M as CheckboxListElement,
41
- g as CheckboxListElementNode
49
+ H as CheckboxListElement,
50
+ C as CheckboxListElementNode
42
51
  };
43
52
  //# sourceMappingURL=CheckboxListElement.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxListElement.es.js","sources":["../../../../../src/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListElement.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React from 'react';\nimport { ReactEditor } from 'slate-react';\nimport { PlateRenderElementProps, TTodoListItemElement, getRootProps, setNodes } from '@udecode/plate';\nimport { merge } from '@utilities/merge';\nimport { MarkupElement } from '../MarkupElement';\nimport { ELEMENT_CHECK_ITEM } from './id';\nimport { justifyClassNames } from '../TextStylePlugin/TextStyles/alignment';\n\nexport const CheckboxListElementNode = (props: PlateRenderElementProps) => {\n const { attributes, children, nodeProps, element, editor } = props;\n const rootProps = getRootProps(props);\n const checked = element.checked as boolean;\n const align = (element.align as string) ?? 'left';\n const isEmpty = element.children.every((child) => child.text === '');\n\n return (\n <div\n {...attributes}\n {...rootProps}\n className={merge(['tw-flex tw-flex-row tw-pb-2 tw-gap-1.5 tw-items-center', justifyClassNames[align]])}\n >\n <div contentEditable={false} className=\"tw-select-none\">\n <input\n data-test-id=\"checkbox-input\"\n className=\"tw-w-4 tw-h-4 tw-m-0\"\n type=\"checkbox\"\n checked={!!checked}\n onChange={(e) => {\n const path = ReactEditor.findPath(editor as ReactEditor, element);\n setNodes<TTodoListItemElement>(editor, { checked: e.target.checked }, { at: path });\n }}\n {...nodeProps}\n />\n </div>\n <span className={merge(['focus:tw-outline-none', checked && 'tw-line-through', isEmpty && 'tw-w-10'])}>\n {children}\n </span>\n </div>\n );\n};\n\nexport class CheckboxListElement extends MarkupElement {\n constructor(id = ELEMENT_CHECK_ITEM, node = CheckboxListElementNode) {\n super(id, node);\n }\n}\n"],"names":["CheckboxListElementNode","props","attributes","children","nodeProps","element","editor","rootProps","getRootProps","checked","align","isEmpty","child","React","merge","justifyClassNames","e","path","ReactEditor","setNodes","CheckboxListElement","MarkupElement","id","ELEMENT_CHECK_ITEM","node"],"mappings":";;;;;;;AAUa,MAAAA,IAA0B,CAACC,MAAmC;AACvE,QAAM,EAAE,YAAAC,GAAY,UAAAC,GAAU,WAAAC,GAAW,SAAAC,GAAS,QAAAC,EAAW,IAAAL,GACvDM,IAAYC,EAAaP,CAAK,GAC9BQ,IAAUJ,EAAQ,SAClBK,IAASL,EAAQ,SAAoB,QACrCM,IAAUN,EAAQ,SAAS,MAAM,CAACO,MAAUA,EAAM,SAAS,EAAE;AAG/D,SAAA,gBAAAC,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGX;AAAA,MACH,GAAGK;AAAA,MACJ,WAAWO,EAAM,CAAC,0DAA0DC,EAAkBL,CAAK,CAAC,CAAC;AAAA,IAAA;AAAA,IAEpG,gBAAAG,EAAA,cAAA,OAAA,EAAI,iBAAiB,IAAO,WAAU,oBACnC,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,gBAAa;AAAA,QACb,WAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAS,CAAC,CAACJ;AAAA,QACX,UAAU,CAACO,MAAM;AACb,gBAAMC,IAAOC,EAAY,SAASZ,GAAuBD,CAAO;AACjC,UAAAc,EAAAb,GAAQ,EAAE,SAASU,EAAE,OAAO,WAAW,EAAE,IAAIC,EAAA,CAAM;AAAA,QACtF;AAAA,QACC,GAAGb;AAAA,MAAA;AAAA,IAAA,CAEZ;AAAA,IACC,gBAAAS,EAAA,cAAA,QAAA,EAAK,WAAWC,EAAM,CAAC,yBAAyBL,KAAW,mBAAmBE,KAAW,SAAS,CAAC,EAAA,GAC/FR,CACL;AAAA,EAAA;AAGZ;AAEO,MAAMiB,UAA4BC,EAAc;AAAA,EACnD,YAAYC,IAAKC,GAAoBC,IAAOxB,GAAyB;AACjE,UAAMsB,GAAIE,CAAI;AAAA,EAClB;AACJ;"}
1
+ {"version":3,"file":"CheckboxListElement.es.js","sources":["../../../../../src/components/RichTextEditor/Plugins/CheckboxListPlugin/CheckboxListElement.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React from 'react';\nimport { ReactEditor } from 'slate-react';\nimport { PlateRenderElementProps, TTodoListItemElement, getRootProps, setNodes } from '@udecode/plate';\nimport { merge } from '@utilities/merge';\nimport { MarkupElement } from '../MarkupElement';\nimport { ELEMENT_CHECK_ITEM } from './id';\nimport { useRichTextEditorContext } from '@components/RichTextEditor/context/RichTextEditorContext';\nimport { getTextStyle } from '../ListPlugin/ListItemContentMarkupElement';\nimport { justifyClassNames } from '../TextStylePlugin/TextStyles/alignment';\n\nexport const CheckboxListElementNode = (props: PlateRenderElementProps) => {\n const { attributes, children, nodeProps, element, editor } = props;\n const rootProps = getRootProps(props);\n const checked = element.checked as boolean;\n const { designTokens } = useRichTextEditorContext();\n const tokenStyles = designTokens[getTextStyle(element.children[0])];\n\n const align = (element.align as string) ?? 'left';\n const isEmpty = element.children.every((child) => child.text === '');\n\n return (\n <div\n {...attributes}\n {...rootProps}\n className={merge(['tw-flex tw-flex-row tw-pb-2 tw-gap-1.5 tw-items-center', justifyClassNames[align]])}\n >\n <div contentEditable={false} className=\"tw-select-none\">\n <input\n data-test-id=\"checkbox-input\"\n className=\"tw-w-4 tw-h-4 tw-m-0\"\n type=\"checkbox\"\n checked={!!checked}\n onChange={(e) => {\n const path = ReactEditor.findPath(editor as ReactEditor, element);\n setNodes<TTodoListItemElement>(editor, { checked: e.target.checked }, { at: path });\n }}\n {...nodeProps}\n />\n </div>\n <span\n style={tokenStyles}\n className={merge(['focus:tw-outline-none', checked && 'tw-line-through', isEmpty && 'tw-w-10'])}\n >\n {children}\n </span>\n </div>\n );\n};\n\nexport class CheckboxListElement extends MarkupElement {\n constructor(id = ELEMENT_CHECK_ITEM, node = CheckboxListElementNode) {\n super(id, node);\n }\n}\n"],"names":["CheckboxListElementNode","props","attributes","children","nodeProps","element","editor","rootProps","getRootProps","checked","designTokens","useRichTextEditorContext","tokenStyles","getTextStyle","align","isEmpty","child","React","merge","justifyClassNames","e","path","ReactEditor","setNodes","CheckboxListElement","MarkupElement","id","ELEMENT_CHECK_ITEM","node"],"mappings":";;;;;;;;;AAYa,MAAAA,IAA0B,CAACC,MAAmC;AACvE,QAAM,EAAE,YAAAC,GAAY,UAAAC,GAAU,WAAAC,GAAW,SAAAC,GAAS,QAAAC,EAAW,IAAAL,GACvDM,IAAYC,EAAaP,CAAK,GAC9BQ,IAAUJ,EAAQ,SAClB,EAAE,cAAAK,MAAiBC,KACnBC,IAAcF,EAAaG,EAAaR,EAAQ,SAAS,CAAC,CAAC,CAAC,GAE5DS,IAAST,EAAQ,SAAoB,QACrCU,IAAUV,EAAQ,SAAS,MAAM,CAACW,MAAUA,EAAM,SAAS,EAAE;AAG/D,SAAA,gBAAAC,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGf;AAAA,MACH,GAAGK;AAAA,MACJ,WAAWW,EAAM,CAAC,0DAA0DC,EAAkBL,CAAK,CAAC,CAAC;AAAA,IAAA;AAAA,IAEpG,gBAAAG,EAAA,cAAA,OAAA,EAAI,iBAAiB,IAAO,WAAU,oBACnC,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,gBAAa;AAAA,QACb,WAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAS,CAAC,CAACR;AAAA,QACX,UAAU,CAACW,MAAM;AACb,gBAAMC,IAAOC,EAAY,SAAShB,GAAuBD,CAAO;AACjC,UAAAkB,EAAAjB,GAAQ,EAAE,SAASc,EAAE,OAAO,WAAW,EAAE,IAAIC,EAAA,CAAM;AAAA,QACtF;AAAA,QACC,GAAGjB;AAAA,MAAA;AAAA,IAAA,CAEZ;AAAA,IACA,gBAAAa,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,OAAOL;AAAA,QACP,WAAWM,EAAM,CAAC,yBAAyBT,KAAW,mBAAmBM,KAAW,SAAS,CAAC;AAAA,MAAA;AAAA,MAE7FZ;AAAA,IACL;AAAA,EAAA;AAGZ;AAEO,MAAMqB,UAA4BC,EAAc;AAAA,EACnD,YAAYC,IAAKC,GAAoBC,IAAO5B,GAAyB;AACjE,UAAM0B,GAAIE,CAAI;AAAA,EAClB;AACJ;"}
@@ -1,13 +1,17 @@
1
- import { getMark as w, someNode as l, getAboveNode as n, ELEMENT_LI as m, setMarks as c, getPreventDefaultHandler as u, toggleNodeType as x } from "@udecode/plate";
1
+ import { getMark as w, someNode as m, setMarks as l, getPreventDefaultHandler as c, toggleNodeType as u, getAboveNode as x, ELEMENT_LI as p } from "@udecode/plate";
2
2
  import { merge as v } from "../../../../../utilities/merge.es.js";
3
- import b from "react";
3
+ import E from "react";
4
4
  import { MARK_TEXT_STYLE as o } from "../../ListPlugin/ListPlugin.es.js";
5
- const i = (t) => n(t, {
6
- match: { type: m },
5
+ import { ELEMENT_CHECK_ITEM as b } from "../../CheckboxListPlugin/id.es.js";
6
+ const n = (t) => x(t, {
7
+ match: { type: p },
7
8
  mode: "lowest"
8
- }), E = ({ editor: t, type: e, children: s }) => {
9
- const a = t != null && t.selection && i(t) ? w(t, o) === e : l(t, { match: { type: e } });
10
- return /* @__PURE__ */ b.createElement(
9
+ }) || m(t, {
10
+ match: { type: b },
11
+ mode: "lowest"
12
+ }), M = ({ editor: t, type: e, children: r }) => {
13
+ const a = t != null && t.selection && n(t) ? w(t, o) === e : m(t, { match: { type: e } });
14
+ return /* @__PURE__ */ E.createElement(
11
15
  "button",
12
16
  {
13
17
  "data-test-id": "textstyle-option",
@@ -16,22 +20,17 @@ const i = (t) => n(t, {
16
20
  "tw-block tw-w-full tw-text-left tw-px-3 tw-py-2 tw-outline-none tw-cursor-pointer tw-truncate hover:tw-bg-box-neutral-hover hover:w-text-box-neutral-inverse-hover tw-max-h-20 tw-max-w-[15rem] tw-min-h-[2.25rem]",
17
21
  a ? "tw-text-box-neutral-inverse tw-bg-box-neutral" : "tw-text-text"
18
22
  ]),
19
- onMouseDown: (r) => {
20
- if (!t || !t.selection)
21
- return;
22
- n(t, {
23
- match: { type: m },
24
- mode: "lowest"
25
- }) ? c(t, { [o]: e }) : u(x, t, {
23
+ onMouseDown: (s) => {
24
+ !t || !t.selection || (n(t) ? l(t, { [o]: e }) : c(u, t, {
26
25
  activeType: e,
27
26
  inactiveType: e
28
- })(r);
27
+ })(s));
29
28
  }
30
29
  },
31
- s
30
+ r
32
31
  );
33
32
  };
34
33
  export {
35
- E as DropdownItem
34
+ M as DropdownItem
36
35
  };
37
36
  //# sourceMappingURL=DropdownItem.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownItem.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/DropdownItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LI,\n PlateEditor,\n getAboveNode,\n getMark,\n getPreventDefaultHandler,\n setMarks,\n someNode,\n toggleNodeType,\n} from '@udecode/plate';\nimport { merge } from '@utilities/merge';\nimport React from 'react';\nimport { MARK_TEXT_STYLE } from '../../ListPlugin/ListPlugin';\nimport { DropdownItemProps } from './types';\n\nconst isInList = (editor: PlateEditor) =>\n getAboveNode(editor, {\n match: { type: ELEMENT_LI },\n mode: 'lowest',\n });\n\nexport const DropdownItem = ({ editor, type, children }: DropdownItemProps) => {\n const isActive =\n !!editor?.selection && isInList(editor)\n ? (getMark(editor, MARK_TEXT_STYLE) as string) === type\n : someNode(editor, { match: { type } });\n\n return (\n <button\n data-test-id=\"textstyle-option\"\n type=\"button\"\n className={merge([\n 'tw-block tw-w-full tw-text-left tw-px-3 tw-py-2 tw-outline-none tw-cursor-pointer tw-truncate hover:tw-bg-box-neutral-hover hover:w-text-box-neutral-inverse-hover tw-max-h-20 tw-max-w-[15rem] tw-min-h-[2.25rem]',\n isActive ? 'tw-text-box-neutral-inverse tw-bg-box-neutral' : 'tw-text-text',\n ])}\n onMouseDown={(event) => {\n if (!editor || !editor.selection) {\n return;\n }\n\n const aboveListItem = getAboveNode(editor, {\n match: { type: ELEMENT_LI },\n mode: 'lowest',\n });\n\n if (aboveListItem) {\n setMarks(editor, { [MARK_TEXT_STYLE]: type });\n } else {\n getPreventDefaultHandler(toggleNodeType, editor, {\n activeType: type,\n inactiveType: type,\n })(event);\n }\n }}\n >\n {children}\n </button>\n );\n};\n"],"names":["isInList","editor","getAboveNode","ELEMENT_LI","DropdownItem","type","children","isActive","getMark","MARK_TEXT_STYLE","someNode","React","merge","event","setMarks","getPreventDefaultHandler","toggleNodeType"],"mappings":";;;;AAiBA,MAAMA,IAAW,CAACC,MACdC,EAAaD,GAAQ;AAAA,EACjB,OAAO,EAAE,MAAME,EAAW;AAAA,EAC1B,MAAM;AACV,CAAC,GAEQC,IAAe,CAAC,EAAE,QAAAH,GAAQ,MAAAI,GAAM,UAAAC,QAAkC;AACrE,QAAAC,IACAN,KAAA,QAAAA,EAAQ,aAAaD,EAASC,CAAM,IAC/BO,EAAQP,GAAQQ,CAAe,MAAiBJ,IACjDK,EAAST,GAAQ,EAAE,OAAO,EAAE,MAAAI,KAAQ;AAG1C,SAAA,gBAAAM,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,gBAAa;AAAA,MACb,MAAK;AAAA,MACL,WAAWC,EAAM;AAAA,QACb;AAAA,QACAL,IAAW,kDAAkD;AAAA,MAAA,CAChE;AAAA,MACD,aAAa,CAACM,MAAU;AACpB,YAAI,CAACZ,KAAU,CAACA,EAAO;AACnB;AAQJ,QALsBC,EAAaD,GAAQ;AAAA,UACvC,OAAO,EAAE,MAAME,EAAW;AAAA,UAC1B,MAAM;AAAA,QAAA,CACT,IAGGW,EAASb,GAAQ,EAAE,CAACQ,CAAe,GAAGJ,EAAM,CAAA,IAE5CU,EAAyBC,GAAgBf,GAAQ;AAAA,UAC7C,YAAYI;AAAA,UACZ,cAAcA;AAAA,QAAA,CACjB,EAAEQ,CAAK;AAAA,MAEhB;AAAA,IAAA;AAAA,IAECP;AAAA,EAAA;AAGb;"}
1
+ {"version":3,"file":"DropdownItem.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/DropdownItem.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LI,\n PlateEditor,\n getAboveNode,\n getMark,\n getPreventDefaultHandler,\n setMarks,\n someNode,\n toggleNodeType,\n} from '@udecode/plate';\nimport { merge } from '@utilities/merge';\nimport React from 'react';\nimport { ELEMENT_CHECK_ITEM } from '../../CheckboxListPlugin';\nimport { MARK_TEXT_STYLE } from '../../ListPlugin/ListPlugin';\nimport { DropdownItemProps } from './types';\n\nconst isInList = (editor: PlateEditor) =>\n getAboveNode(editor, {\n match: { type: ELEMENT_LI },\n mode: 'lowest',\n }) ||\n someNode(editor, {\n match: { type: ELEMENT_CHECK_ITEM },\n mode: 'lowest',\n });\n\nexport const DropdownItem = ({ editor, type, children }: DropdownItemProps) => {\n const isActive =\n !!editor?.selection && isInList(editor)\n ? getMark(editor, MARK_TEXT_STYLE) === type\n : someNode(editor, { match: { type } });\n\n return (\n <button\n data-test-id=\"textstyle-option\"\n type=\"button\"\n className={merge([\n 'tw-block tw-w-full tw-text-left tw-px-3 tw-py-2 tw-outline-none tw-cursor-pointer tw-truncate hover:tw-bg-box-neutral-hover hover:w-text-box-neutral-inverse-hover tw-max-h-20 tw-max-w-[15rem] tw-min-h-[2.25rem]',\n isActive ? 'tw-text-box-neutral-inverse tw-bg-box-neutral' : 'tw-text-text',\n ])}\n onMouseDown={(event) => {\n if (!editor || !editor.selection) {\n return;\n }\n\n if (isInList(editor)) {\n setMarks(editor, { [MARK_TEXT_STYLE]: type });\n } else {\n getPreventDefaultHandler(toggleNodeType, editor, {\n activeType: type,\n inactiveType: type,\n })(event);\n }\n }}\n >\n {children}\n </button>\n );\n};\n"],"names":["isInList","editor","getAboveNode","ELEMENT_LI","someNode","ELEMENT_CHECK_ITEM","DropdownItem","type","children","isActive","getMark","MARK_TEXT_STYLE","React","merge","event","setMarks","getPreventDefaultHandler","toggleNodeType"],"mappings":";;;;;AAkBA,MAAMA,IAAW,CAACC,MACdC,EAAaD,GAAQ;AAAA,EACjB,OAAO,EAAE,MAAME,EAAW;AAAA,EAC1B,MAAM;AACV,CAAC,KACDC,EAASH,GAAQ;AAAA,EACb,OAAO,EAAE,MAAMI,EAAmB;AAAA,EAClC,MAAM;AACV,CAAC,GAEQC,IAAe,CAAC,EAAE,QAAAL,GAAQ,MAAAM,GAAM,UAAAC,QAAkC;AACrE,QAAAC,IACAR,KAAA,QAAAA,EAAQ,aAAaD,EAASC,CAAM,IAChCS,EAAQT,GAAQU,CAAe,MAAMJ,IACrCH,EAASH,GAAQ,EAAE,OAAO,EAAE,MAAAM,KAAQ;AAG1C,SAAA,gBAAAK,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,gBAAa;AAAA,MACb,MAAK;AAAA,MACL,WAAWC,EAAM;AAAA,QACb;AAAA,QACAJ,IAAW,kDAAkD;AAAA,MAAA,CAChE;AAAA,MACD,aAAa,CAACK,MAAU;AACpB,QAAI,CAACb,KAAU,CAACA,EAAO,cAInBD,EAASC,CAAM,IACfc,EAASd,GAAQ,EAAE,CAACU,CAAe,GAAGJ,EAAM,CAAA,IAE5CS,EAAyBC,GAAgBhB,GAAQ;AAAA,UAC7C,YAAYM;AAAA,UACZ,cAAcA;AAAA,QAAA,CACjB,EAAEO,CAAK;AAAA,MAEhB;AAAA,IAAA;AAAA,IAECN;AAAA,EAAA;AAGb;"}
@@ -1,21 +1,20 @@
1
- import { getNodeEntries as E, isElement as o, isType as c, isNode as A, ELEMENT_LIC as u, isText as T } from "@udecode/plate";
2
- import { MARK_TEXT_STYLE as m } from "../../ListPlugin/ListPlugin.es.js";
3
- import { AVAILABLE_STYLE as f, TextStyles as i } from "../TextStyles/textStyles.es.js";
4
- const l = (t) => Array.isArray(t.children) ? (t.children.find((e) => T(e)) ?? {})[m] ?? i.ELEMENT_PARAGRAPH : i.ELEMENT_PARAGRAPH, N = (t) => !t || !t.selection ? [] : Array.from(
5
- E(t, {
1
+ import { getNodeEntries as o, isNode as s, ELEMENT_LIC as T, isText as c, ELEMENT_LI as u, ELEMENT_UL as L, ELEMENT_OL as A } from "@udecode/plate";
2
+ import { MARK_TEXT_STYLE as N } from "../../ListPlugin/ListPlugin.es.js";
3
+ import { ELEMENT_CHECK_ITEM as f } from "../../CheckboxListPlugin/id.es.js";
4
+ import { TextStyles as n } from "../TextStyles/textStyles.es.js";
5
+ const l = (e) => Array.isArray(e.children) ? (e.children.find((t) => c(t)) ?? {})[N] ?? n.ELEMENT_PARAGRAPH : n.ELEMENT_PARAGRAPH, _ = [u, L, A], x = (e) => !e || !e.selection ? [] : Array.from(
6
+ o(e, {
6
7
  unhang: !0,
7
- mode: "lowest",
8
- at: t.selection,
9
- reverse: !0,
10
- match: (e) => o(e) && c(t, e, f)
8
+ at: e.selection,
9
+ reverse: !0
11
10
  })
12
- ).reduce((e, [r]) => {
13
- if (!A(r))
14
- return e;
15
- const n = r.type === u ? l(r) : r.type;
16
- return n && !e.includes(n) && e.push(n), e;
11
+ ).reduce((t, [r]) => {
12
+ if (!s(r))
13
+ return t;
14
+ const E = r.type === T || r.type === f ? l(r) : r.type;
15
+ return E && !t.includes(E) && !_.includes(E) && t.push(E), t;
17
16
  }, []);
18
17
  export {
19
- N as useSelectedTextStyles
18
+ x as useSelectedTextStyles
20
19
  };
21
20
  //# sourceMappingURL=useSelectedTextStyles.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSelectedTextStyles.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/useSelectedTextStyles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LIC,\n ENode,\n PlateEditor,\n TElement,\n Value,\n getNodeEntries,\n isElement,\n isNode,\n isText,\n isType,\n} from '@udecode/plate';\nimport { MARK_TEXT_STYLE } from '../../ListPlugin/ListPlugin';\nimport { AVAILABLE_STYLE, AvailableStyles, TextStyles } from '../TextStyles';\n\nconst getLicStyle = (node: ENode<Value>): AvailableStyles => {\n if (Array.isArray(node.children)) {\n const textNode = node.children.find((node) => isText(node)) ?? {};\n return textNode[MARK_TEXT_STYLE] ?? TextStyles.ELEMENT_PARAGRAPH;\n }\n\n return TextStyles.ELEMENT_PARAGRAPH;\n};\n\nexport const useSelectedTextStyles = (editor: PlateEditor): AvailableStyles[] => {\n if (!editor || !editor.selection) {\n return [];\n }\n\n const nodeEntries = Array.from(\n getNodeEntries(editor, {\n unhang: true,\n mode: 'lowest',\n at: editor.selection,\n reverse: true,\n match: (node: TElement) => isElement(node) && isType(editor, node, AVAILABLE_STYLE),\n }),\n );\n\n return nodeEntries.reduce<AvailableStyles[]>((styles, [node]) => {\n if (!isNode(node)) {\n return styles;\n }\n\n const styleToAdd = node.type === ELEMENT_LIC ? getLicStyle(node) : (node.type as AvailableStyles);\n\n if (styleToAdd && !styles.includes(styleToAdd)) {\n styles.push(styleToAdd);\n }\n\n return styles;\n }, []);\n};\n"],"names":["getLicStyle","node","isText","MARK_TEXT_STYLE","TextStyles","useSelectedTextStyles","editor","getNodeEntries","isElement","isType","AVAILABLE_STYLE","styles","isNode","styleToAdd","ELEMENT_LIC"],"mappings":";;;AAiBA,MAAMA,IAAc,CAACC,MACb,MAAM,QAAQA,EAAK,QAAQ,KACVA,EAAK,SAAS,KAAK,CAACA,MAASC,EAAOD,CAAI,CAAC,KAAK,IAC/CE,CAAe,KAAKC,EAAW,oBAG5CA,EAAW,mBAGTC,IAAwB,CAACC,MAC9B,CAACA,KAAU,CAACA,EAAO,YACZ,KAGS,MAAM;AAAA,EACtBC,EAAeD,GAAQ;AAAA,IACnB,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,IAAIA,EAAO;AAAA,IACX,SAAS;AAAA,IACT,OAAO,CAACL,MAAmBO,EAAUP,CAAI,KAAKQ,EAAOH,GAAQL,GAAMS,CAAe;AAAA,EAAA,CACrF;AAAA,EAGc,OAA0B,CAACC,GAAQ,CAACV,CAAI,MAAM;AACzD,MAAA,CAACW,EAAOX,CAAI;AACL,WAAAU;AAGX,QAAME,IAAaZ,EAAK,SAASa,IAAcd,EAAYC,CAAI,IAAKA,EAAK;AAEzE,SAAIY,KAAc,CAACF,EAAO,SAASE,CAAU,KACzCF,EAAO,KAAKE,CAAU,GAGnBF;AACX,GAAG,CAAE,CAAA;"}
1
+ {"version":3,"file":"useSelectedTextStyles.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/TextStylePlugin/TextStyleDropdown/useSelectedTextStyles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n ELEMENT_LI,\n ELEMENT_LIC,\n ELEMENT_OL,\n ELEMENT_UL,\n ENode,\n PlateEditor,\n Value,\n getNodeEntries,\n isNode,\n isText,\n} from '@udecode/plate';\nimport { ELEMENT_CHECK_ITEM } from '../../CheckboxListPlugin';\nimport { MARK_TEXT_STYLE } from '../../ListPlugin/ListPlugin';\nimport { AvailableStyles, TextStyles } from '../TextStyles';\n\nconst getTextStyle = (node: ENode<Value>): AvailableStyles => {\n if (Array.isArray(node.children)) {\n const textNode = node.children.find((node) => isText(node)) ?? {};\n return textNode[MARK_TEXT_STYLE] ?? TextStyles.ELEMENT_PARAGRAPH;\n }\n\n return TextStyles.ELEMENT_PARAGRAPH;\n};\n\nconst excludeStyles = [ELEMENT_LI, ELEMENT_UL, ELEMENT_OL];\n\nexport const useSelectedTextStyles = (editor: PlateEditor): AvailableStyles[] => {\n if (!editor || !editor.selection) {\n return [];\n }\n\n const nodeEntries = Array.from(\n getNodeEntries(editor, {\n unhang: true,\n at: editor.selection,\n reverse: true,\n }),\n );\n\n return nodeEntries.reduce<AvailableStyles[]>((styles, [node]) => {\n if (!isNode(node)) {\n return styles;\n }\n\n const styleToAdd =\n node.type === ELEMENT_LIC || node.type === ELEMENT_CHECK_ITEM\n ? getTextStyle(node)\n : (node.type as AvailableStyles);\n\n if (styleToAdd && !styles.includes(styleToAdd) && !excludeStyles.includes(styleToAdd)) {\n styles.push(styleToAdd);\n }\n\n return styles;\n }, []);\n};\n"],"names":["getTextStyle","node","isText","MARK_TEXT_STYLE","TextStyles","excludeStyles","ELEMENT_LI","ELEMENT_UL","ELEMENT_OL","useSelectedTextStyles","editor","getNodeEntries","styles","isNode","styleToAdd","ELEMENT_LIC","ELEMENT_CHECK_ITEM"],"mappings":";;;;AAkBA,MAAMA,IAAe,CAACC,MACd,MAAM,QAAQA,EAAK,QAAQ,KACVA,EAAK,SAAS,KAAK,CAACA,MAASC,EAAOD,CAAI,CAAC,KAAK,IAC/CE,CAAe,KAAKC,EAAW,oBAG5CA,EAAW,mBAGhBC,IAAgB,CAACC,GAAYC,GAAYC,CAAU,GAE5CC,IAAwB,CAACC,MAC9B,CAACA,KAAU,CAACA,EAAO,YACZ,KAGS,MAAM;AAAA,EACtBC,EAAeD,GAAQ;AAAA,IACnB,QAAQ;AAAA,IACR,IAAIA,EAAO;AAAA,IACX,SAAS;AAAA,EAAA,CACZ;AAAA,EAGc,OAA0B,CAACE,GAAQ,CAACX,CAAI,MAAM;AACzD,MAAA,CAACY,EAAOZ,CAAI;AACL,WAAAW;AAGL,QAAAE,IACFb,EAAK,SAASc,KAAed,EAAK,SAASe,IACrChB,EAAaC,CAAI,IAChBA,EAAK;AAEZ,SAAAa,KAAc,CAACF,EAAO,SAASE,CAAU,KAAK,CAACT,EAAc,SAASS,CAAU,KAChFF,EAAO,KAAKE,CAAU,GAGnBF;AACX,GAAG,CAAE,CAAA;"}
@@ -1,13 +1,13 @@
1
1
  const a = "Mixed";
2
2
  var i = /* @__PURE__ */ ((E) => (E.UL = "ul", E.OL = "ol", E.CHECKLIST_ITEM = "checkbox_item", E.LIC = "lic", E))(i || {});
3
- const n = {
3
+ const o = {
4
4
  ul: "Bullet List",
5
5
  ol: "List",
6
6
  checkbox_item: "Checklist",
7
7
  lic: "List Item Content"
8
8
  };
9
- var L = /* @__PURE__ */ ((E) => (E.ELEMENT_HEADING1 = "heading1", E.ELEMENT_HEADING2 = "heading2", E.ELEMENT_HEADING3 = "heading3", E.ELEMENT_HEADING4 = "heading4", E.ELEMENT_CUSTOM1 = "custom1", E.ELEMENT_CUSTOM2 = "custom2", E.ELEMENT_CUSTOM3 = "custom3", E.ELEMENT_IMAGE_TITLE = "imageTitle", E.ELEMENT_IMAGE_CAPTION = "imageCaption", E.ELEMENT_QUOTE = "quote", E.ELEMENT_LINK = "link", E.ELEMENT_PARAGRAPH = "p", E))(L || {});
10
- const o = {
9
+ var n = /* @__PURE__ */ ((E) => (E.ELEMENT_HEADING1 = "heading1", E.ELEMENT_HEADING2 = "heading2", E.ELEMENT_HEADING3 = "heading3", E.ELEMENT_HEADING4 = "heading4", E.ELEMENT_CUSTOM1 = "custom1", E.ELEMENT_CUSTOM2 = "custom2", E.ELEMENT_CUSTOM3 = "custom3", E.ELEMENT_IMAGE_TITLE = "imageTitle", E.ELEMENT_IMAGE_CAPTION = "imageCaption", E.ELEMENT_QUOTE = "quote", E.ELEMENT_LINK = "link", E.ELEMENT_PARAGRAPH = "p", E))(n || {});
10
+ const L = {
11
11
  heading1: "Heading 1",
12
12
  heading2: "Heading 2",
13
13
  heading3: "Heading 3",
@@ -20,14 +20,14 @@ const o = {
20
20
  p: "Body Text",
21
21
  imageTitle: "Image Title",
22
22
  imageCaption: "Image Caption"
23
- }, T = { ...n, ...o }, _ = Object.values({ ...i, ...L });
23
+ }, T = { ...o, ...L };
24
+ Object.values({ ...i, ...n });
24
25
  export {
25
- _ as AVAILABLE_STYLE,
26
26
  T as AVAILABLE_STYLE_TITLES,
27
27
  a as DEFAULT_TEXT_STYLE_VALUE,
28
28
  i as ListStyles,
29
- L as TextStyles,
30
- n as listStyleTitle,
31
- o as textStyleTitle
29
+ n as TextStyles,
30
+ o as listStyleTitle,
31
+ L as textStyleTitle
32
32
  };
33
33
  //# sourceMappingURL=textStyles.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textStyles.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/TextStylePlugin/TextStyles/textStyles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport const DEFAULT_TEXT_STYLE_VALUE = 'Mixed';\n\nexport enum ListStyles {\n UL = 'ul',\n OL = 'ol',\n CHECKLIST_ITEM = 'checkbox_item',\n LIC = 'lic',\n}\nexport const listStyleTitle: Record<ListStyles, string> = {\n [ListStyles.UL]: 'Bullet List',\n [ListStyles.OL]: 'List',\n [ListStyles.CHECKLIST_ITEM]: 'Checklist',\n [ListStyles.LIC]: 'List Item Content',\n};\n\nexport enum ButtonStyles {\n ELEMENT_BUTTON_PRIMARY = 'buttonPrimary',\n ELEMENT_BUTTON_SECONDARY = 'buttonSecondary',\n ELEMENT_BUTTON_TERTIARY = 'buttonTertiary',\n}\n\nexport enum TextStyles {\n ELEMENT_HEADING1 = 'heading1',\n ELEMENT_HEADING2 = 'heading2',\n ELEMENT_HEADING3 = 'heading3',\n ELEMENT_HEADING4 = 'heading4',\n ELEMENT_CUSTOM1 = 'custom1',\n ELEMENT_CUSTOM2 = 'custom2',\n ELEMENT_CUSTOM3 = 'custom3',\n ELEMENT_IMAGE_TITLE = 'imageTitle',\n ELEMENT_IMAGE_CAPTION = 'imageCaption',\n ELEMENT_QUOTE = 'quote',\n ELEMENT_LINK = 'link',\n ELEMENT_PARAGRAPH = 'p',\n}\n\nexport type SelectableTextStyles = Exclude<TextStyles, TextStyles.ELEMENT_LINK>;\n\nexport const textStyleTitle: Record<TextStyles, string> = {\n [TextStyles.ELEMENT_HEADING1]: 'Heading 1',\n [TextStyles.ELEMENT_HEADING2]: 'Heading 2',\n [TextStyles.ELEMENT_HEADING3]: 'Heading 3',\n [TextStyles.ELEMENT_HEADING4]: 'Heading 4',\n [TextStyles.ELEMENT_CUSTOM1]: 'Custom 1',\n [TextStyles.ELEMENT_CUSTOM2]: 'Custom 2',\n [TextStyles.ELEMENT_CUSTOM3]: 'Custom 3',\n [TextStyles.ELEMENT_QUOTE]: 'Quote',\n [TextStyles.ELEMENT_LINK]: 'Link',\n [TextStyles.ELEMENT_PARAGRAPH]: 'Body Text',\n [TextStyles.ELEMENT_IMAGE_TITLE]: 'Image Title',\n [TextStyles.ELEMENT_IMAGE_CAPTION]: 'Image Caption',\n};\n\nexport const AVAILABLE_STYLE_TITLES = { ...listStyleTitle, ...textStyleTitle };\nexport const AVAILABLE_STYLE = Object.values({ ...ListStyles, ...TextStyles });\n\nexport type AvailableStyles = ListStyles | TextStyles;\n"],"names":["DEFAULT_TEXT_STYLE_VALUE","ListStyles","listStyleTitle","TextStyles","textStyleTitle","AVAILABLE_STYLE_TITLES","AVAILABLE_STYLE"],"mappings":"AAEO,MAAMA,IAA2B;AAE5B,IAAAC,sBAAAA,OACRA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,iBAAiB,iBACjBA,EAAA,MAAM,OAJEA,IAAAA,KAAA,CAAA,CAAA;AAML,MAAMC,IAA6C;AAAA,EACrD,IAAgB;AAAA,EAChB,IAAgB;AAAA,EAChB,eAA4B;AAAA,EAC5B,KAAiB;AACtB;AAQY,IAAAC,sBAAAA,OACRA,EAAA,mBAAmB,YACnBA,EAAA,mBAAmB,YACnBA,EAAA,mBAAmB,YACnBA,EAAA,mBAAmB,YACnBA,EAAA,kBAAkB,WAClBA,EAAA,kBAAkB,WAClBA,EAAA,kBAAkB,WAClBA,EAAA,sBAAsB,cACtBA,EAAA,wBAAwB,gBACxBA,EAAA,gBAAgB,SAChBA,EAAA,eAAe,QACfA,EAAA,oBAAoB,KAZZA,IAAAA,KAAA,CAAA,CAAA;AAiBL,MAAMC,IAA6C;AAAA,EACrD,UAA8B;AAAA,EAC9B,UAA8B;AAAA,EAC9B,UAA8B;AAAA,EAC9B,UAA8B;AAAA,EAC9B,SAA6B;AAAA,EAC7B,SAA6B;AAAA,EAC7B,SAA6B;AAAA,EAC7B,OAA2B;AAAA,EAC3B,MAA0B;AAAA,EAC1B,GAA+B;AAAA,EAC/B,YAAiC;AAAA,EACjC,cAAmC;AACxC,GAEaC,IAAyB,EAAE,GAAGH,GAAgB,GAAGE,EAAe,GAChEE,IAAkB,OAAO,OAAO,EAAE,GAAGL,GAAY,GAAGE,EAAY,CAAA;"}
1
+ {"version":3,"file":"textStyles.es.js","sources":["../../../../../../src/components/RichTextEditor/Plugins/TextStylePlugin/TextStyles/textStyles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport const DEFAULT_TEXT_STYLE_VALUE = 'Mixed';\n\nexport enum ListStyles {\n UL = 'ul',\n OL = 'ol',\n CHECKLIST_ITEM = 'checkbox_item',\n LIC = 'lic',\n}\nexport const listStyleTitle: Record<ListStyles, string> = {\n [ListStyles.UL]: 'Bullet List',\n [ListStyles.OL]: 'List',\n [ListStyles.CHECKLIST_ITEM]: 'Checklist',\n [ListStyles.LIC]: 'List Item Content',\n};\n\nexport enum ButtonStyles {\n ELEMENT_BUTTON_PRIMARY = 'buttonPrimary',\n ELEMENT_BUTTON_SECONDARY = 'buttonSecondary',\n ELEMENT_BUTTON_TERTIARY = 'buttonTertiary',\n}\n\nexport enum TextStyles {\n ELEMENT_HEADING1 = 'heading1',\n ELEMENT_HEADING2 = 'heading2',\n ELEMENT_HEADING3 = 'heading3',\n ELEMENT_HEADING4 = 'heading4',\n ELEMENT_CUSTOM1 = 'custom1',\n ELEMENT_CUSTOM2 = 'custom2',\n ELEMENT_CUSTOM3 = 'custom3',\n ELEMENT_IMAGE_TITLE = 'imageTitle',\n ELEMENT_IMAGE_CAPTION = 'imageCaption',\n ELEMENT_QUOTE = 'quote',\n ELEMENT_LINK = 'link',\n ELEMENT_PARAGRAPH = 'p',\n}\n\nexport type SelectableTextStyles = Exclude<TextStyles, TextStyles.ELEMENT_LINK>;\n\nexport const textStyleTitle: Record<TextStyles, string> = {\n [TextStyles.ELEMENT_HEADING1]: 'Heading 1',\n [TextStyles.ELEMENT_HEADING2]: 'Heading 2',\n [TextStyles.ELEMENT_HEADING3]: 'Heading 3',\n [TextStyles.ELEMENT_HEADING4]: 'Heading 4',\n [TextStyles.ELEMENT_CUSTOM1]: 'Custom 1',\n [TextStyles.ELEMENT_CUSTOM2]: 'Custom 2',\n [TextStyles.ELEMENT_CUSTOM3]: 'Custom 3',\n [TextStyles.ELEMENT_QUOTE]: 'Quote',\n [TextStyles.ELEMENT_LINK]: 'Link',\n [TextStyles.ELEMENT_PARAGRAPH]: 'Body Text',\n [TextStyles.ELEMENT_IMAGE_TITLE]: 'Image Title',\n [TextStyles.ELEMENT_IMAGE_CAPTION]: 'Image Caption',\n};\n\nexport const AVAILABLE_STYLE_TITLES = { ...listStyleTitle, ...textStyleTitle };\nexport const AVAILABLE_STYLE = Object.values({ ...ListStyles, ...TextStyles });\n\nexport type AvailableStyles = ListStyles | TextStyles;\n"],"names":["DEFAULT_TEXT_STYLE_VALUE","ListStyles","listStyleTitle","TextStyles","textStyleTitle","AVAILABLE_STYLE_TITLES"],"mappings":"AAEO,MAAMA,IAA2B;AAE5B,IAAAC,sBAAAA,OACRA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,iBAAiB,iBACjBA,EAAA,MAAM,OAJEA,IAAAA,KAAA,CAAA,CAAA;AAML,MAAMC,IAA6C;AAAA,EACrD,IAAgB;AAAA,EAChB,IAAgB;AAAA,EAChB,eAA4B;AAAA,EAC5B,KAAiB;AACtB;AAQY,IAAAC,sBAAAA,OACRA,EAAA,mBAAmB,YACnBA,EAAA,mBAAmB,YACnBA,EAAA,mBAAmB,YACnBA,EAAA,mBAAmB,YACnBA,EAAA,kBAAkB,WAClBA,EAAA,kBAAkB,WAClBA,EAAA,kBAAkB,WAClBA,EAAA,sBAAsB,cACtBA,EAAA,wBAAwB,gBACxBA,EAAA,gBAAgB,SAChBA,EAAA,eAAe,QACfA,EAAA,oBAAoB,KAZZA,IAAAA,KAAA,CAAA,CAAA;AAiBL,MAAMC,IAA6C;AAAA,EACrD,UAA8B;AAAA,EAC9B,UAA8B;AAAA,EAC9B,UAA8B;AAAA,EAC9B,UAA8B;AAAA,EAC9B,SAA6B;AAAA,EAC7B,SAA6B;AAAA,EAC7B,SAA6B;AAAA,EAC7B,OAA2B;AAAA,EAC3B,MAA0B;AAAA,EAC1B,GAA+B;AAAA,EAC/B,YAAiC;AAAA,EACjC,cAAmC;AACxC,GAEaC,IAAyB,EAAE,GAAGH,GAAgB,GAAGE,EAAe;AAC9C,OAAO,OAAO,EAAE,GAAGH,GAAY,GAAGE,EAAY,CAAA;"}
@@ -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":"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"}
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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"}