@webiny/lexical-editor 0.0.0-unstable.085ff6572f

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 (306) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/commands/webiny-list.d.ts +7 -0
  4. package/commands/webiny-list.js +13 -0
  5. package/commands/webiny-list.js.map +1 -0
  6. package/commands/webiny-quote.d.ts +5 -0
  7. package/commands/webiny-quote.js +9 -0
  8. package/commands/webiny-quote.js.map +1 -0
  9. package/components/AddRichTextEditorNodeType.d.ts +6 -0
  10. package/components/AddRichTextEditorNodeType.js +28 -0
  11. package/components/AddRichTextEditorNodeType.js.map +1 -0
  12. package/components/AddRichTextEditorPlugin.d.ts +12 -0
  13. package/components/AddRichTextEditorPlugin.js +33 -0
  14. package/components/AddRichTextEditorPlugin.js.map +1 -0
  15. package/components/AddToolbarAction.d.ts +7 -0
  16. package/components/AddToolbarAction.js +33 -0
  17. package/components/AddToolbarAction.js.map +1 -0
  18. package/components/Editor/HeadingEditor.d.ts +7 -0
  19. package/components/Editor/HeadingEditor.js +29 -0
  20. package/components/Editor/HeadingEditor.js.map +1 -0
  21. package/components/Editor/ParagraphEditor.d.ts +7 -0
  22. package/components/Editor/ParagraphEditor.js +30 -0
  23. package/components/Editor/ParagraphEditor.js.map +1 -0
  24. package/components/Editor/RichTextEditor.d.ts +26 -0
  25. package/components/Editor/RichTextEditor.js +138 -0
  26. package/components/Editor/RichTextEditor.js.map +1 -0
  27. package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +11 -0
  28. package/components/LexicalEditorConfig/LexicalEditorConfig.js +19 -0
  29. package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -0
  30. package/components/LexicalHtmlRenderer.d.ts +16 -0
  31. package/components/LexicalHtmlRenderer.js +67 -0
  32. package/components/LexicalHtmlRenderer.js.map +1 -0
  33. package/components/Toolbar/HeadingToolbar.d.ts +12 -0
  34. package/components/Toolbar/HeadingToolbar.js +23 -0
  35. package/components/Toolbar/HeadingToolbar.js.map +1 -0
  36. package/components/Toolbar/ParagraphToolbar.d.ts +12 -0
  37. package/components/Toolbar/ParagraphToolbar.js +23 -0
  38. package/components/Toolbar/ParagraphToolbar.js.map +1 -0
  39. package/components/Toolbar/Toolbar.css +435 -0
  40. package/components/Toolbar/Toolbar.d.ts +13 -0
  41. package/components/Toolbar/Toolbar.js +215 -0
  42. package/components/Toolbar/Toolbar.js.map +1 -0
  43. package/components/ToolbarActions/BoldAction.d.ts +2 -0
  44. package/components/ToolbarActions/BoldAction.js +43 -0
  45. package/components/ToolbarActions/BoldAction.js.map +1 -0
  46. package/components/ToolbarActions/BulletListAction.d.ts +2 -0
  47. package/components/ToolbarActions/BulletListAction.js +56 -0
  48. package/components/ToolbarActions/BulletListAction.js.map +1 -0
  49. package/components/ToolbarActions/CodeHighlightAction.d.ts +2 -0
  50. package/components/ToolbarActions/CodeHighlightAction.js +43 -0
  51. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -0
  52. package/components/ToolbarActions/FontColorAction.d.ts +11 -0
  53. package/components/ToolbarActions/FontColorAction.js +83 -0
  54. package/components/ToolbarActions/FontColorAction.js.map +1 -0
  55. package/components/ToolbarActions/FontSizeAction.d.ts +2 -0
  56. package/components/ToolbarActions/FontSizeAction.js +101 -0
  57. package/components/ToolbarActions/FontSizeAction.js.map +1 -0
  58. package/components/ToolbarActions/ItalicAction.d.ts +2 -0
  59. package/components/ToolbarActions/ItalicAction.js +43 -0
  60. package/components/ToolbarActions/ItalicAction.js.map +1 -0
  61. package/components/ToolbarActions/LinkAction.d.ts +2 -0
  62. package/components/ToolbarActions/LinkAction.js +64 -0
  63. package/components/ToolbarActions/LinkAction.js.map +1 -0
  64. package/components/ToolbarActions/NumberedListAction.d.ts +2 -0
  65. package/components/ToolbarActions/NumberedListAction.js +58 -0
  66. package/components/ToolbarActions/NumberedListAction.js.map +1 -0
  67. package/components/ToolbarActions/QuoteAction.d.ts +2 -0
  68. package/components/ToolbarActions/QuoteAction.js +52 -0
  69. package/components/ToolbarActions/QuoteAction.js.map +1 -0
  70. package/components/ToolbarActions/TextAlignmentAction.d.ts +11 -0
  71. package/components/ToolbarActions/TextAlignmentAction.js +70 -0
  72. package/components/ToolbarActions/TextAlignmentAction.js.map +1 -0
  73. package/components/ToolbarActions/TypographyAction.d.ts +11 -0
  74. package/components/ToolbarActions/TypographyAction.js +145 -0
  75. package/components/ToolbarActions/TypographyAction.js.map +1 -0
  76. package/components/ToolbarActions/UnderlineAction.d.ts +2 -0
  77. package/components/ToolbarActions/UnderlineAction.js +43 -0
  78. package/components/ToolbarActions/UnderlineAction.js.map +1 -0
  79. package/components/ToolbarPresets/HeadingToolbarPreset.d.ts +2 -0
  80. package/components/ToolbarPresets/HeadingToolbarPreset.js +56 -0
  81. package/components/ToolbarPresets/HeadingToolbarPreset.js.map +1 -0
  82. package/components/ToolbarPresets/ParagraphToolbarPreset.d.ts +2 -0
  83. package/components/ToolbarPresets/ParagraphToolbarPreset.js +71 -0
  84. package/components/ToolbarPresets/ParagraphToolbarPreset.js.map +1 -0
  85. package/context/FontColorActionContext.d.ts +6 -0
  86. package/context/FontColorActionContext.js +10 -0
  87. package/context/FontColorActionContext.js.map +1 -0
  88. package/context/RichTextEditorContext.d.ts +26 -0
  89. package/context/RichTextEditorContext.js +68 -0
  90. package/context/RichTextEditorContext.js.map +1 -0
  91. package/context/SharedHistoryContext.d.ts +11 -0
  92. package/context/SharedHistoryContext.js +26 -0
  93. package/context/SharedHistoryContext.js.map +1 -0
  94. package/context/TextAlignmentActionContextProps.d.ts +9 -0
  95. package/context/TextAlignmentActionContextProps.js +10 -0
  96. package/context/TextAlignmentActionContextProps.js.map +1 -0
  97. package/context/TypographyActionContext.d.ts +7 -0
  98. package/context/TypographyActionContext.js +10 -0
  99. package/context/TypographyActionContext.js.map +1 -0
  100. package/hooks/useFontColorPicker.d.ts +2 -0
  101. package/hooks/useFontColorPicker.js +15 -0
  102. package/hooks/useFontColorPicker.js.map +1 -0
  103. package/hooks/useList.d.ts +2 -0
  104. package/hooks/useList.js +39 -0
  105. package/hooks/useList.js.map +1 -0
  106. package/hooks/useQuote.d.ts +2 -0
  107. package/hooks/useQuote.js +20 -0
  108. package/hooks/useQuote.js.map +1 -0
  109. package/hooks/useRichTextEditor.d.ts +2 -0
  110. package/hooks/useRichTextEditor.js +15 -0
  111. package/hooks/useRichTextEditor.js.map +1 -0
  112. package/hooks/useTextAlignmentAction.d.ts +1 -0
  113. package/hooks/useTextAlignmentAction.js +15 -0
  114. package/hooks/useTextAlignmentAction.js.map +1 -0
  115. package/hooks/useTypographyAction.d.ts +1 -0
  116. package/hooks/useTypographyAction.js +15 -0
  117. package/hooks/useTypographyAction.js.map +1 -0
  118. package/images/icons/LICENSE.md +5 -0
  119. package/images/icons/chat-square-quote.svg +1 -0
  120. package/images/icons/chevron-down.svg +1 -0
  121. package/images/icons/code.svg +1 -0
  122. package/images/icons/font-color.svg +1 -0
  123. package/images/icons/indent.svg +3 -0
  124. package/images/icons/justify.svg +3 -0
  125. package/images/icons/link.svg +1 -0
  126. package/images/icons/list-ol.svg +1 -0
  127. package/images/icons/list-ul.svg +1 -0
  128. package/images/icons/outdent.svg +3 -0
  129. package/images/icons/pencil-fill.svg +1 -0
  130. package/images/icons/text-center.svg +1 -0
  131. package/images/icons/text-left.svg +1 -0
  132. package/images/icons/text-paragraph.svg +1 -0
  133. package/images/icons/text-right.svg +1 -0
  134. package/images/icons/type-bold.svg +1 -0
  135. package/images/icons/type-h1.svg +1 -0
  136. package/images/icons/type-h2.svg +1 -0
  137. package/images/icons/type-h3.svg +1 -0
  138. package/images/icons/type-h4.svg +1 -0
  139. package/images/icons/type-h5.svg +1 -0
  140. package/images/icons/type-h6.svg +1 -0
  141. package/images/icons/type-italic.svg +1 -0
  142. package/images/icons/type-strikethrough.svg +1 -0
  143. package/images/icons/type-underline.svg +1 -0
  144. package/images/icons/unlink_icon.svg +1 -0
  145. package/index.d.ts +42 -0
  146. package/index.js +295 -0
  147. package/index.js.map +1 -0
  148. package/nodes/FontColorNode.d.ts +43 -0
  149. package/nodes/FontColorNode.js +127 -0
  150. package/nodes/FontColorNode.js.map +1 -0
  151. package/nodes/HeadingNode.d.ts +34 -0
  152. package/nodes/HeadingNode.js +192 -0
  153. package/nodes/HeadingNode.js.map +1 -0
  154. package/nodes/ListItemNode.d.ts +46 -0
  155. package/nodes/ListItemNode.js +441 -0
  156. package/nodes/ListItemNode.js.map +1 -0
  157. package/nodes/ListNode/formatList.d.ts +12 -0
  158. package/nodes/ListNode/formatList.js +424 -0
  159. package/nodes/ListNode/formatList.js.map +1 -0
  160. package/nodes/ListNode.d.ts +42 -0
  161. package/nodes/ListNode.js +294 -0
  162. package/nodes/ListNode.js.map +1 -0
  163. package/nodes/ParagraphNode.d.ts +32 -0
  164. package/nodes/ParagraphNode.js +218 -0
  165. package/nodes/ParagraphNode.js.map +1 -0
  166. package/nodes/QuoteNode.d.ts +34 -0
  167. package/nodes/QuoteNode.js +225 -0
  168. package/nodes/QuoteNode.js.map +1 -0
  169. package/nodes/TypographyElementNode.d.ts +42 -0
  170. package/nodes/TypographyElementNode.js +155 -0
  171. package/nodes/TypographyElementNode.js.map +1 -0
  172. package/nodes/types.d.ts +15 -0
  173. package/nodes/types.js +5 -0
  174. package/nodes/types.js.map +1 -0
  175. package/nodes/webinyNodes.d.ts +7 -0
  176. package/nodes/webinyNodes.js +45 -0
  177. package/nodes/webinyNodes.js.map +1 -0
  178. package/package.json +41 -0
  179. package/plugins/AutoLinkPlugin/AutoLinkPlugin.d.ts +11 -0
  180. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js +46 -0
  181. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js.map +1 -0
  182. package/plugins/AutoLinkPlugin/index.d.ts +1 -0
  183. package/plugins/AutoLinkPlugin/index.js +16 -0
  184. package/plugins/AutoLinkPlugin/index.js.map +1 -0
  185. package/plugins/BlurEventPlugin/BlurEventPlugin.d.ts +7 -0
  186. package/plugins/BlurEventPlugin/BlurEventPlugin.js +28 -0
  187. package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -0
  188. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.d.ts +17 -0
  189. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js +88 -0
  190. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js.map +1 -0
  191. package/plugins/ClickableLinkPlugin/index.d.ts +1 -0
  192. package/plugins/ClickableLinkPlugin/index.js +16 -0
  193. package/plugins/ClickableLinkPlugin/index.js.map +1 -0
  194. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.d.ts +1 -0
  195. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js +20 -0
  196. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -0
  197. package/plugins/CodeHighlightPlugin/index.d.ts +1 -0
  198. package/plugins/CodeHighlightPlugin/index.js +16 -0
  199. package/plugins/CodeHighlightPlugin/index.js.map +1 -0
  200. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +118 -0
  201. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.d.ts +7 -0
  202. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +222 -0
  203. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -0
  204. package/plugins/FloatingLinkEditorPlugin/index.d.ts +1 -0
  205. package/plugins/FloatingLinkEditorPlugin/index.js +16 -0
  206. package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -0
  207. package/plugins/FontColorPlugin/FontColorPlugin.d.ts +2 -0
  208. package/plugins/FontColorPlugin/FontColorPlugin.js +39 -0
  209. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -0
  210. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.d.ts +8 -0
  211. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js +34 -0
  212. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +1 -0
  213. package/plugins/LexicalUpdateStatePlugin/index.d.ts +1 -0
  214. package/plugins/LexicalUpdateStatePlugin/index.js +16 -0
  215. package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -0
  216. package/plugins/TypographyPlugin/TypographyPlugin.d.ts +2 -0
  217. package/plugins/TypographyPlugin/TypographyPlugin.js +35 -0
  218. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -0
  219. package/plugins/WebinyListPLugin/WebinyListPlugin.d.ts +1 -0
  220. package/plugins/WebinyListPLugin/WebinyListPlugin.js +25 -0
  221. package/plugins/WebinyListPLugin/WebinyListPlugin.js.map +1 -0
  222. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.d.ts +1 -0
  223. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js +24 -0
  224. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -0
  225. package/themes/webinyLexicalTheme.css +429 -0
  226. package/themes/webinyLexicalTheme.d.ts +9 -0
  227. package/themes/webinyLexicalTheme.js +87 -0
  228. package/themes/webinyLexicalTheme.js.map +1 -0
  229. package/types.d.ts +63 -0
  230. package/types.js +25 -0
  231. package/types.js.map +1 -0
  232. package/ui/Divider.d.ts +2 -0
  233. package/ui/Divider.js +13 -0
  234. package/ui/Divider.js.map +1 -0
  235. package/ui/DropDown.d.ts +26 -0
  236. package/ui/DropDown.js +206 -0
  237. package/ui/DropDown.js.map +1 -0
  238. package/ui/Input.css +32 -0
  239. package/ui/LinkPreview.css +69 -0
  240. package/ui/LinkPreview.d.ts +12 -0
  241. package/ui/LinkPreview.js +101 -0
  242. package/ui/LinkPreview.js.map +1 -0
  243. package/ui/Placeholder.css +23 -0
  244. package/ui/Placeholder.d.ts +13 -0
  245. package/ui/Placeholder.js +24 -0
  246. package/ui/Placeholder.js.map +1 -0
  247. package/ui/TextInput.d.ts +18 -0
  248. package/ui/TextInput.js +39 -0
  249. package/ui/TextInput.js.map +1 -0
  250. package/ui/ToolbarActionDialog.d.ts +12 -0
  251. package/ui/ToolbarActionDialog.js +106 -0
  252. package/ui/ToolbarActionDialog.js.map +1 -0
  253. package/utils/findTypographyStyleByHtmlTag.d.ts +8 -0
  254. package/utils/findTypographyStyleByHtmlTag.js +16 -0
  255. package/utils/findTypographyStyleByHtmlTag.js.map +1 -0
  256. package/utils/generateInitialLexicalValue.d.ts +5 -0
  257. package/utils/generateInitialLexicalValue.js +30 -0
  258. package/utils/generateInitialLexicalValue.js.map +1 -0
  259. package/utils/getDOMRangeRect.d.ts +10 -0
  260. package/utils/getDOMRangeRect.js +27 -0
  261. package/utils/getDOMRangeRect.js.map +1 -0
  262. package/utils/getLexicalTextSelectionState.d.ts +5 -0
  263. package/utils/getLexicalTextSelectionState.js +163 -0
  264. package/utils/getLexicalTextSelectionState.js.map +1 -0
  265. package/utils/getSelectedNode.d.ts +2 -0
  266. package/utils/getSelectedNode.js +30 -0
  267. package/utils/getSelectedNode.js.map +1 -0
  268. package/utils/isValidJSON.d.ts +1 -0
  269. package/utils/isValidJSON.js +18 -0
  270. package/utils/isValidJSON.js.map +1 -0
  271. package/utils/isValidLexicalData.d.ts +2 -0
  272. package/utils/isValidLexicalData.js +24 -0
  273. package/utils/isValidLexicalData.js.map +1 -0
  274. package/utils/nodes/clearNodeFormating.d.ts +2 -0
  275. package/utils/nodes/clearNodeFormating.js +28 -0
  276. package/utils/nodes/clearNodeFormating.js.map +1 -0
  277. package/utils/nodes/formatToHeading.d.ts +3 -0
  278. package/utils/nodes/formatToHeading.js +25 -0
  279. package/utils/nodes/formatToHeading.js.map +1 -0
  280. package/utils/nodes/formatToParagraph.d.ts +2 -0
  281. package/utils/nodes/formatToParagraph.js +20 -0
  282. package/utils/nodes/formatToParagraph.js.map +1 -0
  283. package/utils/nodes/formatToQuote.d.ts +2 -0
  284. package/utils/nodes/formatToQuote.js +25 -0
  285. package/utils/nodes/formatToQuote.js.map +1 -0
  286. package/utils/nodes/listNode.d.ts +11 -0
  287. package/utils/nodes/listNode.js +107 -0
  288. package/utils/nodes/listNode.js.map +1 -0
  289. package/utils/point.d.ts +21 -0
  290. package/utils/point.js +77 -0
  291. package/utils/point.js.map +1 -0
  292. package/utils/rect.d.ts +47 -0
  293. package/utils/rect.js +169 -0
  294. package/utils/rect.js.map +1 -0
  295. package/utils/sanitizeUrl.d.ts +8 -0
  296. package/utils/sanitizeUrl.js +27 -0
  297. package/utils/sanitizeUrl.js.map +1 -0
  298. package/utils/setFloatingElemPosition.d.ts +3 -0
  299. package/utils/setFloatingElemPosition.js +40 -0
  300. package/utils/setFloatingElemPosition.js.map +1 -0
  301. package/utils/styleObjectToString.d.ts +2 -0
  302. package/utils/styleObjectToString.js +22 -0
  303. package/utils/styleObjectToString.js.map +1 -0
  304. package/utils/toTypographyEmotionMap.d.ts +3 -0
  305. package/utils/toTypographyEmotionMap.js +36 -0
  306. package/utils/toTypographyEmotionMap.js.map +1 -0
