@webiny/lexical-editor 5.36.1-beta.1 → 5.36.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/commands/webiny-list.d.ts +1 -1
  2. package/commands/webiny-list.js.map +1 -1
  3. package/components/ToolbarActions/BulletListAction.js +7 -2
  4. package/components/ToolbarActions/BulletListAction.js.map +1 -1
  5. package/components/ToolbarActions/FontSizeAction.js +1 -1
  6. package/components/ToolbarActions/FontSizeAction.js.map +1 -1
  7. package/components/ToolbarActions/NumberedListAction.js +7 -2
  8. package/components/ToolbarActions/NumberedListAction.js.map +1 -1
  9. package/hooks/useList.d.ts +2 -0
  10. package/hooks/{useWebinyList.js → useList.js} +3 -3
  11. package/hooks/useList.js.map +1 -0
  12. package/nodes/{list-node/WebinyListItemNode.d.ts → ListItemNode.d.ts} +7 -7
  13. package/nodes/{list-node/WebinyListItemNode.js → ListItemNode.js} +49 -50
  14. package/nodes/ListItemNode.js.map +1 -0
  15. package/nodes/{list-node → ListNode}/formatList.d.ts +6 -6
  16. package/nodes/{list-node → ListNode}/formatList.js +38 -38
  17. package/nodes/ListNode/formatList.js.map +1 -0
  18. package/nodes/{list-node/WebinyListNode.d.ts → ListNode.d.ts} +11 -7
  19. package/nodes/{list-node/WebinyListNode.js → ListNode.js} +70 -29
  20. package/nodes/ListNode.js.map +1 -0
  21. package/nodes/webinyNodes.js +3 -3
  22. package/nodes/webinyNodes.js.map +1 -1
  23. package/package.json +5 -5
  24. package/plugins/WebinyListPLugin/WebinyListPlugin.js +5 -5
  25. package/plugins/WebinyListPLugin/WebinyListPlugin.js.map +1 -1
  26. package/utils/getLexicalTextSelectionState.js +3 -3
  27. package/utils/getLexicalTextSelectionState.js.map +1 -1
  28. package/utils/nodes/listNode.d.ts +11 -0
  29. package/utils/nodes/{list-node.js → listNode.js} +13 -13
  30. package/utils/nodes/listNode.js.map +1 -0
  31. package/hooks/useWebinyList.d.ts +0 -2
  32. package/hooks/useWebinyList.js.map +0 -1
  33. package/nodes/list-node/WebinyListItemNode.js.map +0 -1
  34. package/nodes/list-node/WebinyListNode.js.map +0 -1
  35. package/nodes/list-node/formatList.js.map +0 -1
  36. package/utils/nodes/list-node.d.ts +0 -11
  37. package/utils/nodes/list-node.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { LexicalCommand } from "lexical";
2
2
  export declare type WebinyListCommandPayload = {
3
- themeStyleId: string;
3
+ themeStyleId?: string;
4
4
  };
5
5
  export declare const INSERT_UNORDERED_WEBINY_LIST_COMMAND: LexicalCommand<WebinyListCommandPayload>;
6
6
  export declare const INSERT_ORDERED_WEBINY_LIST_COMMAND: LexicalCommand<WebinyListCommandPayload>;
@@ -1 +1 @@
1
- {"version":3,"names":["INSERT_UNORDERED_WEBINY_LIST_COMMAND","createCommand","INSERT_ORDERED_WEBINY_LIST_COMMAND","REMOVE_WEBINY_LIST_COMMAND"],"sources":["webiny-list.ts"],"sourcesContent":["import { createCommand, LexicalCommand } from \"lexical\";\n\nexport type WebinyListCommandPayload = {\n themeStyleId: string;\n};\n\nexport const INSERT_UNORDERED_WEBINY_LIST_COMMAND: LexicalCommand<WebinyListCommandPayload> =\n createCommand(\"INSERT_UNORDERED_WEBINY_LIST_COMMAND\");\nexport const INSERT_ORDERED_WEBINY_LIST_COMMAND: LexicalCommand<WebinyListCommandPayload> =\n createCommand(\"INSERT_ORDERED_WEBINY_LIST_COMMAND\");\n\nexport const REMOVE_WEBINY_LIST_COMMAND: LexicalCommand<void> = createCommand(\n \"REMOVE_WEBINY_LIST_COMMAND\"\n);\n"],"mappings":";;;;;;AAAA;AAMO,IAAMA,oCAA8E,GACvF,IAAAC,sBAAa,EAAC,sCAAsC,CAAC;AAAC;AACnD,IAAMC,kCAA4E,GACrF,IAAAD,sBAAa,EAAC,oCAAoC,CAAC;AAAC;AAEjD,IAAME,0BAAgD,GAAG,IAAAF,sBAAa,EACzE,4BAA4B,CAC/B;AAAC"}
1
+ {"version":3,"names":["INSERT_UNORDERED_WEBINY_LIST_COMMAND","createCommand","INSERT_ORDERED_WEBINY_LIST_COMMAND","REMOVE_WEBINY_LIST_COMMAND"],"sources":["webiny-list.ts"],"sourcesContent":["import { createCommand, LexicalCommand } from \"lexical\";\n\nexport type WebinyListCommandPayload = {\n themeStyleId?: string;\n};\n\nexport const INSERT_UNORDERED_WEBINY_LIST_COMMAND: LexicalCommand<WebinyListCommandPayload> =\n createCommand(\"INSERT_UNORDERED_WEBINY_LIST_COMMAND\");\nexport const INSERT_ORDERED_WEBINY_LIST_COMMAND: LexicalCommand<WebinyListCommandPayload> =\n createCommand(\"INSERT_ORDERED_WEBINY_LIST_COMMAND\");\n\nexport const REMOVE_WEBINY_LIST_COMMAND: LexicalCommand<void> = createCommand(\n \"REMOVE_WEBINY_LIST_COMMAND\"\n);\n"],"mappings":";;;;;;AAAA;AAMO,IAAMA,oCAA8E,GACvF,IAAAC,sBAAa,EAAC,sCAAsC,CAAC;AAAC;AACnD,IAAMC,kCAA4E,GACrF,IAAAD,sBAAa,EAAC,oCAAoC,CAAC;AAAC;AAEjD,IAAME,0BAAgD,GAAG,IAAAF,sBAAa,EACzE,4BAA4B,CAC/B;AAAC"}
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
12
12
  var _webinyList = require("../../commands/webiny-list");
13
13
  var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
