@webiny/lexical-nodes 6.3.0 → 6.4.0-beta.1

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 (45) hide show
  1. package/FontColorNode.js +94 -119
  2. package/FontColorNode.js.map +1 -1
  3. package/HeadingNode.js +160 -183
  4. package/HeadingNode.js.map +1 -1
  5. package/ImageNode.js +101 -131
  6. package/ImageNode.js.map +1 -1
  7. package/LinkNode.js +228 -315
  8. package/LinkNode.js.map +1 -1
  9. package/ListItemNode.js +249 -320
  10. package/ListItemNode.js.map +1 -1
  11. package/ListNode.js +174 -223
  12. package/ListNode.js.map +1 -1
  13. package/ParagraphNode.js +119 -148
  14. package/ParagraphNode.js.map +1 -1
  15. package/QuoteNode.js +97 -102
  16. package/QuoteNode.js.map +1 -1
  17. package/components/ImageNode/ImageComponent.js +117 -147
  18. package/components/ImageNode/ImageComponent.js.map +1 -1
  19. package/components/ImageNode/ImageResizer.js +167 -194
  20. package/components/ImageNode/ImageResizer.js.map +1 -1
  21. package/generateInitialLexicalValue.js +20 -23
  22. package/generateInitialLexicalValue.js.map +1 -1
  23. package/index.js +38 -26
  24. package/index.js.map +1 -1
  25. package/package.json +4 -4
  26. package/prepareLexicalState.js +30 -43
  27. package/prepareLexicalState.js.map +1 -1
  28. package/types.js +0 -3
  29. package/utils/clearNodeFormating.js +14 -15
  30. package/utils/clearNodeFormating.js.map +1 -1
  31. package/utils/formatList.js +277 -368
  32. package/utils/formatList.js.map +1 -1
  33. package/utils/formatToHeading.js +6 -13
  34. package/utils/formatToHeading.js.map +1 -1
  35. package/utils/formatToParagraph.js +6 -7
  36. package/utils/formatToParagraph.js.map +1 -1
  37. package/utils/formatToQuote.js +6 -13
  38. package/utils/formatToQuote.js.map +1 -1
  39. package/utils/getStyleId.js +6 -11
  40. package/utils/getStyleId.js.map +1 -1
  41. package/utils/listNode.js +60 -84
  42. package/utils/listNode.js.map +1 -1
  43. package/utils/toggleLink.js +67 -118
  44. package/utils/toggleLink.js.map +1 -1
  45. package/types.js.map +0 -1
@@ -1,131 +1,80 @@
1
1
  import { $getSelection, $isElementNode, $isRangeSelection } from "lexical";
2
2
  import { $createLinkNode, $isLinkNode } from "../LinkNode.js";