@@ -0,0 +1,424 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.$handleIndent = $handleIndent;
8
+ exports.$handleListInsertParagraph = $handleListInsertParagraph;
9
+ exports.$handleOutdent = $handleOutdent;
10
+ exports.indentList = indentList;
11
+ exports.insertList = insertList;
12
+ exports.outdentList = outdentList;
13
+ exports.removeList = removeList;
14
+ exports.updateChildrenListItemValue = updateChildrenListItemValue;
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
16
+ var _lexical = require("lexical");
17
+ var _ListNode = require("../ListNode");
18
+ var _listNode = require("../../utils/nodes/listNode");
19
+ var _utils = require("@lexical/utils");
20
+ var _ListItemNode = require("../ListItemNode");
21
+ var _ParagraphNode = require("../ParagraphNode");
22
+ var DEFAULT_LIST_START_NUMBER = 1;
23
+ function $isSelectingEmptyListItem(anchorNode, nodes) {
24
+ return (0, _ListItemNode.$isListItemNode)(anchorNode) && (nodes.length === 0 || nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0);
25
+ }
26
+ function $getListItemValue(listItem) {
27
+ var list = listItem.getParent();
28
+ var value = 1;
29
+ if (list !== null) {
30
+ if (!(0, _ListNode.$isListNode)(list)) {
31
+ console.log("$getListItemValue: webiny list node is not parent of webiny list item node");
32
+ return DEFAULT_LIST_START_NUMBER;
33
+ } else {
34
+ value = list.getStart();
35
+ }
36
+ }
37
+ var siblings = listItem.getPreviousSiblings();
38
+ for (var i = 0; i < siblings.length; i++) {
39
+ var sibling = siblings[i];
40
+ if ((0, _ListItemNode.$isListItemNode)(sibling) && !(0, _ListNode.$isListNode)(sibling.getFirstChild())) {
41
+ value++;
42
+ }
43
+ }
44
+ return value;
45
+ }
46
+ function insertList(editor, listType, styleId) {
47
+ editor.update(function () {
48
+ var selection = (0, _lexical.$getSelection)();
49
+ if ((0, _lexical.$isRangeSelection)(selection) || (0, _lexical.DEPRECATED_$isGridSelection)(selection)) {
50
+ var nodes = selection.getNodes();
51
+ var anchor = selection.anchor;
52
+ var anchorNode = anchor.getNode();
53
+ var anchorNodeParent = anchorNode.getParent();
54
+ if ($isSelectingEmptyListItem(anchorNode, nodes)) {
55
+ var list = (0, _ListNode.$createListNode)(listType, styleId);
56
+ if ((0, _lexical.$isRootOrShadowRoot)(anchorNodeParent)) {
57
+ anchorNode.replace(list);
58
+ var listItem = (0, _ListItemNode.$createListItemNode)();
59
+ if ((0, _lexical.$isElementNode)(anchorNode)) {
60
+ listItem.setFormat(anchorNode.getFormatType());
61
+ listItem.setIndent(anchorNode.getIndent());
62
+ }
63
+ list.append(listItem);
64
+ } else if ((0, _ListItemNode.$isListItemNode)(anchorNode)) {
65
+ var parent = anchorNode.getParentOrThrow();
66
+ append(list, parent.getChildren());
67
+ parent.replace(list);
68
+ }
69
+ return;
70
+ } else {
71
+ var handled = new Set();
72
+ for (var i = 0; i < nodes.length; i++) {
73
+ var node = nodes[i];
74
+ if ((0, _lexical.$isElementNode)(node) && node.isEmpty() && !handled.has(node.getKey())) {
75
+ createListOrMerge(node, listType, styleId);
76
+ continue;
77
+ }
78
+ if ((0, _lexical.$isLeafNode)(node)) {
79
+ var _parent = node.getParent();
80
+ while (_parent != null) {
81
+ var parentKey = _parent.getKey();
82
+ if ((0, _ListNode.$isListNode)(_parent)) {
83
+ if (!handled.has(parentKey)) {
84
+ var newListNode = (0, _ListNode.$createListNode)(listType, styleId);
85
+ append(newListNode, _parent.getChildren());
86
+ _parent.replace(newListNode);
87
+ updateChildrenListItemValue(newListNode);
88
+ handled.add(parentKey);
89
+ }
90
+ break;
91
+ } else {
92
+ var nextParent = _parent.getParent();
93
+ if ((0, _lexical.$isRootOrShadowRoot)(nextParent) && !handled.has(parentKey)) {
94
+ handled.add(parentKey);
95
+ createListOrMerge(_parent, listType, styleId);
96
+ break;
97
+ }
98
+ _parent = nextParent;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ });
106
+ }
107
+ function append(node, nodesToAppend) {
108
+ node.splice(node.getChildrenSize(), 0, nodesToAppend);
109
+ }
110
+ function createListOrMerge(node, listType, styleId) {
111
+ if ((0, _ListNode.$isListNode)(node)) {
112
+ return node;
113
+ }
114
+ var previousSibling = node.getPreviousSibling();
115
+ var nextSibling = node.getNextSibling();
116
+ var listItem = (0, _ListItemNode.$createListItemNode)();
117
+ listItem.setFormat(node.getFormatType());
118
+ listItem.setIndent(node.getIndent());
119
+ append(listItem, node.getChildren());
120
+ if ((0, _ListNode.$isListNode)(previousSibling) && listType === previousSibling.getListType()) {
121
+ previousSibling.append(listItem);
122
+ node.remove();
123
+ // if the same type of list is on both sides, merge them.
124
+
125
+ if ((0, _ListNode.$isListNode)(nextSibling) && listType === nextSibling.getListType()) {
126
+ append(previousSibling, nextSibling.getChildren());
127
+ nextSibling.remove();
128
+ }
129
+ return previousSibling;
130
+ } else if ((0, _ListNode.$isListNode)(nextSibling) && listType === nextSibling.getListType()) {
131
+ nextSibling.getFirstChildOrThrow().insertBefore(listItem);
132
+ node.remove();
133
+ return nextSibling;
134
+ } else {
135
+ var list = (0, _ListNode.$createListNode)(listType, styleId);
136
+ list.append(listItem);
137
+ node.replace(list);
138
+ updateChildrenListItemValue(list);
139
+ return list;
140
+ }
141
+ }
142
+ function removeList(editor) {
143
+ editor.update(function () {
144
+ var selection = (0, _lexical.$getSelection)();
145
+ if ((0, _lexical.$isRangeSelection)(selection)) {
146
+ var listNodes = new Set();
147
+ var nodes = selection.getNodes();
148
+ var anchorNode = selection.anchor.getNode();
149
+ if ($isSelectingEmptyListItem(anchorNode, nodes)) {
150
+ listNodes.add((0, _listNode.$getTopListNode)(anchorNode));
151
+ } else {
152
+ for (var i = 0; i < nodes.length; i++) {
153
+ var node = nodes[i];
154
+ if ((0, _lexical.$isLeafNode)(node)) {
155
+ var WebinyListItemNode = (0, _utils.$getNearestNodeOfType)(node, _ListNode.ListNode);
156
+ if (WebinyListItemNode != null) {
157
+ listNodes.add((0, _listNode.$getTopListNode)(WebinyListItemNode));
158
+ }
159
+ }
160
+ }
161
+ }
162
+ var _iterator = (0, _createForOfIteratorHelper2.default)(listNodes),
163
+ _step;
164
+ try {
165
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
166
+ var listNode = _step.value;
167
+ var insertionPoint = listNode;
168
+ var listItems = (0, _listNode.$getAllListItems)(listNode);
169
+ var _iterator2 = (0, _createForOfIteratorHelper2.default)(listItems),
170
+ _step2;
171
+ try {
172
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
173
+ var _WebinyListItemNode = _step2.value;
174
+ var paragraph = (0, _ParagraphNode.$createParagraphNode)();
175
+ append(paragraph, _WebinyListItemNode.getChildren());
176
+ insertionPoint.insertAfter(paragraph);
177
+ insertionPoint = paragraph;
178
+
179
+ // When the anchor and focus fall on the textNode
180
+ // we don't have to change the selection because the textNode will be appended to
181
+ // the newly generated paragraph.
182
+ // When selection is in empty nested list item, selection is actually on the WebinyListItemNode.
183
+ // When the corresponding WebinyListItemNode is deleted and replaced by the newly generated paragraph
184
+ // we should manually set the selection's focus and anchor to the newly generated paragraph.
185
+ if (_WebinyListItemNode.__key === selection.anchor.key) {
186
+ selection.anchor.set(paragraph.getKey(), 0, "element");
187
+ }
188
+ if (_WebinyListItemNode.__key === selection.focus.key) {
189
+ selection.focus.set(paragraph.getKey(), 0, "element");
190
+ }
191
+ _WebinyListItemNode.remove();
192
+ }
193
+ } catch (err) {
194
+ _iterator2.e(err);
195
+ } finally {
196
+ _iterator2.f();
197
+ }
198
+ listNode.remove();
199
+ }
200
+ } catch (err) {
201
+ _iterator.e(err);
202
+ } finally {
203
+ _iterator.f();
204
+ }
205
+ }
206
+ });
207
+ }
208
+ function updateChildrenListItemValue(list, children) {
209
+ var childrenOrExisting = children || list.getChildren();
210
+ if (childrenOrExisting !== undefined) {
211
+ for (var i = 0; i < childrenOrExisting.length; i++) {
212
+ var child = childrenOrExisting[i];
213
+ if ((0, _ListItemNode.$isListItemNode)(child)) {
214
+ var prevValue = child.getValue();
215
+ var nextValue = $getListItemValue(child);
216
+ if (prevValue !== nextValue) {
217
+ child.setValue(nextValue);
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ function $handleIndent(WebinyListItemNodes) {
224
+ // go through each node and decide where to move it.
225
+ var removed = new Set();
226
+ WebinyListItemNodes.forEach(function (WebinyListItemNode) {
227
+ if ((0, _listNode.isNestedListNode)(WebinyListItemNode) || removed.has(WebinyListItemNode.getKey())) {
228
+ return;
229
+ }
230
+ var parent = WebinyListItemNode.getParent();
231
+
232
+ // We can cast both of the below `isNestedListNode` only returns a boolean type instead of a user-defined type guards
233
+ var nextSibling = WebinyListItemNode.getNextSibling();
234
+ var previousSibling = WebinyListItemNode.getPreviousSibling();
235
+ // if there are nested lists on either side, merge them all together.
236
+
237
+ if ((0, _listNode.isNestedListNode)(nextSibling) && (0, _listNode.isNestedListNode)(previousSibling)) {
238
+ var innerList = previousSibling.getFirstChild();
239
+ if ((0, _ListNode.$isListNode)(innerList)) {
240
+ innerList.append(WebinyListItemNode);
241
+ var nextInnerList = nextSibling.getFirstChild();
242
+ if ((0, _ListNode.$isListNode)(nextInnerList)) {
243
+ var children = nextInnerList.getChildren();
244
+ append(innerList, children);
245
+ nextSibling.remove();
246
+ removed.add(nextSibling.getKey());
247
+ }
248
+ updateChildrenListItemValue(innerList);
249
+ }
250
+ } else if ((0, _listNode.isNestedListNode)(nextSibling)) {
251
+ // if the WebinyListItemNode is next to a nested ListNode, merge them
252
+ var _innerList = nextSibling.getFirstChild();
253
+ if ((0, _ListNode.$isListNode)(_innerList)) {
254
+ var firstChild = _innerList.getFirstChild();
255
+ if (firstChild !== null) {
256
+ firstChild.insertBefore(WebinyListItemNode);
257
+ }
258
+ updateChildrenListItemValue(_innerList);
259
+ }
260
+ } else if ((0, _listNode.isNestedListNode)(previousSibling)) {
261
+ var _innerList2 = previousSibling.getFirstChild();
262
+ if ((0, _ListNode.$isListNode)(_innerList2)) {
263
+ _innerList2.append(WebinyListItemNode);
264
+ updateChildrenListItemValue(_innerList2);
265
+ }
266
+ } else {
267
+ // otherwise, we need to create a new nested ListNode
268
+
269
+ if ((0, _ListNode.$isListNode)(parent)) {
270
+ var newListItem = (0, _ListItemNode.$createListItemNode)();
271
+ var newList = (0, _ListNode.$createListNode)(parent.getListType(), parent.getStyleId());
272
+ newListItem.append(newList);
273
+ newList.append(WebinyListItemNode);
274
+ if (previousSibling) {
275
+ previousSibling.insertAfter(newListItem);
276
+ } else if (nextSibling) {
277
+ nextSibling.insertBefore(newListItem);
278
+ } else {
279
+ parent.append(newListItem);
280
+ }
281
+ }
282
+ }
283
+ if ((0, _ListNode.$isListNode)(parent)) {
284
+ updateChildrenListItemValue(parent);
285
+ }
286
+ });
287
+ }
288
+ function $handleOutdent(WebinyListItemNodes) {
289
+ // go through each node and decide where to move it.
290
+
291
+ WebinyListItemNodes.forEach(function (WebinyListItemNode) {
292
+ if ((0, _listNode.isNestedListNode)(WebinyListItemNode)) {
293
+ return;
294
+ }
295
+ var parentList = WebinyListItemNode.getParent();
296
+ var grandparentListItem = parentList ? parentList.getParent() : undefined;
297
+ var greatGrandparentList = grandparentListItem ? grandparentListItem.getParent() : undefined;
298
+ // If it doesn't have these ancestors, it's not indented.
299
+
300
+ if ((0, _ListNode.$isListNode)(greatGrandparentList) && (0, _ListItemNode.$isListItemNode)(grandparentListItem) && (0, _ListNode.$isListNode)(parentList)) {
301
+ // if it's the first child in it's parent list, insert it into the
302
+ // great grandparent list before the grandparent
303
+ var firstChild = parentList ? parentList.getFirstChild() : undefined;
304
+ var lastChild = parentList ? parentList.getLastChild() : undefined;
305
+ if (WebinyListItemNode.is(firstChild)) {
306
+ grandparentListItem.insertBefore(WebinyListItemNode);
307
+ if (parentList.isEmpty()) {
308
+ grandparentListItem.remove();
309
+ }
310
+ // if it's the last child in it's parent list, insert it into the
311
+ // great grandparent list after the grandparent.
312
+ } else if (WebinyListItemNode.is(lastChild)) {
313
+ grandparentListItem.insertAfter(WebinyListItemNode);
314
+ if (parentList.isEmpty()) {
315
+ grandparentListItem.remove();
316
+ }
317
+ } else {
318
+ // otherwise, we need to split the siblings into two new nested lists
319
+ var listType = parentList.getListType();
320
+ var themeStyleId = parentList.getStyleId();
321
+ var previousSiblingsListItem = (0, _ListItemNode.$createListItemNode)();
322
+ var previousSiblingsList = (0, _ListNode.$createListNode)(listType, themeStyleId);
323
+ previousSiblingsListItem.append(previousSiblingsList);
324
+ WebinyListItemNode.getPreviousSiblings().forEach(function (sibling) {
325
+ return previousSiblingsList.append(sibling);
326
+ });
327
+ var nextSiblingsListItem = (0, _ListItemNode.$createListItemNode)();
328
+ var nextSiblingsList = (0, _ListNode.$createListNode)(listType, themeStyleId);
329
+ nextSiblingsListItem.append(nextSiblingsList);
330
+ append(nextSiblingsList, WebinyListItemNode.getNextSiblings());
331
+ // put the sibling nested lists on either side of the grandparent list item in the great grandparent.
332
+ grandparentListItem.insertBefore(previousSiblingsListItem);
333
+ grandparentListItem.insertAfter(nextSiblingsListItem);
334
+ // replace the grandparent list item (now between the siblings) with the outdented list item.
335
+ grandparentListItem.replace(WebinyListItemNode);
336
+ }
337
+ updateChildrenListItemValue(parentList);
338
+ updateChildrenListItemValue(greatGrandparentList);
339
+ }
340
+ });
341
+ }
342
+ function maybeIndentOrOutdent(direction) {
343
+ var selection = (0, _lexical.$getSelection)();
344
+ if (!(0, _lexical.$isRangeSelection)(selection)) {
345
+ return;
346
+ }
347
+ var selectedNodes = selection.getNodes();
348
+ var webinyListItemNodes = [];
349
+ if (selectedNodes.length === 0) {
350
+ selectedNodes.push(selection.anchor.getNode());
351
+ }
352
+ if (selectedNodes.length === 1) {
353
+ // Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to
354
+ // find whether this is part of a WebinyListItemNode
355
+ var nearestWebinyListItemNode = (0, _listNode.findNearestWebinyListItemNode)(selectedNodes[0]);
356
+ if (nearestWebinyListItemNode !== null) {
357
+ webinyListItemNodes = [nearestWebinyListItemNode];
358
+ }
359
+ } else {
360
+ webinyListItemNodes = (0, _listNode.getUniqueWebinyListItemNodes)(selectedNodes);
361
+ }
362
+ if (webinyListItemNodes.length > 0) {
363
+ if (direction === "indent") {
364
+ $handleIndent(webinyListItemNodes);
365
+ } else {
366
+ $handleOutdent(webinyListItemNodes);
367
+ }
368
+ }
369
+ }
370
+ function indentList() {
371
+ maybeIndentOrOutdent("indent");
372
+ }
373
+ function outdentList() {
374
+ maybeIndentOrOutdent("outdent");
375
+ }
376
+ function $handleListInsertParagraph() {
377
+ var selection = (0, _lexical.$getSelection)();
378
+ if (!(0, _lexical.$isRangeSelection)(selection) || !selection.isCollapsed()) {
379
+ return false;
380
+ }
381
+
382
+ // Only run this code on empty list items
383
+ var anchor = selection.anchor.getNode();
384
+ if (!(0, _ListItemNode.$isListItemNode)(anchor) || anchor.getTextContent() !== "") {
385
+ return false;
386
+ }
387
+ var topListNode = (0, _listNode.$getTopListNode)(anchor);
388
+ var parent = anchor.getParent();
389
+ if (!(0, _ListNode.$isListNode)(parent)) {
390
+ console.log("A WebinyListItemNode must have a WebinyListNode for a parent.");
391
+ return false;
392
+ }
393
+ var grandparent = (parent === null || parent === void 0 ? void 0 : parent.getParent()) || null;
394
+ var replacementNode;
395
+ if ((0, _lexical.$isRootOrShadowRoot)(grandparent)) {
396
+ replacementNode = (0, _ParagraphNode.$createParagraphNode)();
397
+ topListNode.insertAfter(replacementNode);
398
+ } else if ((0, _ListItemNode.$isListItemNode)(grandparent)) {
399
+ replacementNode = (0, _ListItemNode.$createListItemNode)();
400
+ grandparent.insertAfter(replacementNode);
401
+ } else {
402
+ return false;
403
+ }
404
+ replacementNode.select();
405
+ var nextSiblings = anchor.getNextSiblings();
406
+ if (nextSiblings.length > 0) {
407
+ var newList = (0, _ListNode.$createListNode)(parent === null || parent === void 0 ? void 0 : parent.getListType(), parent === null || parent === void 0 ? void 0 : parent.getStyleId());
408
+ if ((0, _lexical.$isParagraphNode)(replacementNode)) {
409
+ replacementNode.insertAfter(newList);
410
+ } else {
411
+ var newListItem = (0, _ListItemNode.$createListItemNode)();
412
+ newListItem.append(newList);
413
+ replacementNode.insertAfter(newListItem);
414
+ }
415
+ nextSiblings.forEach(function (sibling) {
416
+ sibling.remove();
417
+ newList.append(sibling);
418
+ });
419
+ }
420
+
421
+ // Don't leave hanging nested empty lists
422
+ (0, _listNode.$removeHighestEmptyListParent)(anchor);
423
+ return true;
424
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createListNode","$isRootOrShadowRoot","replace","$createListItemNode","$isElementNode","setFormat","getFormatType","setIndent","getIndent","append","parent","getParentOrThrow","getChildren","handled","Set","node","isEmpty","has","getKey","createListOrMerge","$isLeafNode","parentKey","newListNode","updateChildrenListItemValue","add","nextParent","nodesToAppend","splice","previousSibling","getPreviousSibling","nextSibling","getNextSibling","getListType","remove","getFirstChildOrThrow","insertBefore","removeList","listNodes","$getTopListNode","WebinyListItemNode","$getNearestNodeOfType","ListNode","listNode","insertionPoint","listItems","$getAllListItems","paragraph","$createParagraphNode","insertAfter","__key","key","set","focus","children","childrenOrExisting","undefined","child","prevValue","getValue","nextValue","setValue","$handleIndent","WebinyListItemNodes","removed","forEach","isNestedListNode","innerList","nextInnerList","firstChild","newListItem","newList","getStyleId","$handleOutdent","parentList","grandparentListItem","greatGrandparentList","lastChild","getLastChild","themeStyleId","previousSiblingsListItem","previousSiblingsList","nextSiblingsListItem","nextSiblingsList","getNextSiblings","maybeIndentOrOutdent","direction","selectedNodes","webinyListItemNodes","push","nearestWebinyListItemNode","findNearestWebinyListItemNode","getUniqueWebinyListItemNodes","indentList","outdentList","$handleListInsertParagraph","isCollapsed","getTextContent","topListNode","grandparent","replacementNode","select","nextSiblings","$isParagraphNode","$removeHighestEmptyListParent"],"sources":["formatList.ts"],"sourcesContent":["import {\n $getSelection,\n $isElementNode,\n $isLeafNode,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n DEPRECATED_$isGridSelection,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"../ListNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestWebinyListItemNode,\n getUniqueWebinyListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/listNode\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/nodes/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: ListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: ListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isListNode(list)) {\n console.log(\n \"$getListItemValue: webiny list node is not parent of webiny list item node\"\n );\n return DEFAULT_LIST_START_NUMBER;\n } else {\n value = list.getStart();\n }\n }\n\n const siblings = listItem.getPreviousSiblings();\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n\n if ($isListItemNode(sibling) && !$isListNode(sibling.getFirstChild())) {\n value++;\n }\n }\n return value;\n}\n\nexport function insertList(editor: LexicalEditor, listType: ListType, styleId?: string): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {\n const nodes = selection.getNodes();\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n const anchorNodeParent = anchorNode.getParent();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n const list = $createListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isListItemNode(anchorNode)) {\n const parent = anchorNode.getParentOrThrow();\n append(list, parent.getChildren());\n parent.replace(list);\n }\n\n return;\n } else {\n const handled = new Set();\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && node.isEmpty() && !handled.has(node.getKey())) {\n createListOrMerge(node, listType, styleId);\n continue;\n }\n\n if ($isLeafNode(node)) {\n let parent = node.getParent();\n while (parent != null) {\n const parentKey = parent.getKey();\n\n if ($isListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createListNode(listType, styleId);\n append(newListNode, parent.getChildren());\n parent.replace(newListNode);\n updateChildrenListItemValue(newListNode);\n handled.add(parentKey);\n }\n\n break;\n } else {\n const nextParent = parent.getParent();\n\n if ($isRootOrShadowRoot(nextParent) && !handled.has(parentKey)) {\n handled.add(parentKey);\n createListOrMerge(parent, listType, styleId);\n break;\n }\n\n parent = nextParent;\n }\n }\n }\n }\n }\n }\n });\n}\n\nfunction append(node: ElementNode, nodesToAppend: Array<LexicalNode>) {\n node.splice(node.getChildrenSize(), 0, nodesToAppend);\n}\n\nfunction createListOrMerge(node: ElementNode, listType: ListType, styleId?: string): ListNode {\n if ($isListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isListNode(previousSibling) && listType === previousSibling.getListType()) {\n previousSibling.append(listItem);\n node.remove();\n // if the same type of list is on both sides, merge them.\n\n if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createListNode(listType, styleId);\n list.append(listItem);\n node.replace(list);\n updateChildrenListItemValue(list);\n return list;\n }\n}\n\nexport function removeList(editor: LexicalEditor): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const listNodes = new Set<ListNode>();\n const nodes = selection.getNodes();\n const anchorNode = selection.anchor.getNode();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n listNodes.add($getTopListNode(anchorNode));\n } else {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isLeafNode(node)) {\n const WebinyListItemNode = $getNearestNodeOfType(node, ListNode);\n\n if (WebinyListItemNode != null) {\n listNodes.add($getTopListNode(WebinyListItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: ListNode | BaseParagraphNode = listNode;\n\n const listItems = $getAllListItems(listNode);\n\n for (const WebinyListItemNode of listItems) {\n const paragraph = $createParagraphNode();\n\n append(paragraph, WebinyListItemNode.getChildren());\n\n insertionPoint.insertAfter(paragraph);\n insertionPoint = paragraph;\n\n // When the anchor and focus fall on the textNode\n // we don't have to change the selection because the textNode will be appended to\n // the newly generated paragraph.\n // When selection is in empty nested list item, selection is actually on the WebinyListItemNode.\n // When the corresponding WebinyListItemNode is deleted and replaced by the newly generated paragraph\n // we should manually set the selection's focus and anchor to the newly generated paragraph.\n if (WebinyListItemNode.__key === selection.anchor.key) {\n selection.anchor.set(paragraph.getKey(), 0, \"element\");\n }\n if (WebinyListItemNode.__key === selection.focus.key) {\n selection.focus.set(paragraph.getKey(), 0, \"element\");\n }\n\n WebinyListItemNode.remove();\n }\n listNode.remove();\n }\n }\n });\n}\n\nexport function updateChildrenListItemValue(list: ListNode, children?: Array<LexicalNode>): void {\n const childrenOrExisting = children || list.getChildren();\n if (childrenOrExisting !== undefined) {\n for (let i = 0; i < childrenOrExisting.length; i++) {\n const child = childrenOrExisting[i];\n if ($isListItemNode(child)) {\n const prevValue = child.getValue();\n const nextValue = $getListItemValue(child);\n\n if (prevValue !== nextValue) {\n child.setValue(nextValue);\n }\n }\n }\n }\n}\n\nexport function $handleIndent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: ListItemNode) => {\n if (isNestedListNode(WebinyListItemNode) || removed.has(WebinyListItemNode.getKey())) {\n return;\n }\n\n const parent = WebinyListItemNode.getParent();\n\n // We can cast both of the below `isNestedListNode` only returns a boolean type instead of a user-defined type guards\n const nextSibling = WebinyListItemNode.getNextSibling<ListItemNode>() as ListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<ListItemNode>() as ListItemNode;\n // if there are nested lists on either side, merge them all together.\n\n if (isNestedListNode(nextSibling) && isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isListNode(nextInnerList)) {\n const children = nextInnerList.getChildren();\n append(innerList, children);\n nextSibling.remove();\n removed.add(nextSibling.getKey());\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(nextSibling)) {\n // if the WebinyListItemNode is next to a nested ListNode, merge them\n const innerList = nextSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n const firstChild = innerList.getFirstChild();\n\n if (firstChild !== null) {\n firstChild.insertBefore(WebinyListItemNode);\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isListNode(parent)) {\n const newListItem = $createListItemNode();\n const newList = $createListNode(parent.getListType(), parent.getStyleId());\n newListItem.append(newList);\n newList.append(WebinyListItemNode);\n\n if (previousSibling) {\n previousSibling.insertAfter(newListItem);\n } else if (nextSibling) {\n nextSibling.insertBefore(newListItem);\n } else {\n parent.append(newListItem);\n }\n }\n }\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n\n WebinyListItemNodes.forEach(WebinyListItemNode => {\n if (isNestedListNode(WebinyListItemNode)) {\n return;\n }\n const parentList = WebinyListItemNode.getParent();\n const grandparentListItem = parentList ? parentList.getParent() : undefined;\n const greatGrandparentList = grandparentListItem\n ? grandparentListItem.getParent()\n : undefined;\n // If it doesn't have these ancestors, it's not indented.\n\n if (\n $isListNode(greatGrandparentList) &&\n $isListItemNode(grandparentListItem) &&\n $isListNode(parentList)\n ) {\n // if it's the first child in it's parent list, insert it into the\n // great grandparent list before the grandparent\n const firstChild = parentList ? parentList.getFirstChild() : undefined;\n const lastChild = parentList ? parentList.getLastChild() : undefined;\n\n if (WebinyListItemNode.is(firstChild)) {\n grandparentListItem.insertBefore(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n // if it's the last child in it's parent list, insert it into the\n // great grandparent list after the grandparent.\n } else if (WebinyListItemNode.is(lastChild)) {\n grandparentListItem.insertAfter(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n } else {\n // otherwise, we need to split the siblings into two new nested lists\n const listType = parentList.getListType();\n const themeStyleId = parentList.getStyleId();\n const previousSiblingsListItem = $createListItemNode();\n const previousSiblingsList = $createListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createListItemNode();\n const nextSiblingsList = $createListNode(listType, themeStyleId);\n nextSiblingsListItem.append(nextSiblingsList);\n append(nextSiblingsList, WebinyListItemNode.getNextSiblings());\n // put the sibling nested lists on either side of the grandparent list item in the great grandparent.\n grandparentListItem.insertBefore(previousSiblingsListItem);\n grandparentListItem.insertAfter(nextSiblingsListItem);\n // replace the grandparent list item (now between the siblings) with the outdented list item.\n grandparentListItem.replace(WebinyListItemNode);\n }\n updateChildrenListItemValue(parentList);\n updateChildrenListItemValue(greatGrandparentList);\n }\n });\n}\n\nfunction maybeIndentOrOutdent(direction: \"indent\" | \"outdent\"): void {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const selectedNodes = selection.getNodes();\n let webinyListItemNodes: Array<ListItemNode> = [];\n\n if (selectedNodes.length === 0) {\n selectedNodes.push(selection.anchor.getNode());\n }\n\n if (selectedNodes.length === 1) {\n // Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to\n // find whether this is part of a WebinyListItemNode\n const nearestWebinyListItemNode = findNearestWebinyListItemNode(selectedNodes[0]);\n\n if (nearestWebinyListItemNode !== null) {\n webinyListItemNodes = [nearestWebinyListItemNode];\n }\n } else {\n webinyListItemNodes = getUniqueWebinyListItemNodes(selectedNodes);\n }\n\n if (webinyListItemNodes.length > 0) {\n if (direction === \"indent\") {\n $handleIndent(webinyListItemNodes);\n } else {\n $handleOutdent(webinyListItemNodes);\n }\n }\n}\n\nexport function indentList(): void {\n maybeIndentOrOutdent(\"indent\");\n}\n\nexport function outdentList(): void {\n maybeIndentOrOutdent(\"outdent\");\n}\n\nexport function $handleListInsertParagraph(): boolean {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return false;\n }\n\n // Only run this code on empty list items\n const anchor = selection.anchor.getNode();\n\n if (!$isListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isListNode(parent)) {\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n return false;\n }\n\n const grandparent = parent?.getParent() || null;\n\n let replacementNode;\n\n if ($isRootOrShadowRoot(grandparent)) {\n replacementNode = $createParagraphNode();\n topListNode.insertAfter(replacementNode);\n } else if ($isListItemNode(grandparent)) {\n replacementNode = $createListItemNode();\n grandparent.insertAfter(replacementNode);\n } else {\n return false;\n }\n replacementNode.select();\n\n const nextSiblings = anchor.getNextSiblings();\n\n if (nextSiblings.length > 0) {\n const newList = $createListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createListItemNode();\n newListItem.append(newList);\n replacementNode.insertAfter(newListItem);\n }\n nextSiblings.forEach(sibling => {\n sibling.remove();\n newList.append(sibling);\n });\n }\n\n // Don't leave hanging nested empty lists\n $removeHighestEmptyListParent(anchor);\n\n return true;\n}\n"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /// <reference types="react" />
2
+ /// <reference types="web" />
3
+ import { DOMConversion, DOMConversionMap, EditorConfig, ElementNode, LexicalNode, NodeKey, SerializedElementNode, Spread } from "lexical";
4
+ import { WebinyTheme } from "../themes/webinyLexicalTheme";
5
+ import { ListNodeTagType } from "@lexical/list/LexicalListNode";
6
+ import { ListType } from "@lexical/list";
7
+ export declare type SerializedWebinyListNode = Spread<{
8
+ themeStyleId: string;
9
+ listType: ListType;
10
+ start: number;
11
+ tag: ListNodeTagType;
12
+ type: "webiny-list";
13
+ version: 1;
14
+ }, SerializedElementNode>;
15
+ export declare class ListNode extends ElementNode {
16
+ /** @internal */
17
+ __tag: ListNodeTagType;
18
+ /** @internal */
19
+ __start: number;
20
+ /** @internal */
21
+ __listType: ListType;
22
+ __themeStyleId: string;
23
+ constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey);
24
+ static getType(): string;
25
+ isStyleExistInTheme(theme: WebinyTheme): boolean;
26
+ createDOM(config: EditorConfig): HTMLElement;
27
+ static clone(node: ListNode): ListNode;
28
+ getTag(): ListNodeTagType;
29
+ getListType(): ListType;
30
+ getStart(): number;
31
+ getStyleId(): string;
32
+ static importJSON(serializedNode: SerializedWebinyListNode): ListNode;
33
+ exportJSON(): SerializedWebinyListNode;
34
+ static importDomConversionMap(): DOMConversion<HTMLElement> | null;
35
+ static importDOM(): DOMConversionMap | null;
36
+ setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme): void;
37
+ hasThemeStyle(): boolean;
38
+ updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean;
39
+ extractWithChild(child: LexicalNode): boolean;
40
+ }
41
+ export declare function $createListNode(listType: ListType, themeStyleId?: string, start?: number): ListNode;
42
+ export declare function $isListNode(node: LexicalNode | null | undefined): node is ListNode;