@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,201 +1,174 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
-
9
- import * as React from "react";
10
- import { useRef } from "react";
1
+ import * as __rspack_external_react from "react";
11
2
  function clamp(value, min, max) {
12
- return Math.min(Math.max(value, min), max);
3
+ return Math.min(Math.max(value, min), max);
13
4
  }
14
5
  const Direction = {
15
- east: 1 << 0,
16
- north: 1 << 3,
17
- south: 1 << 1,
18
- west: 1 << 2
6
+ east: 1,
7
+ north: 8,
8
+ south: 2,
9
+ west: 4
19
10
  };
20
- export function ImageResizer({
21
- onResizeStart,
22
- onResizeEnd,
23
- imageRef,
24
- maxWidth,
25
- editor
26
- }) {
27
- const controlWrapperRef = useRef(null);
28
- const userSelect = useRef({
29
- priority: "",
30
- value: "default"
31
- });
32
- const positioningRef = useRef({
33
- currentHeight: 0,
34
- currentWidth: 0,
35
- direction: 0,
36
- isResizing: false,
37
- ratio: 0,
38
- startHeight: 0,
39
- startWidth: 0,
40
- startX: 0,
41
- startY: 0
42
- });
43
- const editorRootElement = editor.getRootElement();
44
- // Find max width, accounting for editor padding.
45
- const maxWidthContainer = maxWidth ? maxWidth : editorRootElement !== null ? editorRootElement.getBoundingClientRect().width - 20 : 100;
46
- const maxHeightContainer = editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;
47
- const minWidth = 100;
48
- const minHeight = 100;
49
- const setStartCursor = direction => {
50
- const ew = direction === Direction.east || direction === Direction.west;
51
- const ns = direction === Direction.north || direction === Direction.south;
52
- const nwse = direction & Direction.north && direction & Direction.west || direction & Direction.south && direction & Direction.east;
53
- const cursorDir = ew ? "ew" : ns ? "ns" : nwse ? "nwse" : "nesw";
54
- if (editorRootElement !== null) {
55
- editorRootElement.style.setProperty("cursor", `${cursorDir}-resize`, "important");
56
- }
57
- if (document.body !== null) {
58
- document.body.style.setProperty("cursor", `${cursorDir}-resize`, "important");
59
- userSelect.current.value = document.body.style.getPropertyValue("-webkit-user-select");
60
- userSelect.current.priority = document.body.style.getPropertyPriority("-webkit-user-select");
61
- document.body.style.setProperty("-webkit-user-select", `none`, "important");
62
- }
63
- };
64
- const setEndCursor = () => {
65
- if (editorRootElement !== null) {
66
- editorRootElement.style.setProperty("cursor", "text");
67
- }
68
- if (document.body !== null) {
69
- document.body.style.setProperty("cursor", "default");
70
- document.body.style.setProperty("-webkit-user-select", userSelect.current.value, userSelect.current.priority);
71
- }
72
- };
73
- const handlePointerDown = (event, direction) => {
74
- if (!editor.isEditable()) {
75
- return;
76
- }
77
- const image = imageRef.current;
78
- const controlWrapper = controlWrapperRef.current;
79
- if (image !== null && controlWrapper !== null) {
80
- const {
81
- width,
82
- height
83
- } = image.getBoundingClientRect();
84
- const positioning = positioningRef.current;
85
- positioning.startWidth = width;
86
- positioning.startHeight = height;
87
- positioning.ratio = width / height;
88
- positioning.currentWidth = width;
89
- positioning.currentHeight = height;
90
- positioning.startX = event.clientX;
91
- positioning.startY = event.clientY;
92
- positioning.isResizing = true;
93
- positioning.direction = direction;
94
- setStartCursor(direction);
95
- onResizeStart();
96
- controlWrapper.classList.add("image-control-wrapper--resizing");
97
- image.style.height = `${height}px`;
98
- image.style.width = `${width}px`;
99
- document.addEventListener("pointermove", handlePointerMove);
100
- document.addEventListener("pointerup", handlePointerUp);
101
- }
102
- };
103
- const handlePointerMove = event => {
104
- const image = imageRef.current;
105
- const positioning = positioningRef.current;
106
- const isHorizontal = positioning.direction & (Direction.east | Direction.west);
107
- const isVertical = positioning.direction & (Direction.south | Direction.north);
108
- if (image !== null && positioning.isResizing) {
109
- // Corner cursor
110
- if (isHorizontal && isVertical) {
111
- let diff = Math.floor(positioning.startX - event.clientX);
112
- diff = positioning.direction & Direction.east ? -diff : diff;
113
- const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
114
- const height = width / positioning.ratio;
115
- image.style.width = `${width}px`;
116
- image.style.height = `${height}px`;
117
- positioning.currentHeight = height;
118
- positioning.currentWidth = width;
119
- } else if (isVertical) {
120
- let diff = Math.floor(positioning.startY - event.clientY);
121
- diff = positioning.direction & Direction.south ? -diff : diff;
122
- const height = clamp(positioning.startHeight + diff, minHeight, maxHeightContainer);
123
- image.style.height = `${height}px`;
124
- positioning.currentHeight = height;
125
- } else {
126
- let diff = Math.floor(positioning.startX - event.clientX);
127
- diff = positioning.direction & Direction.east ? -diff : diff;
128
- const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
129
- image.style.width = `${width}px`;
130
- positioning.currentWidth = width;
131
- }
132
- }
133
- };
134
- const handlePointerUp = () => {
135
- const image = imageRef.current;
136
- const positioning = positioningRef.current;
137
- const controlWrapper = controlWrapperRef.current;
138
- if (image !== null && controlWrapper !== null && positioning.isResizing) {
139
- const width = positioning.currentWidth;
140
- const height = positioning.currentHeight;
141
- positioning.startWidth = 0;
142
- positioning.startHeight = 0;
143
- positioning.ratio = 0;
144
- positioning.startX = 0;
145
- positioning.startY = 0;
146
- positioning.currentWidth = 0;
147
- positioning.currentHeight = 0;
148
- positioning.isResizing = false;
149
- controlWrapper.classList.remove("image-control-wrapper--resizing");
150
- setEndCursor();
151
- onResizeEnd(width, height);
152
- document.removeEventListener("pointermove", handlePointerMove);
153
- document.removeEventListener("pointerup", handlePointerUp);
154
- }
155
- };
156
- return /*#__PURE__*/React.createElement("div", {
157
- ref: controlWrapperRef
158
- }, /*#__PURE__*/React.createElement("div", {
159
- className: "image-resizer image-resizer-n",
160
- onPointerDown: event => {
161
- handlePointerDown(event, Direction.north);
162
- }
163
- }), /*#__PURE__*/React.createElement("div", {
164
- className: "image-resizer image-resizer-ne",
165
- onPointerDown: event => {
166
- handlePointerDown(event, Direction.north | Direction.east);
167
- }
168
- }), /*#__PURE__*/React.createElement("div", {
169
- className: "image-resizer image-resizer-e",
170
- onPointerDown: event => {
171
- handlePointerDown(event, Direction.east);
172
- }
173
- }), /*#__PURE__*/React.createElement("div", {
174
- className: "image-resizer image-resizer-se",
175
- onPointerDown: event => {
176
- handlePointerDown(event, Direction.south | Direction.east);
177
- }
178
- }), /*#__PURE__*/React.createElement("div", {
179
- className: "image-resizer image-resizer-s",
180
- onPointerDown: event => {
181
- handlePointerDown(event, Direction.south);
182
- }
183
- }), /*#__PURE__*/React.createElement("div", {
184
- className: "image-resizer image-resizer-sw",
185
- onPointerDown: event => {
186
- handlePointerDown(event, Direction.south | Direction.west);
187
- }
188
- }), /*#__PURE__*/React.createElement("div", {
189
- className: "image-resizer image-resizer-w",
190
- onPointerDown: event => {
191
- handlePointerDown(event, Direction.west);
192
- }
193
- }), /*#__PURE__*/React.createElement("div", {
194
- className: "image-resizer image-resizer-nw",
195
- onPointerDown: event => {
196
- handlePointerDown(event, Direction.north | Direction.west);
197
- }
198
- }));
11
+ function ImageResizer({ onResizeStart, onResizeEnd, imageRef, maxWidth, editor }) {
12
+ const controlWrapperRef = (0, __rspack_external_react.useRef)(null);
13
+ const userSelect = (0, __rspack_external_react.useRef)({
14
+ priority: "",
15
+ value: "default"
16
+ });
17
+ const positioningRef = (0, __rspack_external_react.useRef)({
18
+ currentHeight: 0,
19
+ currentWidth: 0,
20
+ direction: 0,
21
+ isResizing: false,
22
+ ratio: 0,
23
+ startHeight: 0,
24
+ startWidth: 0,
25
+ startX: 0,
26
+ startY: 0
27
+ });
28
+ const editorRootElement = editor.getRootElement();
29
+ const maxWidthContainer = maxWidth ? maxWidth : null !== editorRootElement ? editorRootElement.getBoundingClientRect().width - 20 : 100;
30
+ const maxHeightContainer = null !== editorRootElement ? editorRootElement.getBoundingClientRect().height - 20 : 100;
31
+ const minWidth = 100;
32
+ const minHeight = 100;
33
+ const setStartCursor = (direction)=>{
34
+ const ew = direction === Direction.east || direction === Direction.west;
35
+ const ns = direction === Direction.north || direction === Direction.south;
36
+ const nwse = direction & Direction.north && direction & Direction.west || direction & Direction.south && direction & Direction.east;
37
+ const cursorDir = ew ? "ew" : ns ? "ns" : nwse ? "nwse" : "nesw";
38
+ if (null !== editorRootElement) editorRootElement.style.setProperty("cursor", `${cursorDir}-resize`, "important");
39
+ if (null !== document.body) {
40
+ document.body.style.setProperty("cursor", `${cursorDir}-resize`, "important");
41
+ userSelect.current.value = document.body.style.getPropertyValue("-webkit-user-select");
42
+ userSelect.current.priority = document.body.style.getPropertyPriority("-webkit-user-select");
43
+ document.body.style.setProperty("-webkit-user-select", "none", "important");
44
+ }
45
+ };
46
+ const setEndCursor = ()=>{
47
+ if (null !== editorRootElement) editorRootElement.style.setProperty("cursor", "text");
48
+ if (null !== document.body) {
49
+ document.body.style.setProperty("cursor", "default");
50
+ document.body.style.setProperty("-webkit-user-select", userSelect.current.value, userSelect.current.priority);
51
+ }
52
+ };
53
+ const handlePointerDown = (event, direction)=>{
54
+ if (!editor.isEditable()) return;
55
+ const image = imageRef.current;
56
+ const controlWrapper = controlWrapperRef.current;
57
+ if (null !== image && null !== controlWrapper) {
58
+ const { width, height } = image.getBoundingClientRect();
59
+ const positioning = positioningRef.current;
60
+ positioning.startWidth = width;
61
+ positioning.startHeight = height;
62
+ positioning.ratio = width / height;
63
+ positioning.currentWidth = width;
64
+ positioning.currentHeight = height;
65
+ positioning.startX = event.clientX;
66
+ positioning.startY = event.clientY;
67
+ positioning.isResizing = true;
68
+ positioning.direction = direction;
69
+ setStartCursor(direction);
70
+ onResizeStart();
71
+ controlWrapper.classList.add("image-control-wrapper--resizing");
72
+ image.style.height = `${height}px`;
73
+ image.style.width = `${width}px`;
74
+ document.addEventListener("pointermove", handlePointerMove);
75
+ document.addEventListener("pointerup", handlePointerUp);
76
+ }
77
+ };
78
+ const handlePointerMove = (event)=>{
79
+ const image = imageRef.current;
80
+ const positioning = positioningRef.current;
81
+ const isHorizontal = positioning.direction & (Direction.east | Direction.west);
82
+ const isVertical = positioning.direction & (Direction.south | Direction.north);
83
+ if (null !== image && positioning.isResizing) if (isHorizontal && isVertical) {
84
+ let diff = Math.floor(positioning.startX - event.clientX);
85
+ diff = positioning.direction & Direction.east ? -diff : diff;
86
+ const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
87
+ const height = width / positioning.ratio;
88
+ image.style.width = `${width}px`;
89
+ image.style.height = `${height}px`;
90
+ positioning.currentHeight = height;
91
+ positioning.currentWidth = width;
92
+ } else if (isVertical) {
93
+ let diff = Math.floor(positioning.startY - event.clientY);
94
+ diff = positioning.direction & Direction.south ? -diff : diff;
95
+ const height = clamp(positioning.startHeight + diff, minHeight, maxHeightContainer);
96
+ image.style.height = `${height}px`;
97
+ positioning.currentHeight = height;
98
+ } else {
99
+ let diff = Math.floor(positioning.startX - event.clientX);
100
+ diff = positioning.direction & Direction.east ? -diff : diff;
101
+ const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
102
+ image.style.width = `${width}px`;
103
+ positioning.currentWidth = width;
104
+ }
105
+ };
106
+ const handlePointerUp = ()=>{
107
+ const image = imageRef.current;
108
+ const positioning = positioningRef.current;
109
+ const controlWrapper = controlWrapperRef.current;
110
+ if (null !== image && null !== controlWrapper && positioning.isResizing) {
111
+ const width = positioning.currentWidth;
112
+ const height = positioning.currentHeight;
113
+ positioning.startWidth = 0;
114
+ positioning.startHeight = 0;
115
+ positioning.ratio = 0;
116
+ positioning.startX = 0;
117
+ positioning.startY = 0;
118
+ positioning.currentWidth = 0;
119
+ positioning.currentHeight = 0;
120
+ positioning.isResizing = false;
121
+ controlWrapper.classList.remove("image-control-wrapper--resizing");
122
+ setEndCursor();
123
+ onResizeEnd(width, height);
124
+ document.removeEventListener("pointermove", handlePointerMove);
125
+ document.removeEventListener("pointerup", handlePointerUp);
126
+ }
127
+ };
128
+ return /*#__PURE__*/ __rspack_external_react.createElement("div", {
129
+ ref: controlWrapperRef
130
+ }, /*#__PURE__*/ __rspack_external_react.createElement("div", {
131
+ className: "image-resizer image-resizer-n",
132
+ onPointerDown: (event)=>{
133
+ handlePointerDown(event, Direction.north);
134
+ }
135
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
136
+ className: "image-resizer image-resizer-ne",
137
+ onPointerDown: (event)=>{
138
+ handlePointerDown(event, Direction.north | Direction.east);
139
+ }
140
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
141
+ className: "image-resizer image-resizer-e",
142
+ onPointerDown: (event)=>{
143
+ handlePointerDown(event, Direction.east);
144
+ }
145
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
146
+ className: "image-resizer image-resizer-se",
147
+ onPointerDown: (event)=>{
148
+ handlePointerDown(event, Direction.south | Direction.east);
149
+ }
150
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
151
+ className: "image-resizer image-resizer-s",
152
+ onPointerDown: (event)=>{
153
+ handlePointerDown(event, Direction.south);
154
+ }
155
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
156
+ className: "image-resizer image-resizer-sw",
157
+ onPointerDown: (event)=>{
158
+ handlePointerDown(event, Direction.south | Direction.west);
159
+ }
160
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
161
+ className: "image-resizer image-resizer-w",
162
+ onPointerDown: (event)=>{
163
+ handlePointerDown(event, Direction.west);
164
+ }
165
+ }), /*#__PURE__*/ __rspack_external_react.createElement("div", {
166
+ className: "image-resizer image-resizer-nw",
167
+ onPointerDown: (event)=>{
168
+ handlePointerDown(event, Direction.north | Direction.west);
169
+ }
170
+ }));
199
171
  }
172
+ export { ImageResizer };
200
173
 
201
174
  //# sourceMappingURL=ImageResizer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","clamp","value","min","max","Math","Direction","east","north","south","west","ImageResizer","onResizeStart","onResizeEnd","imageRef","maxWidth","editor","controlWrapperRef","userSelect","priority","positioningRef","currentHeight","currentWidth","direction","isResizing","ratio","startHeight","startWidth","startX","startY","editorRootElement","getRootElement","maxWidthContainer","getBoundingClientRect","width","maxHeightContainer","height","minWidth","minHeight","setStartCursor","ew","ns","nwse","cursorDir","style","setProperty","document","body","current","getPropertyValue","getPropertyPriority","setEndCursor","handlePointerDown","event","isEditable","image","controlWrapper","positioning","clientX","clientY","classList","add","addEventListener","handlePointerMove","handlePointerUp","isHorizontal","isVertical","diff","floor","remove","removeEventListener","createElement","ref","className","onPointerDown"],"sources":["ImageResizer.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { LexicalEditor } from \"lexical\";\n\nimport * as React from \"react\";\nimport { useRef } from \"react\";\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nconst Direction = {\n east: 1 << 0,\n north: 1 << 3,\n south: 1 << 1,\n west: 1 << 2\n};\n\nexport function ImageResizer({\n onResizeStart,\n onResizeEnd,\n imageRef,\n maxWidth,\n editor\n}: {\n editor: LexicalEditor;\n imageRef: { current: null | HTMLElement };\n maxWidth?: number;\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void;\n onResizeStart: () => void;\n}): React.JSX.Element {\n const controlWrapperRef = useRef<HTMLDivElement>(null);\n const userSelect = useRef({\n priority: \"\",\n value: \"default\"\n });\n const positioningRef = useRef<{\n currentHeight: \"inherit\" | number;\n currentWidth: \"inherit\" | number;\n direction: number;\n isResizing: boolean;\n ratio: number;\n startHeight: number;\n startWidth: number;\n startX: number;\n startY: number;\n }>({\n currentHeight: 0,\n currentWidth: 0,\n direction: 0,\n isResizing: false,\n ratio: 0,\n startHeight: 0,\n startWidth: 0,\n startX: 0,\n startY: 0\n });\n const editorRootElement = editor.getRootElement();\n // Find max width, accounting for editor padding.\n const maxWidthContainer = maxWidth\n ? maxWidth\n : editorRootElement !== null\n ? editorRootElement.getBoundingClientRect().width - 20\n : 100;\n const maxHeightContainer =\n editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;\n\n const minWidth = 100;\n const minHeight = 100;\n\n const setStartCursor = (direction: number) => {\n const ew = direction === Direction.east || direction === Direction.west;\n const ns = direction === Direction.north || direction === Direction.south;\n const nwse =\n (direction & Direction.north && direction & Direction.west) ||\n (direction & Direction.south && direction & Direction.east);\n\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\";\n\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", `${cursorDir}-resize`, \"important\");\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", `${cursorDir}-resize`, \"important\");\n userSelect.current.value = document.body.style.getPropertyValue(\"-webkit-user-select\");\n userSelect.current.priority =\n document.body.style.getPropertyPriority(\"-webkit-user-select\");\n document.body.style.setProperty(\"-webkit-user-select\", `none`, \"important\");\n }\n };\n\n const setEndCursor = () => {\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", \"text\");\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", \"default\");\n document.body.style.setProperty(\n \"-webkit-user-select\",\n userSelect.current.value,\n userSelect.current.priority\n );\n }\n };\n\n const handlePointerDown = (event: React.PointerEvent<HTMLDivElement>, direction: number) => {\n if (!editor.isEditable()) {\n return;\n }\n\n const image = imageRef.current;\n const controlWrapper = controlWrapperRef.current;\n\n if (image !== null && controlWrapper !== null) {\n const { width, height } = image.getBoundingClientRect();\n const positioning = positioningRef.current;\n positioning.startWidth = width;\n positioning.startHeight = height;\n positioning.ratio = width / height;\n positioning.currentWidth = width;\n positioning.currentHeight = height;\n positioning.startX = event.clientX;\n positioning.startY = event.clientY;\n positioning.isResizing = true;\n positioning.direction = direction;\n\n setStartCursor(direction);\n onResizeStart();\n\n controlWrapper.classList.add(\"image-control-wrapper--resizing\");\n image.style.height = `${height}px`;\n image.style.width = `${width}px`;\n\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n }\n };\n const handlePointerMove = (event: PointerEvent) => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n\n const isHorizontal = positioning.direction & (Direction.east | Direction.west);\n const isVertical = positioning.direction & (Direction.south | Direction.north);\n\n if (image !== null && positioning.isResizing) {\n // Corner cursor\n if (isHorizontal && isVertical) {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);\n\n const height = width / positioning.ratio;\n image.style.width = `${width}px`;\n image.style.height = `${height}px`;\n positioning.currentHeight = height;\n positioning.currentWidth = width;\n } else if (isVertical) {\n let diff = Math.floor(positioning.startY - event.clientY);\n diff = positioning.direction & Direction.south ? -diff : diff;\n\n const height = clamp(positioning.startHeight + diff, minHeight, maxHeightContainer);\n\n image.style.height = `${height}px`;\n positioning.currentHeight = height;\n } else {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);\n\n image.style.width = `${width}px`;\n positioning.currentWidth = width;\n }\n }\n };\n const handlePointerUp = () => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n const controlWrapper = controlWrapperRef.current;\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\n const width = positioning.currentWidth;\n const height = positioning.currentHeight;\n positioning.startWidth = 0;\n positioning.startHeight = 0;\n positioning.ratio = 0;\n positioning.startX = 0;\n positioning.startY = 0;\n positioning.currentWidth = 0;\n positioning.currentHeight = 0;\n positioning.isResizing = false;\n\n controlWrapper.classList.remove(\"image-control-wrapper--resizing\");\n\n setEndCursor();\n onResizeEnd(width, height);\n\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n }\n };\n return (\n <div ref={controlWrapperRef}>\n <div\n className=\"image-resizer image-resizer-n\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.north);\n }}\n />\n <div\n className=\"image-resizer image-resizer-ne\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.north | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-e\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-se\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.south | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-s\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.south);\n }}\n />\n <div\n className=\"image-resizer image-resizer-sw\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.south | Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-w\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-nw\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.north | Direction.west);\n }}\n />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"components/ImageNode/ImageResizer.js","sources":["../../../src/components/ImageNode/ImageResizer.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { LexicalEditor } from \"lexical\";\n\nimport * as React from \"react\";\nimport { useRef } from \"react\";\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nconst Direction = {\n east: 1 << 0,\n north: 1 << 3,\n south: 1 << 1,\n west: 1 << 2\n};\n\nexport function ImageResizer({\n onResizeStart,\n onResizeEnd,\n imageRef,\n maxWidth,\n editor\n}: {\n editor: LexicalEditor;\n imageRef: { current: null | HTMLElement };\n maxWidth?: number;\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void;\n onResizeStart: () => void;\n}): React.JSX.Element {\n const controlWrapperRef = useRef<HTMLDivElement>(null);\n const userSelect = useRef({\n priority: \"\",\n value: \"default\"\n });\n const positioningRef = useRef<{\n currentHeight: \"inherit\" | number;\n currentWidth: \"inherit\" | number;\n direction: number;\n isResizing: boolean;\n ratio: number;\n startHeight: number;\n startWidth: number;\n startX: number;\n startY: number;\n }>({\n currentHeight: 0,\n currentWidth: 0,\n direction: 0,\n isResizing: false,\n ratio: 0,\n startHeight: 0,\n startWidth: 0,\n startX: 0,\n startY: 0\n });\n const editorRootElement = editor.getRootElement();\n // Find max width, accounting for editor padding.\n const maxWidthContainer = maxWidth\n ? maxWidth\n : editorRootElement !== null\n ? editorRootElement.getBoundingClientRect().width - 20\n : 100;\n const maxHeightContainer =\n editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;\n\n const minWidth = 100;\n const minHeight = 100;\n\n const setStartCursor = (direction: number) => {\n const ew = direction === Direction.east || direction === Direction.west;\n const ns = direction === Direction.north || direction === Direction.south;\n const nwse =\n (direction & Direction.north && direction & Direction.west) ||\n (direction & Direction.south && direction & Direction.east);\n\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\";\n\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", `${cursorDir}-resize`, \"important\");\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", `${cursorDir}-resize`, \"important\");\n userSelect.current.value = document.body.style.getPropertyValue(\"-webkit-user-select\");\n userSelect.current.priority =\n document.body.style.getPropertyPriority(\"-webkit-user-select\");\n document.body.style.setProperty(\"-webkit-user-select\", `none`, \"important\");\n }\n };\n\n const setEndCursor = () => {\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", \"text\");\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", \"default\");\n document.body.style.setProperty(\n \"-webkit-user-select\",\n userSelect.current.value,\n userSelect.current.priority\n );\n }\n };\n\n const handlePointerDown = (event: React.PointerEvent<HTMLDivElement>, direction: number) => {\n if (!editor.isEditable()) {\n return;\n }\n\n const image = imageRef.current;\n const controlWrapper = controlWrapperRef.current;\n\n if (image !== null && controlWrapper !== null) {\n const { width, height } = image.getBoundingClientRect();\n const positioning = positioningRef.current;\n positioning.startWidth = width;\n positioning.startHeight = height;\n positioning.ratio = width / height;\n positioning.currentWidth = width;\n positioning.currentHeight = height;\n positioning.startX = event.clientX;\n positioning.startY = event.clientY;\n positioning.isResizing = true;\n positioning.direction = direction;\n\n setStartCursor(direction);\n onResizeStart();\n\n controlWrapper.classList.add(\"image-control-wrapper--resizing\");\n image.style.height = `${height}px`;\n image.style.width = `${width}px`;\n\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp);\n }\n };\n const handlePointerMove = (event: PointerEvent) => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n\n const isHorizontal = positioning.direction & (Direction.east | Direction.west);\n const isVertical = positioning.direction & (Direction.south | Direction.north);\n\n if (image !== null && positioning.isResizing) {\n // Corner cursor\n if (isHorizontal && isVertical) {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);\n\n const height = width / positioning.ratio;\n image.style.width = `${width}px`;\n image.style.height = `${height}px`;\n positioning.currentHeight = height;\n positioning.currentWidth = width;\n } else if (isVertical) {\n let diff = Math.floor(positioning.startY - event.clientY);\n diff = positioning.direction & Direction.south ? -diff : diff;\n\n const height = clamp(positioning.startHeight + diff, minHeight, maxHeightContainer);\n\n image.style.height = `${height}px`;\n positioning.currentHeight = height;\n } else {\n let diff = Math.floor(positioning.startX - event.clientX);\n diff = positioning.direction & Direction.east ? -diff : diff;\n\n const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);\n\n image.style.width = `${width}px`;\n positioning.currentWidth = width;\n }\n }\n };\n const handlePointerUp = () => {\n const image = imageRef.current;\n const positioning = positioningRef.current;\n const controlWrapper = controlWrapperRef.current;\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\n const width = positioning.currentWidth;\n const height = positioning.currentHeight;\n positioning.startWidth = 0;\n positioning.startHeight = 0;\n positioning.ratio = 0;\n positioning.startX = 0;\n positioning.startY = 0;\n positioning.currentWidth = 0;\n positioning.currentHeight = 0;\n positioning.isResizing = false;\n\n controlWrapper.classList.remove(\"image-control-wrapper--resizing\");\n\n setEndCursor();\n onResizeEnd(width, height);\n\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n }\n };\n return (\n <div ref={controlWrapperRef}>\n <div\n className=\"image-resizer image-resizer-n\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.north);\n }}\n />\n <div\n className=\"image-resizer image-resizer-ne\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.north | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-e\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-se\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.south | Direction.east);\n }}\n />\n <div\n className=\"image-resizer image-resizer-s\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.south);\n }}\n />\n <div\n className=\"image-resizer image-resizer-sw\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.south | Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-w\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.west);\n }}\n />\n <div\n className=\"image-resizer image-resizer-nw\"\n onPointerDown={event => {\n handlePointerDown(event, Direction.north | Direction.west);\n }}\n />\n </div>\n );\n}\n"],"names":["clamp","value","min","max","Math","Direction","ImageResizer","onResizeStart","onResizeEnd","imageRef","maxWidth","editor","controlWrapperRef","useRef","userSelect","positioningRef","editorRootElement","maxWidthContainer","maxHeightContainer","minWidth","minHeight","setStartCursor","direction","ew","ns","nwse","cursorDir","document","setEndCursor","handlePointerDown","event","image","controlWrapper","width","height","positioning","handlePointerMove","handlePointerUp","isHorizontal","isVertical","diff"],"mappings":"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"}
@@ -1,27 +1,24 @@
1
1
  const defaultLexicalValue = JSON.stringify({
2
- root: {
3
- children: [{
4
- children: [],
5
- direction: null,
6
- format: "",
7
- indent: 0,
8
- styles: [],
9
- type: "wby-paragraph",
10
- version: 1
11
- }],
12
- direction: null,
13
- format: "",
14
- indent: 0,
15
- type: "root",
16
- version: 1
17
- }
2
+ root: {
3
+ children: [
4
+ {
5
+ children: [],
6
+ direction: null,
7
+ format: "",
8
+ indent: 0,
9
+ styles: [],
10
+ type: "wby-paragraph",
11
+ version: 1
12
+ }
13
+ ],
14
+ direction: null,
15
+ format: "",
16
+ indent: 0,
17
+ type: "root",
18
+ version: 1
19
+ }
18
20
  });
19
-
20
- /**
21
- * @description Basic JSON data string that will initialize the editor.
22
- */
23
- export const generateInitialLexicalValue = () => {
24
- return defaultLexicalValue;
25
- };
21
+ const generateInitialLexicalValue = ()=>defaultLexicalValue;
22
+ export { generateInitialLexicalValue };
26
23
 
27
24
  //# sourceMappingURL=generateInitialLexicalValue.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["defaultLexicalValue","JSON","stringify","root","children","direction","format","indent","styles","type","version","generateInitialLexicalValue"],"sources":["generateInitialLexicalValue.ts"],"sourcesContent":["const defaultLexicalValue = JSON.stringify({\n root: {\n children: [\n {\n children: [],\n direction: null,\n format: \"\",\n indent: 0,\n styles: [],\n type: \"wby-paragraph\",\n version: 1\n }\n ],\n direction: null,\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1\n }\n});\n\n/**\n * @description Basic JSON data string that will initialize the editor.\n */\nexport const generateInitialLexicalValue = (): string => {\n return defaultLexicalValue;\n};\n"],"mappings":"AAAA,MAAMA,mBAAmB,GAAGC,IAAI,CAACC,SAAS,CAAC;EACvCC,IAAI,EAAE;IACFC,QAAQ,EAAE,CACN;MACIA,QAAQ,EAAE,EAAE;MACZC,SAAS,EAAE,IAAI;MACfC,MAAM,EAAE,EAAE;MACVC,MAAM,EAAE,CAAC;MACTC,MAAM,EAAE,EAAE;MACVC,IAAI,EAAE,eAAe;MACrBC,OAAO,EAAE;IACb,CAAC,CACJ;IACDL,SAAS,EAAE,IAAI;IACfC,MAAM,EAAE,EAAE;IACVC,MAAM,EAAE,CAAC;IACTE,IAAI,EAAE,MAAM;IACZC,OAAO,EAAE;EACb;AACJ,CAAC,CAAC;;AAEF;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,KAAc;EACrD,OAAOX,mBAAmB;AAC9B,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"generateInitialLexicalValue.js","sources":["../src/generateInitialLexicalValue.ts"],"sourcesContent":["const defaultLexicalValue = JSON.stringify({\n root: {\n children: [\n {\n children: [],\n direction: null,\n format: \"\",\n indent: 0,\n styles: [],\n type: \"wby-paragraph\",\n version: 1\n }\n ],\n direction: null,\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1\n }\n});\n\n/**\n * @description Basic JSON data string that will initialize the editor.\n */\nexport const generateInitialLexicalValue = (): string => {\n return defaultLexicalValue;\n};\n"],"names":["defaultLexicalValue","JSON","generateInitialLexicalValue"],"mappings":"AAAA,MAAMA,sBAAsBC,KAAK,SAAS,CAAC;IACvC,MAAM;QACF,UAAU;YACN;gBACI,UAAU,EAAE;gBACZ,WAAW;gBACX,QAAQ;gBACR,QAAQ;gBACR,QAAQ,EAAE;gBACV,MAAM;gBACN,SAAS;YACb;SACH;QACD,WAAW;QACX,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,SAAS;IACb;AACJ;AAKO,MAAMC,8BAA8B,IAChCF"}
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { ParagraphNode as BaseParagraphNode } from "lexical";
2
- import { HeadingNode as BaseHeadingNode, QuoteNode as BaseQuoteNode } from "@lexical/rich-text";
1
+ import { ParagraphNode } from "lexical";
2
+ import { HeadingNode, QuoteNode } from "@lexical/rich-text";
3
3
  import { CodeHighlightNode, CodeNode } from "@lexical/code";
4
4
  import { HashtagNode } from "@lexical/hashtag";
5
5
  import { MarkNode } from "@lexical/mark";
@@ -8,9 +8,9 @@ import { AutoLinkNode, LinkNode } from "./LinkNode.js";
8
8
  import { FontColorNode } from "./FontColorNode.js";
9
9
  import { ListNode } from "./ListNode.js";
10
10
  import { ListItemNode } from "./ListItemNode.js";
11
- import { HeadingNode } from "./HeadingNode.js";
12
- import { ParagraphNode } from "./ParagraphNode.js";
13
- import { QuoteNode } from "./QuoteNode.js";
11
+ import { HeadingNode as external_HeadingNode_js_HeadingNode } from "./HeadingNode.js";
12
+ import { ParagraphNode as external_ParagraphNode_js_ParagraphNode } from "./ParagraphNode.js";
13
+ import { QuoteNode as external_QuoteNode_js_QuoteNode } from "./QuoteNode.js";
14
14
  import { ImageNode } from "./ImageNode.js";
15
15
  export * from "./FontColorNode.js";
16
16
  export * from "./ListNode.js";
@@ -29,26 +29,38 @@ export * from "./utils/clearNodeFormating.js";
29
29
  export * from "./utils/toggleLink.js";
30
30
  export * from "./prepareLexicalState.js";
31
31
  export * from "./generateInitialLexicalValue.js";
32
-
33
- // This is a list of all the nodes that our Lexical implementation supports OOTB.
34
- export const allNodes = [ParagraphNode, {
35
- replace: BaseParagraphNode,
36
- with: () => {
37
- return new ParagraphNode();
38
- },
39
- withKlass: ParagraphNode
40
- }, HeadingNode, {
41
- replace: BaseHeadingNode,
42
- with: node => {
43
- return new HeadingNode(node.getTag());
44
- },
45
- withKlass: HeadingNode
46
- }, QuoteNode, {
47
- replace: BaseQuoteNode,
48
- with: () => {
49
- return new QuoteNode();
50
- },
51
- withKlass: QuoteNode
52
- }, ImageNode, ListNode, ListItemNode, CodeNode, HashtagNode, CodeHighlightNode, AutoLinkNode, OverflowNode, MarkNode, FontColorNode, QuoteNode, LinkNode];
32
+ const allNodes = [
33
+ external_ParagraphNode_js_ParagraphNode,
34
+ {
35
+ replace: ParagraphNode,
36
+ with: ()=>new external_ParagraphNode_js_ParagraphNode(),
37
+ withKlass: external_ParagraphNode_js_ParagraphNode
38
+ },
39
+ external_HeadingNode_js_HeadingNode,
40
+ {
41
+ replace: HeadingNode,
42
+ with: (node)=>new external_HeadingNode_js_HeadingNode(node.getTag()),
43
+ withKlass: external_HeadingNode_js_HeadingNode
44
+ },
45
+ external_QuoteNode_js_QuoteNode,
46
+ {
47
+ replace: QuoteNode,
48
+ with: ()=>new external_QuoteNode_js_QuoteNode(),
49
+ withKlass: external_QuoteNode_js_QuoteNode
50
+ },
51
+ ImageNode,
52
+ ListNode,
53
+ ListItemNode,
54
+ CodeNode,
55
+ HashtagNode,
56
+ CodeHighlightNode,
57
+ AutoLinkNode,
58
+ OverflowNode,
59
+ MarkNode,
60
+ FontColorNode,
61
+ external_QuoteNode_js_QuoteNode,
62
+ LinkNode
63
+ ];
64
+ export { allNodes };
53
65
 
54
66
  //# sourceMappingURL=index.js.map