3
-
4
- /**
5
- * Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null,
6
- * but saves any children and brings them up to the parent node.
7
- * @param url - The URL the link directs to.
8
- * @param attributes - Optional HTML a tag attributes. { target, rel, title }
9
- */
10
- export function toggleLink(url, attributes = {}) {
11
- const {
12
- target,
13
- title,
14
- alt
15
- } = attributes;
16
- const rel = attributes.rel === undefined ? "noreferrer" : attributes.rel;
17
- const selection = $getSelection();
18
- if (!$isRangeSelection(selection)) {
19
- return;
20
- }
21
- const nodes = selection.extract();
22
- if (url === null) {
23
- // Remove LinkNodes
24
- nodes.forEach(node => {
25
- const parent = node.getParent();
26
- if ($isLinkNode(parent)) {
27
- const children = parent.getChildren();
28
- for (let i = 0; i < children.length; i++) {
29
- parent.insertBefore(children[i]);
3
+ function toggleLink(url, attributes = {}) {
4
+ const { target, title, alt } = attributes;
5
+ const rel = void 0 === attributes.rel ? "noreferrer" : attributes.rel;
6
+ const selection = $getSelection();
7
+ if (!$isRangeSelection(selection)) return;
8
+ const nodes = selection.extract();
9
+ if (null === url) nodes.forEach((node)=>{
10
+ const parent = node.getParent();
11
+ if ($isLinkNode(parent)) {
12
+ const children = parent.getChildren();
13
+ for(let i = 0; i < children.length; i++)parent.insertBefore(children[i]);
14
+ parent.remove();
30
15
  }
31
- parent.remove();
32
- }
33
16
  });
34
- } else {
35
- // Add or merge LinkNodes
36
- if (nodes.length === 1) {
37
- const firstNode = nodes[0];
38
- // if the first node is a LinkNode or if its
39
- // parent is a LinkNode, we update the URL, target and rel.
40
- const linkNode = $isLinkNode(firstNode) ? firstNode : $getLinkAncestor(firstNode);
41
- if (linkNode !== null) {
42
- linkNode.setURL(url);
43
- if (target !== undefined) {
44
- linkNode.setTarget(target);
45
- }
46
- if (rel !== null) {
47
- linkNode.setRel(rel);
48
- }
49
- if (title !== undefined) {
50
- linkNode.setTitle(title);
51
- }
52
- if (alt !== undefined) {
53
- linkNode.setAlt(alt);
54
- }
55
- return;
56
- }
57
- }
58
- let prevParent = null;
59
- let linkNode = null;
60
- nodes.forEach(node => {
61
- const parent = node.getParent();
62
- if (parent === linkNode || parent === null || $isElementNode(node) && !node.isInline()) {
63
- return;
64
- }
65
- if ($isLinkNode(parent)) {
66
- linkNode = parent;
67
- parent.setURL(url);
68
- if (target !== undefined) {
69
- parent.setTarget(target);
70
- }
71
- if (rel !== null) {
72
- linkNode.setRel(rel);
17
+ else {
18
+ if (1 === nodes.length) {
19
+ const firstNode = nodes[0];
20
+ const linkNode = $isLinkNode(firstNode) ? firstNode : $getLinkAncestor(firstNode);
21
+ if (null !== linkNode) {
22
+ linkNode.setURL(url);
23
+ if (void 0 !== target) linkNode.setTarget(target);
24
+ if (null !== rel) linkNode.setRel(rel);
25
+ if (void 0 !== title) linkNode.setTitle(title);
26
+ if (void 0 !== alt) linkNode.setAlt(alt);
27
+ return;
28
+ }
73
29
  }
74
- if (title !== undefined) {
75
- linkNode.setTitle(title);
76
- }
77
- if (alt !== undefined) {
78
- linkNode.setAlt(alt);
79
- }
80
- return;
81
- }
82
- if (!parent.is(prevParent)) {
83
- prevParent = parent;
84
- linkNode = $createLinkNode(url, {
85
- rel,
86
- target,
87
- alt
30
+ let prevParent = null;
31
+ let linkNode = null;
32
+ nodes.forEach((node)=>{
33
+ const parent = node.getParent();
34
+ if (parent === linkNode || null === parent || $isElementNode(node) && !node.isInline()) return;
35
+ if ($isLinkNode(parent)) {
36
+ linkNode = parent;
37
+ parent.setURL(url);
38
+ if (void 0 !== target) parent.setTarget(target);
39
+ if (null !== rel) linkNode.setRel(rel);
40
+ if (void 0 !== title) linkNode.setTitle(title);
41
+ if (void 0 !== alt) linkNode.setAlt(alt);
42
+ return;
43
+ }
44
+ if (!parent.is(prevParent)) {
45
+ prevParent = parent;
46
+ linkNode = $createLinkNode(url, {
47
+ rel,
48
+ target,
49
+ alt
50
+ });
51
+ if ($isLinkNode(parent)) if (null === node.getPreviousSibling()) parent.insertBefore(linkNode);
52
+ else parent.insertAfter(linkNode);
53
+ else node.insertBefore(linkNode);
54
+ }
55
+ if ($isLinkNode(node)) {
56
+ if (node.is(linkNode)) return;
57
+ if (null !== linkNode) {
58
+ const children = node.getChildren();
59
+ for(let i = 0; i < children.length; i++)linkNode.append(children[i]);
60
+ }
61
+ node.remove();
62
+ return;
63
+ }
64
+ if (null !== linkNode) linkNode.append(node);
88
65
  });
89
- if ($isLinkNode(parent)) {
90
- if (node.getPreviousSibling() === null) {
91
- parent.insertBefore(linkNode);
92
- } else {
93
- parent.insertAfter(linkNode);
94
- }
95
- } else {
96
- node.insertBefore(linkNode);
97
- }
98
- }
99
- if ($isLinkNode(node)) {
100
- if (node.is(linkNode)) {
101
- return;
102
- }
103
- if (linkNode !== null) {
104
- const children = node.getChildren();
105
- for (let i = 0; i < children.length; i++) {
106
- linkNode.append(children[i]);
107
- }
108
- }
109
- node.remove();
110
- return;
111
- }
112
- if (linkNode !== null) {
113
- linkNode.append(node);
114
- }
115
- });
116
- }
66
+ }
117
67
  }
118
68
  function $getLinkAncestor(node) {
119
- const ancestor = $getAncestor(node, $isLinkNode);
120
- if (!ancestor) {
121
- return null;
122
- }
123
- return ancestor;
69
+ const ancestor = $getAncestor(node, $isLinkNode);
70
+ if (!ancestor) return null;
71
+ return ancestor;
124
72
  }
125
73
  function $getAncestor(node, predicate) {
126
- let parent = node;
127
- while (parent !== null && (parent = parent.getParent()) !== null && !predicate(parent)) {}
128
- return parent;
74
+ let parent = node;
75
+ while(null !== parent && null !== (parent = parent.getParent()) && !predicate(parent));
76
+ return parent;
129
77
  }
78
+ export { toggleLink };
130
79
 
131
80
  //# sourceMappingURL=toggleLink.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["$getSelection","$isElementNode","$isRangeSelection","$createLinkNode","$isLinkNode","toggleLink","url","attributes","target","title","alt","rel","undefined","selection","nodes","extract","forEach","node","parent","getParent","children","getChildren","i","length","insertBefore","remove","firstNode","linkNode","$getLinkAncestor","setURL","setTarget","setRel","setTitle","setAlt","prevParent","isInline","is","getPreviousSibling","insertAfter","append","ancestor","$getAncestor","predicate"],"sources":["toggleLink.ts"],"sourcesContent":["import type { ElementNode, LexicalNode } from \"lexical\";\nimport { $getSelection, $isElementNode, $isRangeSelection } from \"lexical\";\nimport type { LinkAttributes, LinkNode } from \"~/LinkNode.js\";\nimport { $createLinkNode, $isLinkNode } from \"~/LinkNode.js\";\n\n/**\n * Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null,\n * but saves any children and brings them up to the parent node.\n * @param url - The URL the link directs to.\n * @param attributes - Optional HTML a tag attributes. { target, rel, title }\n */\nexport function toggleLink(url: null | string, attributes: LinkAttributes = {}): void {\n const { target, title, alt } = attributes;\n const rel = attributes.rel === undefined ? \"noreferrer\" : attributes.rel;\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const nodes = selection.extract();\n\n if (url === null) {\n // Remove LinkNodes\n nodes.forEach(node => {\n const parent = node.getParent();\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren();\n\n for (let i = 0; i < children.length; i++) {\n parent.insertBefore(children[i]);\n }\n\n parent.remove();\n }\n });\n } else {\n // Add or merge LinkNodes\n if (nodes.length === 1) {\n const firstNode = nodes[0];\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode = $isLinkNode(firstNode) ? firstNode : $getLinkAncestor(firstNode);\n if (linkNode !== null) {\n linkNode.setURL(url);\n if (target !== undefined) {\n linkNode.setTarget(target);\n }\n if (rel !== null) {\n linkNode.setRel(rel);\n }\n if (title !== undefined) {\n linkNode.setTitle(title);\n }\n\n if (alt !== undefined) {\n linkNode.setAlt(alt);\n }\n return;\n }\n }\n\n let prevParent: ElementNode | LinkNode | null = null;\n let linkNode: LinkNode | null = null;\n\n nodes.forEach(node => {\n const parent = node.getParent();\n\n if (\n parent === linkNode ||\n parent === null ||\n ($isElementNode(node) && !node.isInline())\n ) {\n return;\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent;\n parent.setURL(url);\n if (target !== undefined) {\n parent.setTarget(target);\n }\n if (rel !== null) {\n linkNode.setRel(rel);\n }\n if (title !== undefined) {\n linkNode.setTitle(title);\n }\n if (alt !== undefined) {\n linkNode.setAlt(alt);\n }\n return;\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent;\n linkNode = $createLinkNode(url, { rel, target, alt });\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode);\n } else {\n parent.insertAfter(linkNode);\n }\n } else {\n node.insertBefore(linkNode);\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return;\n }\n if (linkNode !== null) {\n const children = node.getChildren();\n\n for (let i = 0; i < children.length; i++) {\n linkNode.append(children[i]);\n }\n }\n\n node.remove();\n return;\n }\n\n if (linkNode !== null) {\n linkNode.append(node);\n }\n });\n }\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n const ancestor = $getAncestor(node, $isLinkNode);\n if (!ancestor) {\n return null;\n }\n\n return ancestor as LinkNode;\n}\n\nfunction $getAncestor<NodeType extends LexicalNode = LexicalNode>(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => ancestor is NodeType\n): null | LexicalNode {\n let parent: null | LexicalNode = node;\n while (parent !== null && (parent = parent.getParent()) !== null && !predicate(parent)) {}\n return parent;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils/toggleLink.js","sources":["../../src/utils/toggleLink.ts"],"sourcesContent":["import type { ElementNode, LexicalNode } from \"lexical\";\nimport { $getSelection, $isElementNode, $isRangeSelection } from \"lexical\";\nimport type { LinkAttributes, LinkNode } from \"~/LinkNode.js\";\nimport { $createLinkNode, $isLinkNode } from \"~/LinkNode.js\";\n\n/**\n * Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null,\n * but saves any children and brings them up to the parent node.\n * @param url - The URL the link directs to.\n * @param attributes - Optional HTML a tag attributes. { target, rel, title }\n */\nexport function toggleLink(url: null | string, attributes: LinkAttributes = {}): void {\n const { target, title, alt } = attributes;\n const rel = attributes.rel === undefined ? \"noreferrer\" : attributes.rel;\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const nodes = selection.extract();\n\n if (url === null) {\n // Remove LinkNodes\n nodes.forEach(node => {\n const parent = node.getParent();\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren();\n\n for (let i = 0; i < children.length; i++) {\n parent.insertBefore(children[i]);\n }\n\n parent.remove();\n }\n });\n } else {\n // Add or merge LinkNodes\n if (nodes.length === 1) {\n const firstNode = nodes[0];\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode = $isLinkNode(firstNode) ? firstNode : $getLinkAncestor(firstNode);\n if (linkNode !== null) {\n linkNode.setURL(url);\n if (target !== undefined) {\n linkNode.setTarget(target);\n }\n if (rel !== null) {\n linkNode.setRel(rel);\n }\n if (title !== undefined) {\n linkNode.setTitle(title);\n }\n\n if (alt !== undefined) {\n linkNode.setAlt(alt);\n }\n return;\n }\n }\n\n let prevParent: ElementNode | LinkNode | null = null;\n let linkNode: LinkNode | null = null;\n\n nodes.forEach(node => {\n const parent = node.getParent();\n\n if (\n parent === linkNode ||\n parent === null ||\n ($isElementNode(node) && !node.isInline())\n ) {\n return;\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent;\n parent.setURL(url);\n if (target !== undefined) {\n parent.setTarget(target);\n }\n if (rel !== null) {\n linkNode.setRel(rel);\n }\n if (title !== undefined) {\n linkNode.setTitle(title);\n }\n if (alt !== undefined) {\n linkNode.setAlt(alt);\n }\n return;\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent;\n linkNode = $createLinkNode(url, { rel, target, alt });\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode);\n } else {\n parent.insertAfter(linkNode);\n }\n } else {\n node.insertBefore(linkNode);\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return;\n }\n if (linkNode !== null) {\n const children = node.getChildren();\n\n for (let i = 0; i < children.length; i++) {\n linkNode.append(children[i]);\n }\n }\n\n node.remove();\n return;\n }\n\n if (linkNode !== null) {\n linkNode.append(node);\n }\n });\n }\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n const ancestor = $getAncestor(node, $isLinkNode);\n if (!ancestor) {\n return null;\n }\n\n return ancestor as LinkNode;\n}\n\nfunction $getAncestor<NodeType extends LexicalNode = LexicalNode>(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => ancestor is NodeType\n): null | LexicalNode {\n let parent: null | LexicalNode = node;\n while (parent !== null && (parent = parent.getParent()) !== null && !predicate(parent)) {}\n return parent;\n}\n"],"names":["toggleLink","url","attributes","target","title","alt","rel","undefined","selection","$getSelection","$isRangeSelection","nodes","node","parent","$isLinkNode","children","i","firstNode","linkNode","$getLinkAncestor","prevParent","$isElementNode","$createLinkNode","ancestor","$getAncestor","predicate"],"mappings":"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"}
package/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type ThemeStyleType = \"typography\" | \"colors\" | \"fonts\";\n\nexport interface ThemeStyleValue {\n styleId: string;\n type: ThemeStyleType;\n}\n\nexport interface TypographyStylesNode {\n getStyleId: () => string | undefined;\n setStyleId: (id: string) => void;\n getClassName: () => string | undefined;\n setClassName: (className: string) => void;\n}\n"],"mappings":"","ignoreList":[]}