14
+ var _findTypographyStyleByHtmlTag = require("../../utils/findTypographyStyleByHtmlTag");
14
15
  var BulletListAction = function BulletListAction() {
15
16
  var _textBlockSelection$s;
16
17
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
@@ -21,7 +22,8 @@ var BulletListAction = function BulletListAction() {
21
22
  isActive = _useState2[0],
22
23
  setIsActive = _useState2[1];
23
24
  var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
24
- textBlockSelection = _useRichTextEditor.textBlockSelection;
25
+ textBlockSelection = _useRichTextEditor.textBlockSelection,
26
+ themeEmotionMap = _useRichTextEditor.themeEmotionMap;
25
27
  var isListSelected = textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s = textBlockSelection.state) === null || _textBlockSelection$s === void 0 ? void 0 : _textBlockSelection$s.list.isSelected;
26
28
  (0, _react.useEffect)(function () {
27
29
  var _textBlockSelection$s2;
@@ -30,10 +32,13 @@ var BulletListAction = function BulletListAction() {
30
32
  }, [isListSelected]);
31
33
  var formatBulletList = function formatBulletList() {
32
34
  if (!isActive) {
35
+ var _findTypographyStyleB;
36
+ var styleId = themeEmotionMap ? (_findTypographyStyleB = (0, _findTypographyStyleByHtmlTag.findTypographyStyleByHtmlTag)("ul", themeEmotionMap)) === null || _findTypographyStyleB === void 0 ? void 0 : _findTypographyStyleB.id : undefined;
33
37
  // will update the active state in the useEffect
34
38
  editor.dispatchCommand(_webinyList.INSERT_UNORDERED_WEBINY_LIST_COMMAND, {
35
- themeStyleId: "list"
39
+ themeStyleId: styleId
36
40
  });
41
+ setIsActive(true);
37
42
  } else {
38
43
  editor.dispatchCommand(_webinyList.REMOVE_WEBINY_LIST_COMMAND, undefined);
39
44
  }
@@ -1 +1 @@
1
- {"version":3,"names":["BulletListAction","useLexicalComposerContext","editor","useState","isActive","setIsActive","useRichTextEditor","textBlockSelection","isListSelected","state","list","isSelected","useEffect","isListBulletType","textType","formatBulletList","dispatchCommand","INSERT_UNORDERED_WEBINY_LIST_COMMAND","themeStyleId","REMOVE_WEBINY_LIST_COMMAND","undefined"],"sources":["BulletListAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\n\nexport const BulletListAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection } = useRichTextEditor();\n const isListSelected = textBlockSelection?.state?.list.isSelected;\n\n useEffect(() => {\n const isListBulletType = textBlockSelection?.state?.textType === \"bullet\";\n setIsActive(isListBulletType);\n }, [isListSelected]);\n\n const formatBulletList = () => {\n if (!isActive) {\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_UNORDERED_WEBINY_LIST_COMMAND, { themeStyleId: \"list\" });\n } else {\n editor.dispatchCommand(REMOVE_WEBINY_LIST_COMMAND, undefined);\n }\n };\n\n return (\n <button\n onClick={() => formatBulletList()}\n className={\"popup-item spaced \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as bullet list\"\n >\n <i className=\"icon bullet-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AAIA;AAEO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgB,GAAS;EAAA;EAClC,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjDC,QAAQ;IAAEC,WAAW;EAC5B,yBAA+B,IAAAC,qCAAiB,GAAE;IAA1CC,kBAAkB,sBAAlBA,kBAAkB;EAC1B,IAAMC,cAAc,GAAGD,kBAAkB,aAAlBA,kBAAkB,gDAAlBA,kBAAkB,CAAEE,KAAK,0DAAzB,sBAA2BC,IAAI,CAACC,UAAU;EAEjE,IAAAC,gBAAS,EAAC,YAAM;IAAA;IACZ,IAAMC,gBAAgB,GAAG,CAAAN,kBAAkB,aAAlBA,kBAAkB,iDAAlBA,kBAAkB,CAAEE,KAAK,2DAAzB,uBAA2BK,QAAQ,MAAK,QAAQ;IACzET,WAAW,CAACQ,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACL,cAAc,CAAC,CAAC;EAEpB,IAAMO,gBAAgB,GAAG,SAAnBA,gBAAgB,GAAS;IAC3B,IAAI,CAACX,QAAQ,EAAE;MACX;MACAF,MAAM,CAACc,eAAe,CAACC,gDAAoC,EAAE;QAAEC,YAAY,EAAE;MAAO,CAAC,CAAC;IAC1F,CAAC,MAAM;MACHhB,MAAM,CAACc,eAAe,CAACG,sCAA0B,EAAEC,SAAS,CAAC;IACjE;EACJ,CAAC;EAED,oBACI;IACI,OAAO,EAAE;MAAA,OAAML,gBAAgB,EAAE;IAAA,CAAC;IAClC,SAAS,EAAE,oBAAoB,IAAIX,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA4B,gBAEvC;IAAG,SAAS,EAAC;EAAkB,EAAG,CAC7B;AAEjB,CAAC;AAAC"}
1
+ {"version":3,"names":["BulletListAction","useLexicalComposerContext","editor","useState","isActive","setIsActive","useRichTextEditor","textBlockSelection","themeEmotionMap","isListSelected","state","list","isSelected","useEffect","isListBulletType","textType","formatBulletList","styleId","findTypographyStyleByHtmlTag","id","undefined","dispatchCommand","INSERT_UNORDERED_WEBINY_LIST_COMMAND","themeStyleId","REMOVE_WEBINY_LIST_COMMAND"],"sources":["BulletListAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\n\nexport const BulletListAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection, themeEmotionMap } = useRichTextEditor();\n const isListSelected = textBlockSelection?.state?.list.isSelected;\n\n useEffect(() => {\n const isListBulletType = textBlockSelection?.state?.textType === \"bullet\";\n setIsActive(isListBulletType);\n }, [isListSelected]);\n\n const formatBulletList = () => {\n if (!isActive) {\n const styleId = themeEmotionMap\n ? findTypographyStyleByHtmlTag(\"ul\", themeEmotionMap)?.id\n : undefined;\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_UNORDERED_WEBINY_LIST_COMMAND, { themeStyleId: styleId });\n setIsActive(true);\n } else {\n editor.dispatchCommand(REMOVE_WEBINY_LIST_COMMAND, undefined);\n }\n };\n\n return (\n <button\n onClick={() => formatBulletList()}\n className={\"popup-item spaced \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as bullet list\"\n >\n <i className=\"icon bullet-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AAIA;AACA;AAEO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgB,GAAS;EAAA;EAClC,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjDC,QAAQ;IAAEC,WAAW;EAC5B,yBAAgD,IAAAC,qCAAiB,GAAE;IAA3DC,kBAAkB,sBAAlBA,kBAAkB;IAAEC,eAAe,sBAAfA,eAAe;EAC3C,IAAMC,cAAc,GAAGF,kBAAkB,aAAlBA,kBAAkB,gDAAlBA,kBAAkB,CAAEG,KAAK,0DAAzB,sBAA2BC,IAAI,CAACC,UAAU;EAEjE,IAAAC,gBAAS,EAAC,YAAM;IAAA;IACZ,IAAMC,gBAAgB,GAAG,CAAAP,kBAAkB,aAAlBA,kBAAkB,iDAAlBA,kBAAkB,CAAEG,KAAK,2DAAzB,uBAA2BK,QAAQ,MAAK,QAAQ;IACzEV,WAAW,CAACS,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACL,cAAc,CAAC,CAAC;EAEpB,IAAMO,gBAAgB,GAAG,SAAnBA,gBAAgB,GAAS;IAC3B,IAAI,CAACZ,QAAQ,EAAE;MAAA;MACX,IAAMa,OAAO,GAAGT,eAAe,4BACzB,IAAAU,0DAA4B,EAAC,IAAI,EAAEV,eAAe,CAAC,0DAAnD,sBAAqDW,EAAE,GACvDC,SAAS;MACf;MACAlB,MAAM,CAACmB,eAAe,CAACC,gDAAoC,EAAE;QAAEC,YAAY,EAAEN;MAAQ,CAAC,CAAC;MACvFZ,WAAW,CAAC,IAAI,CAAC;IACrB,CAAC,MAAM;MACHH,MAAM,CAACmB,eAAe,CAACG,sCAA0B,EAAEJ,SAAS,CAAC;IACjE;EACJ,CAAC;EAED,oBACI;IACI,OAAO,EAAE;MAAA,OAAMJ,gBAAgB,EAAE;IAAA,CAAC;IAClC,SAAS,EAAE,oBAAoB,IAAIZ,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA4B,gBAEvC;IAAG,SAAS,EAAC;EAAkB,EAAG,CAC7B;AAEjB,CAAC;AAAC"}
@@ -84,7 +84,7 @@ var FontSizeAction = function FontSizeAction() {
84
84
  updateToolbar();
85
85
  });
86
86
  }));
87
- }, [activeEditor, editor, updateToolbar]);
87
+ }, [activeEditor, editor]);
88
88
  (0, _react.useEffect)(function () {
89
89
  return editor.registerCommand(_lexical.SELECTION_CHANGE_COMMAND, function (_payload, newEditor) {
90
90
  updateToolbar();
@@ -1 +1 @@
1
- {"version":3,"names":["FONT_SIZE_OPTIONS","dropDownActiveClass","active","FontSizeDropDown","props","editor","value","disabled","handleClick","useCallback","option","update","selection","$getSelection","$isRangeSelection","$patchStyleText","map","FontSizeAction","useLexicalComposerContext","useState","isEditable","setIsEditable","activeEditor","setActiveEditor","fontSize","setFontSize","updateToolbar","$getSelectionStyleValueForProperty","useEffect","mergeRegister","registerEditableListener","editable","registerUpdateListener","editorState","read","registerCommand","SELECTION_CHANGE_COMMAND","_payload","newEditor","COMMAND_PRIORITY_CRITICAL"],"sources":["FontSizeAction.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelectionStyleValueForProperty, $patchStyleText } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { DropDown, DropDownItem } from \"../../ui/DropDown\";\n\nconst FONT_SIZE_OPTIONS: string[] = [\n \"8px\",\n \"9px\",\n \"10px\",\n \"11px\",\n \"12px\",\n \"14px\",\n \"15px\",\n \"16px\",\n \"18px\",\n \"21px\",\n \"24px\",\n \"30px\",\n \"36px\",\n \"48px\",\n \"60px\",\n \"72px\",\n \"96px\"\n];\n\nfunction dropDownActiveClass(active: boolean) {\n if (active) {\n return \"active dropdown-item-active\";\n }\n return \"\";\n}\n\ninterface FontSizeDropDownProps {\n editor: LexicalEditor;\n value: string;\n disabled?: boolean;\n}\n\nfunction FontSizeDropDown(props: FontSizeDropDownProps): JSX.Element {\n const { editor, value, disabled = false } = props;\n\n const handleClick = useCallback(\n (option: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n [\"font-size\"]: option\n });\n }\n });\n },\n [editor]\n );\n\n return (\n <DropDown\n disabled={disabled}\n buttonClassName=\"toolbar-item font-size\"\n buttonLabel={value}\n buttonAriaLabel={\"Formatting options for font size\"}\n >\n {FONT_SIZE_OPTIONS.map(option => (\n <DropDownItem\n className={`item fontsize-item ${dropDownActiveClass(value === option)}`}\n onClick={() => handleClick(option)}\n key={option}\n >\n <span className=\"text\">{option}</span>\n </DropDownItem>\n ))}\n </DropDown>\n );\n}\n\nexport const FontSizeAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isEditable, setIsEditable] = useState(() => editor.isEditable());\n const [activeEditor, setActiveEditor] = useState(editor);\n const [fontSize, setFontSize] = useState<string>(\"15px\");\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n setFontSize($getSelectionStyleValueForProperty(selection, \"font-size\", \"15px\"));\n }\n }, [activeEditor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerEditableListener(editable => {\n setIsEditable(editable);\n }),\n activeEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n })\n );\n }, [activeEditor, editor, updateToolbar]);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n return (\n <>\n <FontSizeDropDown disabled={!isEditable} value={fontSize} editor={editor} />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAOA;AAEA,IAAMA,iBAA2B,GAAG,CAChC,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACT;AAED,SAASC,mBAAmB,CAACC,MAAe,EAAE;EAC1C,IAAIA,MAAM,EAAE;IACR,OAAO,6BAA6B;EACxC;EACA,OAAO,EAAE;AACb;AAQA,SAASC,gBAAgB,CAACC,KAA4B,EAAe;EACjE,IAAQC,MAAM,GAA8BD,KAAK,CAAzCC,MAAM;IAAEC,KAAK,GAAuBF,KAAK,CAAjCE,KAAK;IAAA,kBAAuBF,KAAK,CAA1BG,QAAQ;IAARA,QAAQ,gCAAG,KAAK;EAEvC,IAAMC,WAAW,GAAG,IAAAC,kBAAW,EAC3B,UAACC,MAAc,EAAK;IAChBL,MAAM,CAACM,MAAM,CAAC,YAAM;MAChB,IAAMC,SAAS,GAAG,IAAAC,sBAAa,GAAE;MACjC,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;QAC9B,IAAAG,0BAAe,EAACH,SAAS,oCACpB,WAAW,EAAGF,MAAM,EACvB;MACN;IACJ,CAAC,CAAC;EACN,CAAC,EACD,CAACL,MAAM,CAAC,CACX;EAED,oBACI,6BAAC,kBAAQ;IACL,QAAQ,EAAEE,QAAS;IACnB,eAAe,EAAC,wBAAwB;IACxC,WAAW,EAAED,KAAM;IACnB,eAAe,EAAE;EAAmC,GAEnDN,iBAAiB,CAACgB,GAAG,CAAC,UAAAN,MAAM;IAAA,oBACzB,6BAAC,sBAAY;MACT,SAAS,+BAAwBT,mBAAmB,CAACK,KAAK,KAAKI,MAAM,CAAC,CAAG;MACzE,OAAO,EAAE;QAAA,OAAMF,WAAW,CAACE,MAAM,CAAC;MAAA,CAAC;MACnC,GAAG,EAAEA;IAAO,gBAEZ;MAAM,SAAS,EAAC;IAAM,GAAEA,MAAM,CAAQ,CAC3B;EAAA,CAClB,CAAC,CACK;AAEnB;AAEO,IAAMO,cAAc,GAAG,SAAjBA,cAAc,GAAS;EAChC,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCb,MAAM;EACb,gBAAoC,IAAAc,eAAQ,EAAC;MAAA,OAAMd,MAAM,CAACe,UAAU,EAAE;IAAA,EAAC;IAAA;IAAhEA,UAAU;IAAEC,aAAa;EAChC,iBAAwC,IAAAF,eAAQ,EAACd,MAAM,CAAC;IAAA;IAAjDiB,YAAY;IAAEC,eAAe;EACpC,iBAAgC,IAAAJ,eAAQ,EAAS,MAAM,CAAC;IAAA;IAAjDK,QAAQ;IAAEC,WAAW;EAE5B,IAAMC,aAAa,GAAG,IAAAjB,kBAAW,EAAC,YAAM;IACpC,IAAMG,SAAS,GAAG,IAAAC,sBAAa,GAAE;IACjC,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;MAC9Ba,WAAW,CAAC,IAAAE,6CAAkC,EAACf,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACnF;EACJ,CAAC,EAAE,CAACU,YAAY,CAAC,CAAC;EAElB,IAAAM,gBAAS,EAAC,YAAM;IACZ,OAAO,IAAAC,oBAAa,EAChBxB,MAAM,CAACyB,wBAAwB,CAAC,UAAAC,QAAQ,EAAI;MACxCV,aAAa,CAACU,QAAQ,CAAC;IAC3B,CAAC,CAAC,EACFT,YAAY,CAACU,sBAAsB,CAAC,gBAAqB;MAAA,IAAlBC,WAAW,QAAXA,WAAW;MAC9CA,WAAW,CAACC,IAAI,CAAC,YAAM;QACnBR,aAAa,EAAE;MACnB,CAAC,CAAC;IACN,CAAC,CAAC,CACL;EACL,CAAC,EAAE,CAACJ,YAAY,EAAEjB,MAAM,EAAEqB,aAAa,CAAC,CAAC;EAEzC,IAAAE,gBAAS,EAAC,YAAM;IACZ,OAAOvB,MAAM,CAAC8B,eAAe,CACzBC,iCAAwB,EACxB,UAACC,QAAQ,EAAEC,SAAS,EAAK;MACrBZ,aAAa,EAAE;MACfH,eAAe,CAACe,SAAS,CAAC;MAC1B,OAAO,KAAK;IAChB,CAAC,EACDC,kCAAyB,CAC5B;EACL,CAAC,EAAE,CAAClC,MAAM,EAAEqB,aAAa,CAAC,CAAC;EAC3B,oBACI,yEACI,6BAAC,gBAAgB;IAAC,QAAQ,EAAE,CAACN,UAAW;IAAC,KAAK,EAAEI,QAAS;IAAC,MAAM,EAAEnB;EAAO,EAAG,CAC7E;AAEX,CAAC;AAAC"}
1
+ {"version":3,"names":["FONT_SIZE_OPTIONS","dropDownActiveClass","active","FontSizeDropDown","props","editor","value","disabled","handleClick","useCallback","option","update","selection","$getSelection","$isRangeSelection","$patchStyleText","map","FontSizeAction","useLexicalComposerContext","useState","isEditable","setIsEditable","activeEditor","setActiveEditor","fontSize","setFontSize","updateToolbar","$getSelectionStyleValueForProperty","useEffect","mergeRegister","registerEditableListener","editable","registerUpdateListener","editorState","read","registerCommand","SELECTION_CHANGE_COMMAND","_payload","newEditor","COMMAND_PRIORITY_CRITICAL"],"sources":["FontSizeAction.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelectionStyleValueForProperty, $patchStyleText } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { DropDown, DropDownItem } from \"../../ui/DropDown\";\n\nconst FONT_SIZE_OPTIONS: string[] = [\n \"8px\",\n \"9px\",\n \"10px\",\n \"11px\",\n \"12px\",\n \"14px\",\n \"15px\",\n \"16px\",\n \"18px\",\n \"21px\",\n \"24px\",\n \"30px\",\n \"36px\",\n \"48px\",\n \"60px\",\n \"72px\",\n \"96px\"\n];\n\nfunction dropDownActiveClass(active: boolean) {\n if (active) {\n return \"active dropdown-item-active\";\n }\n return \"\";\n}\n\ninterface FontSizeDropDownProps {\n editor: LexicalEditor;\n value: string;\n disabled?: boolean;\n}\n\nfunction FontSizeDropDown(props: FontSizeDropDownProps): JSX.Element {\n const { editor, value, disabled = false } = props;\n\n const handleClick = useCallback(\n (option: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n [\"font-size\"]: option\n });\n }\n });\n },\n [editor]\n );\n\n return (\n <DropDown\n disabled={disabled}\n buttonClassName=\"toolbar-item font-size\"\n buttonLabel={value}\n buttonAriaLabel={\"Formatting options for font size\"}\n >\n {FONT_SIZE_OPTIONS.map(option => (\n <DropDownItem\n className={`item fontsize-item ${dropDownActiveClass(value === option)}`}\n onClick={() => handleClick(option)}\n key={option}\n >\n <span className=\"text\">{option}</span>\n </DropDownItem>\n ))}\n </DropDown>\n );\n}\n\nexport const FontSizeAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isEditable, setIsEditable] = useState(() => editor.isEditable());\n const [activeEditor, setActiveEditor] = useState(editor);\n const [fontSize, setFontSize] = useState<string>(\"15px\");\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n setFontSize($getSelectionStyleValueForProperty(selection, \"font-size\", \"15px\"));\n }\n }, [activeEditor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerEditableListener(editable => {\n setIsEditable(editable);\n }),\n activeEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n })\n );\n }, [activeEditor, editor]);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n return (\n <>\n <FontSizeDropDown disabled={!isEditable} value={fontSize} editor={editor} />\n </>\n );\n};\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
12
12
  var _webinyList = require("../../commands/webiny-list");
13
13
  var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
14
+ var _findTypographyStyleByHtmlTag = require("../../utils/findTypographyStyleByHtmlTag");
14
15
  var NumberedListAction = function NumberedListAction() {
15
16
  var _textBlockSelection$s;
16
17
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
@@ -21,7 +22,8 @@ var NumberedListAction = function NumberedListAction() {
21
22
  isActive = _useState2[0],
22
23
  setIsActive = _useState2[1];
23
24
  var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
24
- textBlockSelection = _useRichTextEditor.textBlockSelection;
25
+ textBlockSelection = _useRichTextEditor.textBlockSelection,
26
+ themeEmotionMap = _useRichTextEditor.themeEmotionMap;
25
27
  var isListSelected = textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s = textBlockSelection.state) === null || _textBlockSelection$s === void 0 ? void 0 : _textBlockSelection$s.list.isSelected;
26
28
  (0, _react.useEffect)(function () {
27
29
  var _textBlockSelection$s2;
@@ -30,10 +32,13 @@ var NumberedListAction = function NumberedListAction() {
30
32
  }, [isListSelected]);
31
33
  var formatNumberedList = function formatNumberedList() {
32
34
  if (!isActive) {
35
+ var _findTypographyStyleB;
36
+ var styleId = themeEmotionMap ? (_findTypographyStyleB = (0, _findTypographyStyleByHtmlTag.findTypographyStyleByHtmlTag)("ol", themeEmotionMap)) === null || _findTypographyStyleB === void 0 ? void 0 : _findTypographyStyleB.id : undefined;
33
37
  // will update the active state in the useEffect
34
38
  editor.dispatchCommand(_webinyList.INSERT_ORDERED_WEBINY_LIST_COMMAND, {
35
- themeStyleId: "list"
39
+ themeStyleId: styleId
36
40
  });
41
+ setIsActive(true);
37
42
  } else {
38
43
  editor.dispatchCommand(_webinyList.REMOVE_WEBINY_LIST_COMMAND, undefined);
39
44
  // removing will not update correctly the active state, so we need to set to false manually.
@@ -1 +1 @@
1
- {"version":3,"names":["NumberedListAction","useLexicalComposerContext","editor","useState","isActive","setIsActive","useRichTextEditor","textBlockSelection","isListSelected","state","list","isSelected","useEffect","isListBulletType","textType","formatNumberedList","dispatchCommand","INSERT_ORDERED_WEBINY_LIST_COMMAND","themeStyleId","REMOVE_WEBINY_LIST_COMMAND","undefined"],"sources":["NumberedListAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\n\nexport const NumberedListAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection } = useRichTextEditor();\n const isListSelected = textBlockSelection?.state?.list.isSelected;\n\n useEffect(() => {\n const isListBulletType = textBlockSelection?.state?.textType === \"number\";\n setIsActive(isListBulletType);\n }, [isListSelected]);\n\n const formatNumberedList = () => {\n if (!isActive) {\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_ORDERED_WEBINY_LIST_COMMAND, { themeStyleId: \"list\" });\n } else {\n editor.dispatchCommand(REMOVE_WEBINY_LIST_COMMAND, undefined);\n // removing will not update correctly the active state, so we need to set to false manually.\n setIsActive(false);\n }\n };\n\n return (\n <button\n onClick={() => formatNumberedList()}\n className={\"popup-item spaced \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as numbered list\"\n >\n <i className=\"icon numbered-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AAIA;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;EAAA;EACpC,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjDC,QAAQ;IAAEC,WAAW;EAC5B,yBAA+B,IAAAC,qCAAiB,GAAE;IAA1CC,kBAAkB,sBAAlBA,kBAAkB;EAC1B,IAAMC,cAAc,GAAGD,kBAAkB,aAAlBA,kBAAkB,gDAAlBA,kBAAkB,CAAEE,KAAK,0DAAzB,sBAA2BC,IAAI,CAACC,UAAU;EAEjE,IAAAC,gBAAS,EAAC,YAAM;IAAA;IACZ,IAAMC,gBAAgB,GAAG,CAAAN,kBAAkB,aAAlBA,kBAAkB,iDAAlBA,kBAAkB,CAAEE,KAAK,2DAAzB,uBAA2BK,QAAQ,MAAK,QAAQ;IACzET,WAAW,CAACQ,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACL,cAAc,CAAC,CAAC;EAEpB,IAAMO,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;IAC7B,IAAI,CAACX,QAAQ,EAAE;MACX;MACAF,MAAM,CAACc,eAAe,CAACC,8CAAkC,EAAE;QAAEC,YAAY,EAAE;MAAO,CAAC,CAAC;IACxF,CAAC,MAAM;MACHhB,MAAM,CAACc,eAAe,CAACG,sCAA0B,EAAEC,SAAS,CAAC;MAC7D;MACAf,WAAW,CAAC,KAAK,CAAC;IACtB;EACJ,CAAC;EAED,oBACI;IACI,OAAO,EAAE;MAAA,OAAMU,kBAAkB,EAAE;IAAA,CAAC;IACpC,SAAS,EAAE,oBAAoB,IAAIX,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA8B,gBAEzC;IAAG,SAAS,EAAC;EAAoB,EAAG,CAC/B;AAEjB,CAAC;AAAC"}
1
+ {"version":3,"names":["NumberedListAction","useLexicalComposerContext","editor","useState","isActive","setIsActive","useRichTextEditor","textBlockSelection","themeEmotionMap","isListSelected","state","list","isSelected","useEffect","isListBulletType","textType","formatNumberedList","styleId","findTypographyStyleByHtmlTag","id","undefined","dispatchCommand","INSERT_ORDERED_WEBINY_LIST_COMMAND","themeStyleId","REMOVE_WEBINY_LIST_COMMAND"],"sources":["NumberedListAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\n\nexport const NumberedListAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection, themeEmotionMap } = useRichTextEditor();\n const isListSelected = textBlockSelection?.state?.list.isSelected;\n\n useEffect(() => {\n const isListBulletType = textBlockSelection?.state?.textType === \"number\";\n setIsActive(isListBulletType);\n }, [isListSelected]);\n\n const formatNumberedList = () => {\n if (!isActive) {\n const styleId = themeEmotionMap\n ? findTypographyStyleByHtmlTag(\"ol\", themeEmotionMap)?.id\n : undefined;\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_ORDERED_WEBINY_LIST_COMMAND, { themeStyleId: styleId });\n setIsActive(true);\n } else {\n editor.dispatchCommand(REMOVE_WEBINY_LIST_COMMAND, undefined);\n // removing will not update correctly the active state, so we need to set to false manually.\n setIsActive(false);\n }\n };\n\n return (\n <button\n onClick={() => formatNumberedList()}\n className={\"popup-item spaced \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as numbered list\"\n >\n <i className=\"icon numbered-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AAIA;AACA;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;EAAA;EACpC,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjDC,QAAQ;IAAEC,WAAW;EAC5B,yBAAgD,IAAAC,qCAAiB,GAAE;IAA3DC,kBAAkB,sBAAlBA,kBAAkB;IAAEC,eAAe,sBAAfA,eAAe;EAC3C,IAAMC,cAAc,GAAGF,kBAAkB,aAAlBA,kBAAkB,gDAAlBA,kBAAkB,CAAEG,KAAK,0DAAzB,sBAA2BC,IAAI,CAACC,UAAU;EAEjE,IAAAC,gBAAS,EAAC,YAAM;IAAA;IACZ,IAAMC,gBAAgB,GAAG,CAAAP,kBAAkB,aAAlBA,kBAAkB,iDAAlBA,kBAAkB,CAAEG,KAAK,2DAAzB,uBAA2BK,QAAQ,MAAK,QAAQ;IACzEV,WAAW,CAACS,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACL,cAAc,CAAC,CAAC;EAEpB,IAAMO,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;IAC7B,IAAI,CAACZ,QAAQ,EAAE;MAAA;MACX,IAAMa,OAAO,GAAGT,eAAe,4BACzB,IAAAU,0DAA4B,EAAC,IAAI,EAAEV,eAAe,CAAC,0DAAnD,sBAAqDW,EAAE,GACvDC,SAAS;MACf;MACAlB,MAAM,CAACmB,eAAe,CAACC,8CAAkC,EAAE;QAAEC,YAAY,EAAEN;MAAQ,CAAC,CAAC;MACrFZ,WAAW,CAAC,IAAI,CAAC;IACrB,CAAC,MAAM;MACHH,MAAM,CAACmB,eAAe,CAACG,sCAA0B,EAAEJ,SAAS,CAAC;MAC7D;MACAf,WAAW,CAAC,KAAK,CAAC;IACtB;EACJ,CAAC;EAED,oBACI;IACI,OAAO,EAAE;MAAA,OAAMW,kBAAkB,EAAE;IAAA,CAAC;IACpC,SAAS,EAAE,oBAAoB,IAAIZ,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA8B,gBAEzC;IAAG,SAAS,EAAC;EAAoB,EAAG,CAC/B;AAEjB,CAAC;AAAC"}
@@ -0,0 +1,2 @@
1
+ import type { LexicalEditor } from "lexical";
2
+ export declare function useList(editor: LexicalEditor): void;
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useWebinyList = useWebinyList;
6
+ exports.useList = useList;
7
7
  var _utils = require("@lexical/utils");
8
8
  var _lexical = require("lexical");
9
9
  var _react = require("react");
10
- var _formatList = require("../nodes/list-node/formatList");
10
+ var _formatList = require("../nodes/ListNode/formatList");
11
11
  var _webinyList = require("../commands/webiny-list");
12
- function useWebinyList(editor) {
12
+ function useList(editor) {
13
13
  (0, _react.useEffect)(function () {
14
14
  return (0, _utils.mergeRegister)(editor.registerCommand(_lexical.INDENT_CONTENT_COMMAND, function () {
15
15
  (0, _formatList.indentList)();
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useList","editor","useEffect","mergeRegister","registerCommand","INDENT_CONTENT_COMMAND","indentList","COMMAND_PRIORITY_LOW","OUTDENT_CONTENT_COMMAND","outdentList","INSERT_ORDERED_WEBINY_LIST_COMMAND","themeStyleId","insertList","INSERT_UNORDERED_WEBINY_LIST_COMMAND","REMOVE_WEBINY_LIST_COMMAND","removeList","INSERT_PARAGRAPH_COMMAND","hasHandledInsertParagraph","$handleListInsertParagraph"],"sources":["useList.ts"],"sourcesContent":["import type { LexicalEditor } from \"lexical\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n COMMAND_PRIORITY_LOW,\n INDENT_CONTENT_COMMAND,\n INSERT_PARAGRAPH_COMMAND,\n OUTDENT_CONTENT_COMMAND\n} from \"lexical\";\nimport { useEffect } from \"react\";\nimport {\n $handleListInsertParagraph,\n indentList,\n insertList,\n outdentList,\n removeList\n} from \"~/nodes/ListNode/formatList\";\nimport {\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\n\nexport function useList(editor: LexicalEditor): void {\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => {\n indentList();\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n OUTDENT_CONTENT_COMMAND,\n () => {\n outdentList();\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n ({ themeStyleId }) => {\n insertList(editor, \"number\", themeStyleId);\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n ({ themeStyleId }) => {\n insertList(editor, \"bullet\", themeStyleId);\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n REMOVE_WEBINY_LIST_COMMAND,\n () => {\n removeList(editor);\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_PARAGRAPH_COMMAND,\n () => {\n const hasHandledInsertParagraph = $handleListInsertParagraph();\n\n if (hasHandledInsertParagraph) {\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\n}\n"],"mappings":";;;;;;AACA;AACA;AAMA;AACA;AAOA;AAMO,SAASA,OAAO,CAACC,MAAqB,EAAQ;EACjD,IAAAC,gBAAS,EAAC,YAAM;IACZ,OAAO,IAAAC,oBAAa,EAChBF,MAAM,CAACG,eAAe,CAClBC,+BAAsB,EACtB,YAAM;MACF,IAAAC,sBAAU,GAAE;MACZ,OAAO,KAAK;IAChB,CAAC,EACDC,6BAAoB,CACvB,EACDN,MAAM,CAACG,eAAe,CAClBI,gCAAuB,EACvB,YAAM;MACF,IAAAC,uBAAW,GAAE;MACb,OAAO,KAAK;IAChB,CAAC,EACDF,6BAAoB,CACvB,EACDN,MAAM,CAACG,eAAe,CAClBM,8CAAkC,EAClC,gBAAsB;MAAA,IAAnBC,YAAY,QAAZA,YAAY;MACX,IAAAC,sBAAU,EAACX,MAAM,EAAE,QAAQ,EAAEU,YAAY,CAAC;MAC1C,OAAO,IAAI;IACf,CAAC,EACDJ,6BAAoB,CACvB,EACDN,MAAM,CAACG,eAAe,CAClBS,gDAAoC,EACpC,iBAAsB;MAAA,IAAnBF,YAAY,SAAZA,YAAY;MACX,IAAAC,sBAAU,EAACX,MAAM,EAAE,QAAQ,EAAEU,YAAY,CAAC;MAC1C,OAAO,IAAI;IACf,CAAC,EACDJ,6BAAoB,CACvB,EACDN,MAAM,CAACG,eAAe,CAClBU,sCAA0B,EAC1B,YAAM;MACF,IAAAC,sBAAU,EAACd,MAAM,CAAC;MAClB,OAAO,IAAI;IACf,CAAC,EACDM,6BAAoB,CACvB,EACDN,MAAM,CAACG,eAAe,CAClBY,iCAAwB,EACxB,YAAM;MACF,IAAMC,yBAAyB,GAAG,IAAAC,sCAA0B,GAAE;MAE9D,IAAID,yBAAyB,EAAE;QAC3B,OAAO,IAAI;MACf;MAEA,OAAO,KAAK;IAChB,CAAC,EACDV,6BAAoB,CACvB,CACJ;EACL,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;AAChB"}
@@ -9,24 +9,24 @@ export declare type SerializedWebinyListItemNode = Spread<{
9
9
  version: 1;
10
10
  }, SerializedElementNode>;
11
11
  /** @noInheritDoc */
12
- export declare class WebinyListItemNode extends ElementNode {
12
+ export declare class ListItemNode extends ElementNode {
13
13
  /** @internal */
14
14
  __value: number;
15
15
  /** @internal */
16
16
  __checked?: boolean;
17
17
  static getType(): string;
18
- static clone(node: WebinyListItemNode): WebinyListItemNode;
18
+ static clone(node: ListItemNode): ListItemNode;
19
19
  constructor(value?: number, checked?: boolean, key?: NodeKey);
20
20
  createDOM(config: EditorConfig): HTMLElement;
21
- updateDOM(prevNode: WebinyListItemNode, dom: HTMLElement, config: EditorConfig): boolean;
21
+ updateDOM(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean;
22
22
  static importDOM(): DOMConversionMap | null;
23
- static importJSON(serializedNode: SerializedWebinyListItemNode): WebinyListItemNode;
23
+ static importJSON(serializedNode: SerializedWebinyListItemNode): ListItemNode;
24
24
  exportJSON(): SerializedWebinyListItemNode;
25
25
  append(...nodes: LexicalNode[]): this;
26
26
  replace<N extends LexicalNode>(replaceWithNode: N): N;
27
27
  insertAfter(node: LexicalNode): LexicalNode;
28
28
  remove(preserveEmptyParent?: boolean): void;
29
- insertNewAfter(): WebinyListItemNode | ParagraphNode;
29
+ insertNewAfter(): ListItemNode | ParagraphNode;
30
30
  collapseAtStart(selection: RangeSelection): true;
31
31
  getValue(): number;
32
32
  setValue(value: number): void;
@@ -42,5 +42,5 @@ export declare class WebinyListItemNode extends ElementNode {
42
42
  canMergeWith(node: LexicalNode): boolean;
43
43
  extractWithChild(child: LexicalNode, selection: RangeSelection | NodeSelection | GridSelection): boolean;
44
44
  }
45
- export declare function $createWebinyListItemNode(checked?: boolean): WebinyListItemNode;
46
- export declare function $isWebinyListItemNode(node: LexicalNode | null | undefined): node is WebinyListItemNode;
45
+ export declare function $createListItemNode(checked?: boolean): ListItemNode;
46
+ export declare function $isListItemNode(node: LexicalNode | null | undefined): node is ListItemNode;
@@ -4,9 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.$createWebinyListItemNode = $createWebinyListItemNode;
8
- exports.$isWebinyListItemNode = $isWebinyListItemNode;
9
- exports.WebinyListItemNode = void 0;
7
+ exports.$createListItemNode = $createListItemNode;
8
+ exports.$isListItemNode = $isListItemNode;
9
+ exports.ListItemNode = void 0;
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -18,18 +18,17 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
18
18
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
20
  var _lexical = require("lexical");
21
- var _WebinyListNode = require("./WebinyListNode");
22
- var _list = require("@lexical/list");
21
+ var _ListNode = require("./ListNode");
23
22
  var _utils = require("@lexical/utils");
24
- var _formatList = require("./formatList");
25
- var _ParagraphNode = require("../ParagraphNode");
23
+ var _formatList = require("./ListNode/formatList");
24
+ var _ParagraphNode = require("./ParagraphNode");
26
25
  /** @noInheritDoc */
27
- var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
28
- (0, _inherits2.default)(WebinyListItemNode, _ElementNode);
29
- var _super = (0, _createSuper2.default)(WebinyListItemNode);
30
- function WebinyListItemNode(value, checked, key) {
26
+ var ListItemNode = /*#__PURE__*/function (_ElementNode) {
27
+ (0, _inherits2.default)(ListItemNode, _ElementNode);
28
+ var _super = (0, _createSuper2.default)(ListItemNode);
29
+ function ListItemNode(value, checked, key) {
31
30
  var _this;
32
- (0, _classCallCheck2.default)(this, WebinyListItemNode);
31
+ (0, _classCallCheck2.default)(this, ListItemNode);
33
32
  _this = _super.call(this, key);
34
33
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__value", void 0);
35
34
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__checked", void 0);
@@ -37,12 +36,12 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
37
36
  _this.__checked = checked;
38
37
  return _this;
39
38
  }
40
- (0, _createClass2.default)(WebinyListItemNode, [{
39
+ (0, _createClass2.default)(ListItemNode, [{
41
40
  key: "createDOM",
42
41
  value: function createDOM(config) {
43
42
  var element = document.createElement("li");
44
43
  var parent = this.getParent();
45
- if ((0, _WebinyListNode.$isWebinyListNode)(parent)) {
44
+ if ((0, _ListNode.$isListNode)(parent)) {
46
45
  (0, _formatList.updateChildrenListItemValue)(parent);
47
46
  updateListItemChecked(element, this, null, parent);
48
47
  }
@@ -54,7 +53,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
54
53
  key: "updateDOM",
55
54
  value: function updateDOM(prevNode, dom, config) {
56
55
  var parent = this.getParent();
57
- if ((0, _WebinyListNode.$isWebinyListNode)(parent)) {
56
+ if ((0, _ListNode.$isListNode)(parent)) {
58
57
  (0, _formatList.updateChildrenListItemValue)(parent);
59
58
  updateListItemChecked(dom, this, prevNode, parent);
60
59
  }
@@ -66,7 +65,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
66
65
  }, {
67
66
  key: "exportJSON",
68
67
  value: function exportJSON() {
69
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(WebinyListItemNode.prototype), "exportJSON", this).call(this)), {}, {
68
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "exportJSON", this).call(this)), {}, {
70
69
  checked: this.getChecked(),
71
70
  type: "webiny-listitem",
72
71
  value: this.getValue(),
@@ -83,7 +82,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
83
82
  this.append.apply(this, (0, _toConsumableArray2.default)(children));
84
83
  node.remove();
85
84
  } else {
86
- (0, _get2.default)((0, _getPrototypeOf2.default)(WebinyListItemNode.prototype), "append", this).call(this, node);
85
+ (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "append", this).call(this, node);
87
86
  }
88
87
  }
89
88
  return this;
@@ -91,11 +90,11 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
91
90
  }, {
92
91
  key: "replace",
93
92
  value: function replace(replaceWithNode) {
94
- if ($isWebinyListItemNode(replaceWithNode)) {
95
- return (0, _get2.default)((0, _getPrototypeOf2.default)(WebinyListItemNode.prototype), "replace", this).call(this, replaceWithNode);
93
+ if ($isListItemNode(replaceWithNode)) {
94
+ return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "replace", this).call(this, replaceWithNode);
96
95
  }
97
96
  var list = this.getParentOrThrow();
98
- if ((0, _WebinyListNode.$isWebinyListNode)(list)) {
97
+ if ((0, _ListNode.$isListNode)(list)) {
99
98
  var childrenKeys = list.__children;
100
99
  var childrenLength = childrenKeys.length;
101
100
  var index = childrenKeys.indexOf(this.__key);
@@ -105,7 +104,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
105
104
  list.insertAfter(replaceWithNode);
106
105
  } else {
107
106
  // Split the list
108
- var newList = (0, _WebinyListNode.$createWebinyListNode)(list.getListType(), list.getStyleId());
107
+ var newList = (0, _ListNode.$createListNode)(list.getListType(), list.getStyleId());
109
108
  var children = list.getChildren();
110
109
  for (var i = index + 1; i < childrenLength; i++) {
111
110
  var child = children[i];
@@ -125,15 +124,15 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
125
124
  key: "insertAfter",
126
125
  value: function insertAfter(node) {
127
126
  var listNode = this.getParentOrThrow();
128
- if (!(0, _WebinyListNode.$isWebinyListNode)(listNode)) {
127
+ if (!(0, _ListNode.$isListNode)(listNode)) {
129
128
  console.log("insertAfter: webiny list node is not parent of list item node");
130
129
  return listNode;
131
130
  }
132
131
  var siblings = this.getNextSiblings();
133
- if ($isWebinyListItemNode(node)) {
134
- var after = (0, _get2.default)((0, _getPrototypeOf2.default)(WebinyListItemNode.prototype), "insertAfter", this).call(this, node);
132
+ if ($isListItemNode(node)) {
133
+ var after = (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "insertAfter", this).call(this, node);
135
134
  var afterListNode = node.getParentOrThrow();
136
- if ((0, _WebinyListNode.$isWebinyListNode)(afterListNode)) {
135
+ if ((0, _ListNode.$isListNode)(afterListNode)) {
137
136
  afterListNode;
138
137
  }
139
138
  return after;
@@ -141,7 +140,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
141
140
 
142
141
  // Attempt to merge if the list is of the same type.
143
142
 
144
- if ((0, _WebinyListNode.$isWebinyListNode)(node) && node.getListType() === listNode.getListType()) {
143
+ if ((0, _ListNode.$isListNode)(node) && node.getListType() === listNode.getListType()) {
145
144
  var child = node;
146
145
  var children = node.getChildren();
147
146
  for (var i = children.length - 1; i >= 0; i--) {
@@ -155,7 +154,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
155
154
  // Split the lists and insert the node in between them
156
155
  listNode.insertAfter(node);
157
156
  if (siblings.length !== 0) {
158
- var newListNode = (0, _list.$createListNode)(listNode.getListType());
157
+ var newListNode = (0, _ListNode.$createListNode)(listNode.getListType());
159
158
  siblings.forEach(function (sibling) {
160
159
  return newListNode.append(sibling);
161
160
  });
@@ -167,10 +166,10 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
167
166
  key: "remove",
168
167
  value: function remove(preserveEmptyParent) {
169
168
  var nextSibling = this.getNextSibling();
170
- (0, _get2.default)((0, _getPrototypeOf2.default)(WebinyListItemNode.prototype), "remove", this).call(this, preserveEmptyParent);
169
+ (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "remove", this).call(this, preserveEmptyParent);
171
170
  if (nextSibling !== null) {
172
171
  var parent = nextSibling.getParent();
173
- if ((0, _WebinyListNode.$isWebinyListNode)(parent)) {
172
+ if ((0, _ListNode.$isListNode)(parent)) {
174
173
  (0, _formatList.updateChildrenListItemValue)(parent);
175
174
  }
176
175
  }
@@ -178,7 +177,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
178
177
  }, {
179
178
  key: "insertNewAfter",
180
179
  value: function insertNewAfter() {
181
- var newElement = $createWebinyListItemNode(this.__checked == null ? undefined : false);
180
+ var newElement = $createListItemNode(this.__checked == null ? undefined : false);
182
181
  this.insertAfter(newElement);
183
182
  return newElement;
184
183
  }
@@ -192,7 +191,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
192
191
  });
193
192
  var listNode = this.getParentOrThrow();
194
193
  var listNodeParent = listNode.getParentOrThrow();
195
- var isIndented = $isWebinyListItemNode(listNodeParent);
194
+ var isIndented = $isListItemNode(listNodeParent);
196
195
  if (listNode.getChildrenSize() === 1) {
197
196
  if (isIndented) {
198
197
  // if the list node is nested, we just want to remove it,
@@ -259,7 +258,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
259
258
  // ListItemNode should always have a ListNode for a parent.
260
259
  var listNodeParent = parent.getParentOrThrow();
261
260
  var indentLevel = 0;
262
- while ($isWebinyListItemNode(listNodeParent)) {
261
+ while ($isListItemNode(listNodeParent)) {
263
262
  listNodeParent = listNodeParent.getParentOrThrow().getParentOrThrow();
264
263
  indentLevel++;
265
264
  }
@@ -290,29 +289,29 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
290
289
  }, {
291
290
  key: "insertBefore",
292
291
  value: function insertBefore(nodeToInsert) {
293
- if ($isWebinyListItemNode(nodeToInsert)) {
292
+ if ($isListItemNode(nodeToInsert)) {
294
293
  var parent = this.getParentOrThrow();
295
- if ((0, _WebinyListNode.$isWebinyListNode)(parent)) {
294
+ if ((0, _ListNode.$isListNode)(parent)) {
296
295
  var siblings = this.getNextSiblings();
297
296
  (0, _formatList.updateChildrenListItemValue)(parent, siblings);
298
297
  }
299
298
  }
300
- return (0, _get2.default)((0, _getPrototypeOf2.default)(WebinyListItemNode.prototype), "insertBefore", this).call(this, nodeToInsert);
299
+ return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "insertBefore", this).call(this, nodeToInsert);
301
300
  }
302
301
  }, {
303
302
  key: "canInsertAfter",
304
303
  value: function canInsertAfter(node) {
305
- return (0, _WebinyListNode.$isWebinyListNode)(node);
304
+ return (0, _ListNode.$isListNode)(node);
306
305
  }
307
306
  }, {
308
307
  key: "canReplaceWith",
309
308
  value: function canReplaceWith(replacement) {
310
- return $isWebinyListItemNode(replacement);
309
+ return $isListItemNode(replacement);
311
310
  }
312
311
  }, {
313
312
  key: "canMergeWith",
314
313
  value: function canMergeWith(node) {
315
- return (0, _lexical.$isParagraphNode)(node) || $isWebinyListItemNode(node);
314
+ return (0, _ParagraphNode.$isParagraphNode)(node) || $isListItemNode(node);
316
315
  }
317
316
  }, {
318
317
  key: "extractWithChild",
@@ -336,7 +335,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
336
335
  }, {
337
336
  key: "clone",
338
337
  value: function clone(node) {
339
- return new WebinyListItemNode(node.__value, node.__checked, node.__key);
338
+ return new ListItemNode(node.__value, node.__checked, node.__key);
340
339
  }
341
340
  }, {
342
341
  key: "importDOM",
@@ -353,16 +352,16 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
353
352
  }, {
354
353
  key: "importJSON",
355
354
  value: function importJSON(serializedNode) {
356
- var node = new WebinyListItemNode(serializedNode.value, serializedNode.checked);
355
+ var node = new ListItemNode(serializedNode.value, serializedNode.checked);
357
356
  node.setFormat(serializedNode.format);
358
357
  node.setIndent(serializedNode.indent);
359
358
  node.setDirection(serializedNode.direction);
360
359
  return node;
361
360
  }
362
361
  }]);
363
- return WebinyListItemNode;
362
+ return ListItemNode;
364
363
  }(_lexical.ElementNode);
365
- exports.WebinyListItemNode = WebinyListItemNode;
364
+ exports.ListItemNode = ListItemNode;
366
365
  function $setListItemThemeClassNames(dom, editorThemeClasses, node) {
367
366
  var classesToAdd = [];
368
367
  var classesToRemove = [];
@@ -378,7 +377,7 @@ function $setListItemThemeClassNames(dom, editorThemeClasses, node) {
378
377
  }
379
378
  if (listTheme) {
380
379
  var parentNode = node.getParent();
381
- var isCheckList = (0, _WebinyListNode.$isWebinyListNode)(parentNode) && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.getListType()) === "check";
380
+ var isCheckList = (0, _ListNode.$isListNode)(parentNode) && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.getListType()) === "check";
382
381
  var checked = node.getChecked();
383
382
  if (!isCheckList || checked) {
384
383
  classesToRemove.push(listTheme.listitemUnchecked);
@@ -393,7 +392,7 @@ function $setListItemThemeClassNames(dom, editorThemeClasses, node) {
393
392
  if (nestedListItemClassName !== undefined) {
394
393
  var nestedListItemClasses = nestedListItemClassName.split(" ");
395
394
  if (node.getChildren().some(function (child) {
396
- return (0, _WebinyListNode.$isWebinyListNode)(child);
395
+ return (0, _ListNode.$isListNode)(child);
397
396
  })) {
398
397
  classesToAdd.push.apply(classesToAdd, (0, _toConsumableArray2.default)(nestedListItemClasses));
399
398
  } else {
@@ -411,7 +410,7 @@ function updateListItemChecked(dom, listItemNode, prevListItemNode, listNode) {
411
410
  var isCheckList = listNode.getListType() === "check";
412
411
  if (isCheckList) {
413
412
  // Only add attributes for leaf list items
414
- if ((0, _WebinyListNode.$isWebinyListNode)(listItemNode.getFirstChild())) {
413
+ if ((0, _ListNode.$isListNode)(listItemNode.getFirstChild())) {
415
414
  dom.removeAttribute("role");
416
415
  dom.removeAttribute("tabIndex");
417
416
  dom.removeAttribute("aria-checked");
@@ -431,12 +430,12 @@ function updateListItemChecked(dom, listItemNode, prevListItemNode, listNode) {
431
430
  }
432
431
  function convertListItemElement() {
433
432
  return {
434
- node: $createWebinyListItemNode()
433
+ node: $createListItemNode()
435
434
  };
436
435
  }
437
- function $createWebinyListItemNode(checked) {
438
- return new WebinyListItemNode(undefined, checked);
436
+ function $createListItemNode(checked) {
437
+ return new ListItemNode(undefined, checked);
439
438
  }
440
- function $isWebinyListItemNode(node) {
441
- return node instanceof WebinyListItemNode;
439
+ function $isListItemNode(node) {
440
+ return node instanceof ListItemNode;
442
441
  }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ListItemNode","value","checked","key","__value","undefined","__checked","config","element","document","createElement","parent","getParent","$isListNode","updateChildrenListItemValue","updateListItemChecked","$setListItemThemeClassNames","theme","prevNode","dom","getChecked","type","getValue","version","i","length","node","$isElementNode","canMergeWith","children","getChildren","append","remove","replaceWithNode","$isListItemNode","list","getParentOrThrow","childrenKeys","__children","childrenLength","index","indexOf","__key","insertBefore","insertAfter","newList","$createListNode","getListType","getStyleId","child","listNode","console","log","siblings","getNextSiblings","after","afterListNode","newListNode","forEach","sibling","preserveEmptyParent","nextSibling","getNextSibling","newElement","$createListItemNode","selection","paragraph","$createParagraphNode","listNodeParent","isIndented","getChildrenSize","select","replace","anchor","focus","getKey","getNode","is","set","offset","self","getLatest","getWritable","setChecked","__indent","indentLevel","indent","currentIndent","getIndent","$handleIndent","$handleOutdent","nodeToInsert","replacement","$isParagraphNode","$isRangeSelection","anchorNode","focusNode","isParentOf","getTextContent","li","conversion","convertListItemElement","priority","serializedNode","setFormat","format","setIndent","setDirection","direction","ElementNode","editorThemeClasses","classesToAdd","classesToRemove","listTheme","listItemClassName","listitem","nestedListItemClassName","nested","listItemClasses","split","push","parentNode","isCheckList","listitemUnchecked","listitemChecked","nestedListItemClasses","some","removeClassNamesFromElement","addClassNamesToElement","listItemNode","prevListItemNode","getFirstChild","removeAttribute","setAttribute"],"sources":["ListItemNode.ts"],"sourcesContent":["import {\n $isElementNode,\n $isRangeSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n EditorThemeClasses,\n ElementNode,\n GridSelection,\n LexicalNode,\n NodeKey,\n NodeSelection,\n ParagraphNode,\n RangeSelection,\n SerializedElementNode\n} from \"lexical\";\nimport { Spread } from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/nodes/ListNode\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n updateChildrenListItemValue\n} from \"~/nodes/ListNode/formatList\";\nimport { $createParagraphNode, $isParagraphNode } from \"~/nodes/ParagraphNode\";\n\nexport type SerializedWebinyListItemNode = Spread<\n {\n checked: boolean | undefined;\n type: \"webiny-listitem\";\n value: number;\n version: 1;\n },\n SerializedElementNode\n>;\n\n/** @noInheritDoc */\nexport class ListItemNode extends ElementNode {\n /** @internal */\n __value: number;\n /** @internal */\n __checked?: boolean;\n\n static override getType(): string {\n return \"webiny-listitem\";\n }\n\n static override clone(node: ListItemNode): ListItemNode {\n return new ListItemNode(node.__value, node.__checked, node.__key);\n }\n\n constructor(value?: number, checked?: boolean, key?: NodeKey) {\n super(key);\n this.__value = value === undefined ? 1 : value;\n this.__checked = checked;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"li\");\n const parent = this.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(element, this, null, parent);\n }\n element.value = this.__value;\n $setListItemThemeClassNames(element, config.theme, this);\n\n return element;\n }\n\n override updateDOM(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const parent = this.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): ListItemNode {\n const node = new ListItemNode(serializedNode.value, serializedNode.checked);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListItemNode {\n return {\n ...super.exportJSON(),\n checked: this.getChecked(),\n type: \"webiny-listitem\",\n value: this.getValue(),\n version: 1\n };\n }\n\n override append(...nodes: LexicalNode[]): this {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && this.canMergeWith(node)) {\n const children = node.getChildren();\n this.append(...children);\n node.remove();\n } else {\n super.append(node);\n }\n }\n\n return this;\n }\n\n override replace<N extends LexicalNode>(replaceWithNode: N): N {\n if ($isListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n\n const list = this.getParentOrThrow();\n\n if ($isListNode(list)) {\n const childrenKeys = list.__children;\n const childrenLength = childrenKeys.length;\n const index = childrenKeys.indexOf(this.__key);\n\n if (index === 0) {\n list.insertBefore(replaceWithNode);\n } else if (index === childrenLength - 1) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createListNode(list.getListType(), list.getStyleId());\n const children = list.getChildren();\n\n for (let i = index + 1; i < childrenLength; i++) {\n const child = children[i];\n newList.append(child);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n this.remove();\n\n if (childrenLength === 1) {\n list.remove();\n }\n }\n\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$isListNode(listNode)) {\n console.log(\"insertAfter: webiny list node is not parent of list item node\");\n return listNode;\n }\n\n const siblings = this.getNextSiblings();\n\n if ($isListItemNode(node)) {\n const after = super.insertAfter(node);\n const afterListNode = node.getParentOrThrow();\n\n if ($isListNode(afterListNode)) {\n afterListNode;\n }\n\n return after;\n }\n\n // Attempt to merge if the list is of the same type.\n\n if ($isListNode(node) && node.getListType() === listNode.getListType()) {\n let child = node;\n const children = node.getChildren<ListNode>();\n\n for (let i = children.length - 1; i >= 0; i--) {\n child = children[i];\n\n this.insertAfter(child);\n }\n\n return child;\n }\n\n // Otherwise, split the list\n // Split the lists and insert the node in between them\n listNode.insertAfter(node);\n\n if (siblings.length !== 0) {\n const newListNode = $createListNode(listNode.getListType());\n\n siblings.forEach(sibling => newListNode.append(sibling));\n\n node.insertAfter(newListNode);\n }\n\n return node;\n }\n\n override remove(preserveEmptyParent?: boolean): void {\n const nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (nextSibling !== null) {\n const parent = nextSibling.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n }\n }\n\n override insertNewAfter(): ListItemNode | ParagraphNode {\n const newElement = $createListItemNode(this.__checked == null ? undefined : false);\n this.insertAfter(newElement);\n\n return newElement;\n }\n\n override collapseAtStart(selection: RangeSelection): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n const listNode = this.getParentOrThrow();\n const listNodeParent = listNode.getParentOrThrow();\n const isIndented = $isListItemNode(listNodeParent);\n\n if (listNode.getChildrenSize() === 1) {\n if (isIndented) {\n // if the list node is nested, we just want to remove it,\n // effectively unindenting it.\n listNode.remove();\n listNodeParent.select();\n } else {\n listNode.replace(paragraph);\n // If we have selection on the list item, we'll need to move it\n // to the paragraph\n const anchor = selection.anchor;\n const focus = selection.focus;\n const key = paragraph.getKey();\n\n if (anchor.type === \"element\" && anchor.getNode().is(this)) {\n anchor.set(key, anchor.offset, \"element\");\n }\n\n if (focus.type === \"element\" && focus.getNode().is(this)) {\n focus.set(key, focus.offset, \"element\");\n }\n }\n } else {\n listNode.insertBefore(paragraph);\n this.remove();\n }\n\n return true;\n }\n\n getValue(): number {\n const self = this.getLatest();\n\n return self.__value;\n }\n\n setValue(value: number): void {\n const self = this.getWritable();\n self.__value = value;\n }\n\n getChecked(): boolean | undefined {\n const self = this.getLatest();\n\n return self.__checked;\n }\n\n setChecked(checked?: boolean): void {\n const self = this.getWritable();\n self.__checked = checked;\n }\n\n toggleChecked(): void {\n this.setChecked(!this.__checked);\n }\n\n override getIndent(): number {\n // If we don't have a parent, we are likely serializing\n const parent = this.getParent();\n if (parent === null) {\n return this.getLatest().__indent;\n }\n // ListItemNode should always have a ListNode for a parent.\n let listNodeParent = parent.getParentOrThrow();\n let indentLevel = 0;\n while ($isListItemNode(listNodeParent)) {\n listNodeParent = listNodeParent.getParentOrThrow().getParentOrThrow();\n indentLevel++;\n }\n\n return indentLevel;\n }\n\n override setIndent(indent: number): this {\n let currentIndent = this.getIndent();\n while (currentIndent !== indent) {\n if (currentIndent < indent) {\n $handleIndent([this]);\n currentIndent++;\n } else {\n $handleOutdent([this]);\n currentIndent--;\n }\n }\n\n return this;\n }\n\n override canIndent(): false {\n // Indent/outdent is handled specifically in the RichText logic.\n\n return false;\n }\n\n override insertBefore(nodeToInsert: LexicalNode): LexicalNode {\n if ($isListItemNode(nodeToInsert)) {\n const parent = this.getParentOrThrow();\n\n if ($isListNode(parent)) {\n const siblings = this.getNextSiblings();\n updateChildrenListItemValue(parent, siblings);\n }\n }\n\n return super.insertBefore(nodeToInsert);\n }\n\n override canInsertAfter(node: LexicalNode): boolean {\n return $isListNode(node);\n }\n\n override canReplaceWith(replacement: LexicalNode): boolean {\n return $isListItemNode(replacement);\n }\n\n override canMergeWith(node: LexicalNode): boolean {\n return $isParagraphNode(node) || $isListItemNode(node);\n }\n\n override extractWithChild(\n child: LexicalNode,\n selection: RangeSelection | NodeSelection | GridSelection\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n this.getTextContent().length === selection.getTextContent().length\n );\n }\n}\n\nfunction $setListItemThemeClassNames(\n dom: HTMLElement,\n editorThemeClasses: EditorThemeClasses,\n node: ListItemNode\n): void {\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const listItemClassName = listTheme ? listTheme.listitem : undefined;\n let nestedListItemClassName;\n\n if (listTheme && listTheme.nested) {\n nestedListItemClassName = listTheme.nested.listitem;\n }\n\n if (listItemClassName !== undefined) {\n const listItemClasses = listItemClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n }\n\n if (listTheme) {\n const parentNode = node.getParent();\n const isCheckList = $isListNode(parentNode) && parentNode?.getListType() === \"check\";\n const checked = node.getChecked();\n\n if (!isCheckList || checked) {\n classesToRemove.push(listTheme.listitemUnchecked);\n }\n\n if (!isCheckList || !checked) {\n classesToRemove.push(listTheme.listitemChecked);\n }\n\n if (isCheckList) {\n classesToAdd.push(checked ? listTheme.listitemChecked : listTheme.listitemUnchecked);\n }\n }\n\n if (nestedListItemClassName !== undefined) {\n const nestedListItemClasses = nestedListItemClassName.split(\" \");\n\n if (node.getChildren().some(child => $isListNode(child))) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\nfunction updateListItemChecked(\n dom: HTMLElement,\n listItemNode: ListItemNode,\n prevListItemNode: ListItemNode | null,\n listNode: ListNode\n): void {\n const isCheckList = listNode.getListType() === \"check\";\n\n if (isCheckList) {\n // Only add attributes for leaf list items\n if ($isListNode(listItemNode.getFirstChild())) {\n dom.removeAttribute(\"role\");\n dom.removeAttribute(\"tabIndex\");\n dom.removeAttribute(\"aria-checked\");\n } else {\n dom.setAttribute(\"role\", \"checkbox\");\n dom.setAttribute(\"tabIndex\", \"-1\");\n\n if (!prevListItemNode || listItemNode.__checked !== prevListItemNode.__checked) {\n dom.setAttribute(\"aria-checked\", listItemNode.getChecked() ? \"true\" : \"false\");\n }\n }\n } else {\n // Clean up checked state\n if (listItemNode.getChecked() != null) {\n listItemNode.setChecked(undefined);\n }\n }\n}\n\nfunction convertListItemElement(): DOMConversionOutput {\n return { node: $createListItemNode() };\n}\n\nexport function $createListItemNode(checked?: boolean): ListItemNode {\n return new ListItemNode(undefined, checked);\n}\n\nexport function $isListItemNode(node: LexicalNode | null | undefined): node is ListItemNode {\n return node instanceof ListItemNode;\n}\n"],"mappings":"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"}