@webiny/lexical-editor 5.44.1-beta.1 → 5.45.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.md +6 -12
  2. package/commands/image.d.ts +2 -2
  3. package/commands/image.js +2 -8
  4. package/commands/image.js.map +1 -1
  5. package/commands/index.d.ts +5 -4
  6. package/commands/index.js +5 -49
  7. package/commands/index.js.map +1 -1
  8. package/commands/list.d.ts +1 -1
  9. package/commands/list.js +4 -10
  10. package/commands/list.js.map +1 -1
  11. package/commands/quote.d.ts +1 -1
  12. package/commands/quote.js +2 -8
  13. package/commands/quote.js.map +1 -1
  14. package/commands/toolbar.js +2 -8
  15. package/commands/toolbar.js.map +1 -1
  16. package/commands/typography.d.ts +8 -0
  17. package/commands/typography.js +4 -0
  18. package/commands/typography.js.map +1 -0
  19. package/components/Editor/EnsureHeadingTagPlugin.js +10 -16
  20. package/components/Editor/EnsureHeadingTagPlugin.js.map +1 -1
  21. package/components/Editor/RichTextEditor.d.ts +12 -8
  22. package/components/Editor/RichTextEditor.js +89 -102
  23. package/components/Editor/RichTextEditor.js.map +1 -1
  24. package/components/Editor/normalizeInputValue.d.ts +1 -1
  25. package/components/Editor/normalizeInputValue.js +2 -8
  26. package/components/Editor/normalizeInputValue.js.map +1 -1
  27. package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +2 -3
  28. package/components/LexicalEditorConfig/LexicalEditorConfig.js +21 -32
  29. package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -1
  30. package/components/LexicalEditorConfig/components/Node.d.ts +1 -1
  31. package/components/LexicalEditorConfig/components/Node.js +17 -26
  32. package/components/LexicalEditorConfig/components/Node.js.map +1 -1
  33. package/components/LexicalEditorConfig/components/Plugin.js +17 -26
  34. package/components/LexicalEditorConfig/components/Plugin.js.map +1 -1
  35. package/components/LexicalEditorConfig/components/ToolbarElement.js +17 -26
  36. package/components/LexicalEditorConfig/components/ToolbarElement.js.map +1 -1
  37. package/components/LexicalHtmlRenderer.d.ts +4 -7
  38. package/components/LexicalHtmlRenderer.js +35 -53
  39. package/components/LexicalHtmlRenderer.js.map +1 -1
  40. package/components/Toolbar/StaticToolbar.css +416 -0
  41. package/components/Toolbar/StaticToolbar.d.ts +3 -1
  42. package/components/Toolbar/StaticToolbar.js +19 -23
  43. package/components/Toolbar/StaticToolbar.js.map +1 -1
  44. package/components/ToolbarActions/BoldAction.js +16 -21
  45. package/components/ToolbarActions/BoldAction.js.map +1 -1
  46. package/components/ToolbarActions/BulletListAction.js +25 -31
  47. package/components/ToolbarActions/BulletListAction.js.map +1 -1
  48. package/components/ToolbarActions/CodeHighlightAction.js +16 -21
  49. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -1
  50. package/components/ToolbarActions/FontColorAction.js +32 -42
  51. package/components/ToolbarActions/FontColorAction.js.map +1 -1
  52. package/components/ToolbarActions/ImageAction.js +19 -34
  53. package/components/ToolbarActions/ImageAction.js.map +1 -1
  54. package/components/ToolbarActions/ItalicAction.js +16 -21
  55. package/components/ToolbarActions/ItalicAction.js.map +1 -1
  56. package/components/ToolbarActions/LinkAction.js +19 -24
  57. package/components/ToolbarActions/LinkAction.js.map +1 -1
  58. package/components/ToolbarActions/NumberedListAction.js +25 -36
  59. package/components/ToolbarActions/NumberedListAction.js.map +1 -1
  60. package/components/ToolbarActions/QuoteAction.js +20 -25
  61. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  62. package/components/ToolbarActions/TextAlignmentAction.js +36 -45
  63. package/components/ToolbarActions/TextAlignmentAction.js.map +1 -1
  64. package/components/ToolbarActions/TypographyAction.js +57 -79
  65. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  66. package/components/ToolbarActions/UnderlineAction.js +16 -21
  67. package/components/ToolbarActions/UnderlineAction.js.map +1 -1
  68. package/context/FontColorActionContext.js +2 -9
  69. package/context/FontColorActionContext.js.map +1 -1
  70. package/context/RichTextEditorContext.d.ts +6 -7
  71. package/context/RichTextEditorContext.js +28 -26
  72. package/context/RichTextEditorContext.js.map +1 -1
  73. package/context/SharedHistoryContext.d.ts +2 -2
  74. package/context/SharedHistoryContext.js +12 -20
  75. package/context/SharedHistoryContext.js.map +1 -1
  76. package/context/TextAlignmentActionContextProps.d.ts +1 -1
  77. package/context/TextAlignmentActionContextProps.js +2 -9
  78. package/context/TextAlignmentActionContextProps.js.map +1 -1
  79. package/context/TypographyActionContext.d.ts +3 -2
  80. package/context/TypographyActionContext.js +2 -9
  81. package/context/TypographyActionContext.js.map +1 -1
  82. package/exports/admin/lexical.d.ts +15 -0
  83. package/exports/admin/lexical.js +23 -0
  84. package/exports/admin/lexical.js.map +1 -0
  85. package/hooks/index.d.ts +7 -8
  86. package/hooks/index.js +7 -93
  87. package/hooks/index.js.map +1 -1
  88. package/hooks/useCurrentElement.d.ts +3 -3
  89. package/hooks/useCurrentElement.js +11 -18
  90. package/hooks/useCurrentElement.js.map +1 -1
  91. package/hooks/useCurrentSelection.d.ts +2 -1
  92. package/hooks/useCurrentSelection.js +27 -40
  93. package/hooks/useCurrentSelection.js.map +1 -1
  94. package/hooks/useFontColorPicker.d.ts +1 -1
  95. package/hooks/useFontColorPicker.js +5 -11
  96. package/hooks/useFontColorPicker.js.map +1 -1
  97. package/hooks/useIsMounted.js +6 -14
  98. package/hooks/useIsMounted.js.map +1 -1
  99. package/hooks/useRichTextEditor.d.ts +1 -1
  100. package/hooks/useRichTextEditor.js +5 -11
  101. package/hooks/useRichTextEditor.js.map +1 -1
  102. package/hooks/useTextAlignmentAction.d.ts +1 -1
  103. package/hooks/useTextAlignmentAction.js +5 -11
  104. package/hooks/useTextAlignmentAction.js.map +1 -1
  105. package/hooks/useTypographyAction.d.ts +1 -1
  106. package/hooks/useTypographyAction.js +5 -11
  107. package/hooks/useTypographyAction.js.map +1 -1
  108. package/index.d.ts +33 -38
  109. package/index.js +44 -322
  110. package/index.js.map +1 -1
  111. package/package.json +18 -22
  112. package/plugins/BlurEventPlugin/BlurEventPlugin.d.ts +2 -2
  113. package/plugins/BlurEventPlugin/BlurEventPlugin.js +16 -22
  114. package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -1
  115. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js +9 -14
  116. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -1
  117. package/plugins/CodeHighlightPlugin/index.d.ts +1 -1
  118. package/plugins/CodeHighlightPlugin/index.js +1 -16
  119. package/plugins/CodeHighlightPlugin/index.js.map +1 -1
  120. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.d.ts +10 -0
  121. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.js +28 -0
  122. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.js.map +1 -0
  123. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorController.d.ts +7 -0
  124. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorController.js +61 -0
  125. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorController.js.map +1 -0
  126. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +2 -136
  127. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.d.ts +4 -16
  128. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +7 -180
  129. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -1
  130. package/plugins/FloatingLinkEditorPlugin/index.d.ts +1 -1
  131. package/plugins/FloatingLinkEditorPlugin/index.js +1 -16
  132. package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -1
  133. package/plugins/FloatingLinkEditorPlugin/isChildOfLinkEditor.js +3 -9
  134. package/plugins/FloatingLinkEditorPlugin/isChildOfLinkEditor.js.map +1 -1
  135. package/plugins/FloatingLinkEditorPlugin/types.d.ts +10 -0
  136. package/plugins/FloatingLinkEditorPlugin/types.js +3 -0
  137. package/plugins/FloatingLinkEditorPlugin/types.js.map +1 -0
  138. package/plugins/FloatingLinkEditorPlugin/useFloatingLinkEditor.d.ts +8 -2
  139. package/plugins/FloatingLinkEditorPlugin/useFloatingLinkEditor.js +120 -88
  140. package/plugins/FloatingLinkEditorPlugin/useFloatingLinkEditor.js.map +1 -1
  141. package/plugins/FontColorPlugin/FontColorPlugin.js +19 -22
  142. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  143. package/plugins/FontColorPlugin/applyColorToNode.d.ts +2 -2
  144. package/plugins/FontColorPlugin/applyColorToNode.js +4 -10
  145. package/plugins/FontColorPlugin/applyColorToNode.js.map +1 -1
  146. package/plugins/FontColorPlugin/applyColorToSelection.d.ts +2 -2
  147. package/plugins/FontColorPlugin/applyColorToSelection.js +28 -44
  148. package/plugins/FontColorPlugin/applyColorToSelection.js.map +1 -1
  149. package/plugins/ImagesPlugin/ImagesPlugin.d.ts +1 -2
  150. package/plugins/ImagesPlugin/ImagesPlugin.js +58 -60
  151. package/plugins/ImagesPlugin/ImagesPlugin.js.map +1 -1
  152. package/plugins/LinkPlugin/LinkPlugin.js +29 -37
  153. package/plugins/LinkPlugin/LinkPlugin.js.map +1 -1
  154. package/plugins/ListPLugin/ListPlugin.js +52 -15
  155. package/plugins/ListPLugin/ListPlugin.js.map +1 -1
  156. package/plugins/QuoteNodePlugin/QuoteNodePlugin.js +19 -16
  157. package/plugins/QuoteNodePlugin/QuoteNodePlugin.js.map +1 -1
  158. package/plugins/StateHandlingPlugin.d.ts +1 -1
  159. package/plugins/StateHandlingPlugin.js +32 -39
  160. package/plugins/StateHandlingPlugin.js.map +1 -1
  161. package/plugins/TypographyPlugin/TypographyPlugin.js +17 -21
  162. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  163. package/types.d.ts +4 -4
  164. package/types.js +6 -38
  165. package/types.js.map +1 -1
  166. package/ui/ContentEditable.d.ts +0 -1
  167. package/ui/ContentEditable.js +7 -14
  168. package/ui/ContentEditable.js.map +1 -1
  169. package/ui/Divider.d.ts +0 -1
  170. package/ui/Divider.js +3 -10
  171. package/ui/Divider.js.map +1 -1
  172. package/ui/DropDown.d.ts +1 -1
  173. package/ui/DropDown.js +64 -90
  174. package/ui/DropDown.js.map +1 -1
  175. package/ui/ImageResizer.d.ts +0 -1
  176. package/ui/ImageResizer.js +78 -83
  177. package/ui/ImageResizer.js.map +1 -1
  178. package/ui/LinkPreview.d.ts +0 -1
  179. package/ui/LinkPreview.js +22 -29
  180. package/ui/LinkPreview.js.map +1 -1
  181. package/ui/Placeholder.d.ts +1 -1
  182. package/ui/Placeholder.js +10 -16
  183. package/ui/Placeholder.js.map +1 -1
  184. package/ui/TextInput.d.ts +0 -1
  185. package/ui/TextInput.js +11 -18
  186. package/ui/TextInput.js.map +1 -1
  187. package/ui/ToolbarActionDialog.js +30 -42
  188. package/ui/ToolbarActionDialog.js.map +1 -1
  189. package/utils/canUseDOM.js +1 -7
  190. package/utils/canUseDOM.js.map +1 -1
  191. package/utils/files.d.ts +6 -6
  192. package/utils/files.js +5 -32
  193. package/utils/files.js.map +1 -1
  194. package/utils/getDOMRangeRect.js +4 -10
  195. package/utils/getDOMRangeRect.js.map +1 -1
  196. package/utils/getSelectedNode.d.ts +1 -1
  197. package/utils/getSelectedNode.js +9 -16
  198. package/utils/getSelectedNode.js.map +1 -1
  199. package/utils/getTransparentImage.js +1 -7
  200. package/utils/getTransparentImage.js.map +1 -1
  201. package/utils/insertImage.d.ts +1 -1
  202. package/utils/insertImage.js +8 -14
  203. package/utils/insertImage.js.map +1 -1
  204. package/utils/isAnchorLink.js +1 -7
  205. package/utils/isAnchorLink.js.map +1 -1
  206. package/utils/isChildOfFloatingToolbar.js +3 -12
  207. package/utils/isChildOfFloatingToolbar.js.map +1 -1
  208. package/utils/isHTMLElement.js +1 -7
  209. package/utils/isHTMLElement.js.map +1 -1
  210. package/utils/isValidJSON.js +3 -9
  211. package/utils/isValidJSON.js.map +1 -1
  212. package/utils/isValidLexicalData.d.ts +3 -3
  213. package/utils/isValidLexicalData.js +6 -12
  214. package/utils/isValidLexicalData.js.map +1 -1
  215. package/utils/point.js +35 -60
  216. package/utils/point.js.map +1 -1
  217. package/utils/rect.d.ts +1 -1
  218. package/utils/rect.js +115 -149
  219. package/utils/rect.js.map +1 -1
  220. package/utils/sanitizeUrl.js +6 -13
  221. package/utils/sanitizeUrl.js.map +1 -1
  222. package/utils/setFloatingElemPosition.d.ts +1 -1
  223. package/utils/setFloatingElemPosition.js +24 -30
  224. package/utils/setFloatingElemPosition.js.map +1 -1
  225. package/components/Editor/HeadingEditor.d.ts +0 -7
  226. package/components/Editor/HeadingEditor.js +0 -30
  227. package/components/Editor/HeadingEditor.js.map +0 -1
  228. package/components/Editor/ParagraphEditor.d.ts +0 -7
  229. package/components/Editor/ParagraphEditor.js +0 -29
  230. package/components/Editor/ParagraphEditor.js.map +0 -1
  231. package/components/Toolbar/Toolbar.css +0 -643
  232. package/components/Toolbar/Toolbar.d.ts +0 -11
  233. package/components/Toolbar/Toolbar.js +0 -165
  234. package/components/Toolbar/Toolbar.js.map +0 -1
  235. package/components/ToolbarActions/FontSizeAction.d.ts +0 -14
  236. package/components/ToolbarActions/FontSizeAction.js +0 -109
  237. package/components/ToolbarActions/FontSizeAction.js.map +0 -1
  238. package/hooks/useList.d.ts +0 -2
  239. package/hooks/useList.js +0 -54
  240. package/hooks/useList.js.map +0 -1
  241. package/hooks/useQuote.d.ts +0 -2
  242. package/hooks/useQuote.js +0 -22
  243. package/hooks/useQuote.js.map +0 -1
  244. package/plugins/FloatingLinkEditorPlugin/LinkEditForm.d.ts +0 -9
  245. package/plugins/FloatingLinkEditorPlugin/LinkEditForm.js +0 -118
  246. package/plugins/FloatingLinkEditorPlugin/LinkEditForm.js.map +0 -1
  247. package/plugins/FloatingLinkEditorPlugin/LinkPreviewForm.d.ts +0 -9
  248. package/plugins/FloatingLinkEditorPlugin/LinkPreviewForm.js +0 -44
  249. package/plugins/FloatingLinkEditorPlugin/LinkPreviewForm.js.map +0 -1
  250. package/utils/generateInitialLexicalValue.d.ts +0 -4
  251. package/utils/generateInitialLexicalValue.js +0 -33
  252. package/utils/generateInitialLexicalValue.js.map +0 -1
package/ui/DropDown.js CHANGED
@@ -1,16 +1,3 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.DropDown = DropDown;
9
- exports.DropDownItem = DropDownItem;
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _react = _interopRequireWildcard(require("react"));
13
- var React = _react;
14
1
  /**
15
2
  * Copyright (c) Meta Platforms, Inc. and affiliates.
16
3
  *
@@ -19,22 +6,28 @@ var React = _react;
19
6
  *
20
7
  */
21
8
 
22
- var DropDownContext = /*#__PURE__*/React.createContext(null);
23
- function DropDownItem(_ref) {
24
- var children = _ref.children,
25
- className = _ref.className,
26
- onClick = _ref.onClick,
27
- title = _ref.title;
28
- var ref = (0, _react.useRef)(null);
29
- var dropDownContext = React.useContext(DropDownContext);
9
+ import * as React from "react";
10
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
11
+ const DropDownContext = /*#__PURE__*/React.createContext(null);
12
+ export function DropDownItem({
13
+ children,
14
+ className,
15
+ onClick,
16
+ title
17
+ }) {
18
+ const ref = useRef(null);
19
+ const dropDownContext = React.useContext(DropDownContext);
30
20
  if (dropDownContext === null) {
31
21
  throw new Error("DropDownItem must be used within a DropDown");
32
22
  }
33
- var registerItem = dropDownContext.registerItem;
34
- (0, _react.useEffect)(function () {
35
- if (ref && ref.current) {
36
- registerItem(ref);
23
+ const {
24
+ registerItem
25
+ } = dropDownContext;
26
+ useEffect(() => {
27
+ if (!ref.current) {
28
+ return;
37
29
  }
30
+ registerItem(ref);
38
31
  }, [ref, registerItem]);
39
32
  return /*#__PURE__*/React.createElement("button", {
40
33
  className: className,
@@ -44,45 +37,37 @@ function DropDownItem(_ref) {
44
37
  type: "button"
45
38
  }, children);
46
39
  }
47
- function DropDownItems(_ref2) {
48
- var children = _ref2.children,
49
- dropDownRef = _ref2.dropDownRef,
50
- _ref2$showScroll = _ref2.showScroll,
51
- showScroll = _ref2$showScroll === void 0 ? true : _ref2$showScroll,
52
- onClose = _ref2.onClose;
53
- var _useState = (0, _react.useState)(),
54
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
55
- items = _useState2[0],
56
- setItems = _useState2[1];
57
- var _useState3 = (0, _react.useState)(),
58
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
59
- highlightedItem = _useState4[0],
60
- setHighlightedItem = _useState4[1];
61
- var registerItem = (0, _react.useCallback)(function (itemRef) {
62
- setItems(function (prev) {
63
- return prev ? [].concat((0, _toConsumableArray2.default)(prev), [itemRef]) : [itemRef];
64
- });
40
+ function DropDownItems({
41
+ children,
42
+ dropDownRef,
43
+ showScroll = true,
44
+ onClose
45
+ }) {
46
+ const [items, setItems] = useState();
47
+ const [highlightedItem, setHighlightedItem] = useState();
48
+ const registerItem = useCallback(itemRef => {
49
+ setItems(prev => prev ? [...prev, itemRef] : [itemRef]);
65
50
  }, [setItems]);
66
- var handleKeyDown = function handleKeyDown(event) {
51
+ const handleKeyDown = event => {
67
52
  if (!items) {
68
53
  return;
69
54
  }
70
- var key = event.key;
55
+ const key = event.key;
71
56
  if (["Escape", "ArrowUp", "ArrowDown", "Tab"].includes(key)) {
72
57
  event.preventDefault();
73
58
  }
74
59
  if (key === "Escape" || key === "Tab") {
75
60
  onClose();
76
61
  } else if (key === "ArrowUp") {
77
- setHighlightedItem(function (prev) {
62
+ setHighlightedItem(prev => {
78
63
  if (!prev) {
79
64
  return items[0];
80
65
  }
81
- var index = items.indexOf(prev) - 1;
66
+ const index = items.indexOf(prev) - 1;
82
67
  return items[index === -1 ? items.length - 1 : index];
83
68
  });
84
69
  } else if (key === "ArrowDown") {
85
- setHighlightedItem(function (prev) {
70
+ setHighlightedItem(prev => {
86
71
  if (!prev) {
87
72
  return items[0];
88
73
  }
@@ -90,12 +75,10 @@ function DropDownItems(_ref2) {
90
75
  });
91
76
  }
92
77
  };
93
- var contextValue = (0, _react.useMemo)(function () {
94
- return {
95
- registerItem: registerItem
96
- };
97
- }, [registerItem]);
98
- (0, _react.useEffect)(function () {
78
+ const contextValue = useMemo(() => ({
79
+ registerItem
80
+ }), [registerItem]);
81
+ useEffect(() => {
99
82
  if (items && !highlightedItem) {
100
83
  setHighlightedItem(items[0]);
101
84
  }
@@ -106,54 +89,47 @@ function DropDownItems(_ref2) {
106
89
  return /*#__PURE__*/React.createElement(DropDownContext.Provider, {
107
90
  value: contextValue
108
91
  }, /*#__PURE__*/React.createElement("div", {
109
- className: "lexical-dropdown ".concat(showScroll ? "" : "no-scroll"),
92
+ className: `lexical-dropdown ${showScroll ? "" : "no-scroll"}`,
110
93
  ref: dropDownRef,
111
94
  onKeyDown: handleKeyDown
112
95
  }, children));
113
96
  }
114
- function DropDown(_ref3) {
115
- var _ref3$disabled = _ref3.disabled,
116
- disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
117
- buttonLabel = _ref3.buttonLabel,
118
- buttonAriaLabel = _ref3.buttonAriaLabel,
119
- buttonClassName = _ref3.buttonClassName,
120
- buttonIconClassName = _ref3.buttonIconClassName,
121
- children = _ref3.children,
122
- stopCloseOnClickSelf = _ref3.stopCloseOnClickSelf,
123
- _ref3$showScroll = _ref3.showScroll,
124
- showScroll = _ref3$showScroll === void 0 ? true : _ref3$showScroll;
125
- var dropDownRef = (0, _react.useRef)(null);
126
- var buttonRef = (0, _react.useRef)(null);
97
+ export function DropDown({
98
+ disabled = false,
99
+ buttonLabel,
100
+ buttonAriaLabel,
101
+ buttonClassName,
102
+ buttonIconClassName,
103
+ children,
104
+ stopCloseOnClickSelf,
105
+ showScroll = true
106
+ }) {
107
+ const dropDownRef = useRef(null);
108
+ const buttonRef = useRef(null);
127
109
  // Used to prevent flickering of the dropdown while calculating the dropdown position.
128
- var _useState5 = (0, _react.useState)(false),
129
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
130
- positionIsCalculated = _useState6[0],
131
- setPositionIsCalculated = _useState6[1];
132
- var _useState7 = (0, _react.useState)(false),
133
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
134
- showDropDown = _useState8[0],
135
- setShowDropDown = _useState8[1];
136
- var handleClose = function handleClose() {
110
+ const [positionIsCalculated, setPositionIsCalculated] = useState(false);
111
+ const [showDropDown, setShowDropDown] = useState(false);
112
+ const handleClose = () => {
137
113
  setPositionIsCalculated(false);
138
114
  setShowDropDown(false);
139
115
  if (buttonRef && buttonRef.current) {
140
116
  buttonRef.current.focus();
141
117
  }
142
118
  };
143
- (0, _react.useEffect)(function () {
144
- var button = buttonRef.current;
145
- var dropDown = dropDownRef.current;
119
+ useEffect(() => {
120
+ const button = buttonRef.current;
121
+ const dropDown = dropDownRef.current;
146
122
  if (showDropDown && button && dropDown) {
147
123
  dropDown.style.top = "44px";
148
- dropDown.style.left = "".concat(button.offsetLeft, "px");
124
+ dropDown.style.left = `${button.offsetLeft}px`;
149
125
  setPositionIsCalculated(true);
150
126
  }
151
127
  }, [dropDownRef, buttonRef, showDropDown]);
152
- (0, _react.useEffect)(function () {
153
- var button = buttonRef.current;
128
+ useEffect(() => {
129
+ const button = buttonRef.current;
154
130
  if (button && showDropDown) {
155
- var handle = function handle(event) {
156
- var target = event.target;
131
+ const handle = event => {
132
+ const target = event.target;
157
133
  if (stopCloseOnClickSelf) {
158
134
  if (dropDownRef.current && dropDownRef.current.contains(target)) {
159
135
  return;
@@ -164,13 +140,13 @@ function DropDown(_ref3) {
164
140
  }
165
141
  };
166
142
  document.addEventListener("click", handle);
167
- return function () {
143
+ return () => {
168
144
  document.removeEventListener("click", handle);
169
145
  };
170
146
  }
171
147
  return;
172
148
  }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf]);
173
- var displayContainer = (0, _react.useMemo)(function () {
149
+ const displayContainer = useMemo(() => {
174
150
  // To prevent blinking, we show the container only when the dropdown position is calculated.
175
151
  // Without this, window would be visible first on left (0px), and after a millisecond on the right side.
176
152
  return positionIsCalculated ? {
@@ -186,9 +162,7 @@ function DropDown(_ref3) {
186
162
  disabled: disabled,
187
163
  "aria-label": buttonAriaLabel || buttonLabel,
188
164
  className: buttonClassName,
189
- onClick: function onClick() {
190
- return setShowDropDown(!showDropDown);
191
- },
165
+ onClick: () => setShowDropDown(!showDropDown),
192
166
  ref: buttonRef
193
167
  }, buttonIconClassName && /*#__PURE__*/React.createElement("span", {
194
168
  className: buttonIconClassName
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","React","DropDownContext","createContext","DropDownItem","_ref","children","className","onClick","title","ref","useRef","dropDownContext","useContext","Error","registerItem","useEffect","current","createElement","type","DropDownItems","_ref2","dropDownRef","_ref2$showScroll","showScroll","onClose","_useState","useState","_useState2","_slicedToArray2","default","items","setItems","_useState3","_useState4","highlightedItem","setHighlightedItem","useCallback","itemRef","prev","concat","_toConsumableArray2","handleKeyDown","event","key","includes","preventDefault","index","indexOf","length","contextValue","useMemo","focus","Provider","value","onKeyDown","DropDown","_ref3","_ref3$disabled","disabled","buttonLabel","buttonAriaLabel","buttonClassName","buttonIconClassName","stopCloseOnClickSelf","_ref3$showScroll","buttonRef","_useState5","_useState6","positionIsCalculated","setPositionIsCalculated","_useState7","_useState8","showDropDown","setShowDropDown","handleClose","button","dropDown","style","top","left","offsetLeft","handle","target","contains","document","addEventListener","removeEventListener","displayContainer","display","Fragment","position"],"sources":["DropDown.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 { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport * as React from \"react\";\n\ntype DropDownContextType = {\n registerItem: (ref: React.RefObject<HTMLButtonElement>) => void;\n};\n\nconst DropDownContext = React.createContext<DropDownContextType | null>(null);\n\nexport function DropDownItem({\n children,\n className,\n onClick,\n title\n}: {\n children: React.ReactNode;\n className: string;\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;\n title?: string;\n}) {\n const ref = useRef<HTMLButtonElement>(null);\n\n const dropDownContext = React.useContext(DropDownContext);\n\n if (dropDownContext === null) {\n throw new Error(\"DropDownItem must be used within a DropDown\");\n }\n\n const { registerItem } = dropDownContext;\n\n useEffect(() => {\n if (ref && ref.current) {\n registerItem(ref);\n }\n }, [ref, registerItem]);\n\n return (\n <button className={className} onClick={onClick} ref={ref} title={title} type=\"button\">\n {children}\n </button>\n );\n}\n\nfunction DropDownItems({\n children,\n dropDownRef,\n showScroll = true,\n onClose\n}: {\n children: React.ReactNode;\n dropDownRef?: React.Ref<HTMLDivElement>;\n showScroll?: boolean;\n onClose: () => void;\n}) {\n const [items, setItems] = useState<React.RefObject<HTMLButtonElement>[]>();\n const [highlightedItem, setHighlightedItem] = useState<React.RefObject<HTMLButtonElement>>();\n\n const registerItem = useCallback(\n (itemRef: React.RefObject<HTMLButtonElement>) => {\n setItems(prev => (prev ? [...prev, itemRef] : [itemRef]));\n },\n [setItems]\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!items) {\n return;\n }\n\n const key = event.key;\n\n if ([\"Escape\", \"ArrowUp\", \"ArrowDown\", \"Tab\"].includes(key)) {\n event.preventDefault();\n }\n\n if (key === \"Escape\" || key === \"Tab\") {\n onClose();\n } else if (key === \"ArrowUp\") {\n setHighlightedItem(prev => {\n if (!prev) {\n return items[0];\n }\n const index = items.indexOf(prev) - 1;\n return items[index === -1 ? items.length - 1 : index];\n });\n } else if (key === \"ArrowDown\") {\n setHighlightedItem(prev => {\n if (!prev) {\n return items[0];\n }\n return items[items.indexOf(prev) + 1];\n });\n }\n };\n\n const contextValue = useMemo(\n () => ({\n registerItem\n }),\n [registerItem]\n );\n\n useEffect(() => {\n if (items && !highlightedItem) {\n setHighlightedItem(items[0]);\n }\n\n if (highlightedItem && highlightedItem.current) {\n highlightedItem.current.focus();\n }\n }, [items, highlightedItem]);\n\n return (\n <DropDownContext.Provider value={contextValue}>\n <div\n className={`lexical-dropdown ${showScroll ? \"\" : \"no-scroll\"}`}\n ref={dropDownRef}\n onKeyDown={handleKeyDown}\n >\n {children}\n </div>\n </DropDownContext.Provider>\n );\n}\n\nexport function DropDown({\n disabled = false,\n buttonLabel,\n buttonAriaLabel,\n buttonClassName,\n buttonIconClassName,\n children,\n stopCloseOnClickSelf,\n showScroll = true\n}: {\n disabled?: boolean;\n buttonAriaLabel?: string;\n buttonClassName: string;\n buttonIconClassName?: string;\n buttonLabel?: string;\n children: ReactNode;\n stopCloseOnClickSelf?: boolean;\n showScroll?: boolean;\n}): JSX.Element {\n const dropDownRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n // Used to prevent flickering of the dropdown while calculating the dropdown position.\n const [positionIsCalculated, setPositionIsCalculated] = useState(false);\n const [showDropDown, setShowDropDown] = useState(false);\n\n const handleClose = () => {\n setPositionIsCalculated(false);\n setShowDropDown(false);\n if (buttonRef && buttonRef.current) {\n buttonRef.current.focus();\n }\n };\n\n useEffect(() => {\n const button = buttonRef.current;\n const dropDown = dropDownRef.current;\n\n if (showDropDown && button && dropDown) {\n dropDown.style.top = \"44px\";\n dropDown.style.left = `${button.offsetLeft}px`;\n setPositionIsCalculated(true);\n }\n }, [dropDownRef, buttonRef, showDropDown]);\n\n useEffect(() => {\n const button = buttonRef.current;\n if (button && showDropDown) {\n const handle = (event: MouseEvent) => {\n const target = event.target;\n if (stopCloseOnClickSelf) {\n if (dropDownRef.current && dropDownRef.current.contains(target as Node)) {\n return;\n }\n }\n\n if (!button.contains(target as Node)) {\n setShowDropDown(false);\n }\n };\n document.addEventListener(\"click\", handle);\n return () => {\n document.removeEventListener(\"click\", handle);\n };\n }\n return;\n }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf]);\n\n const displayContainer = useMemo(() => {\n // To prevent blinking, we show the container only when the dropdown position is calculated.\n // Without this, window would be visible first on left (0px), and after a millisecond on the right side.\n return positionIsCalculated ? { display: \"block\" } : { display: \"none\" };\n }, [positionIsCalculated]);\n\n return (\n <>\n <button\n style={{ position: \"relative\" }}\n disabled={disabled}\n aria-label={buttonAriaLabel || buttonLabel}\n className={buttonClassName}\n onClick={() => setShowDropDown(!showDropDown)}\n ref={buttonRef}\n >\n {buttonIconClassName && <span className={buttonIconClassName} />}\n {buttonLabel && <span className=\"text dropdown-button-text\">{buttonLabel}</span>}\n <i className=\"chevron-down\" />\n </button>\n {showDropDown && (\n <div className={\"lexical-dropdown-container\"} style={displayContainer}>\n <DropDownItems\n showScroll={showScroll}\n dropDownRef={dropDownRef}\n onClose={handleClose}\n >\n {children}\n </DropDownItems>\n </div>\n )}\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","DropDownContext","createContext","DropDownItem","children","className","onClick","title","ref","dropDownContext","useContext","Error","registerItem","current","createElement","type","DropDownItems","dropDownRef","showScroll","onClose","items","setItems","highlightedItem","setHighlightedItem","itemRef","prev","handleKeyDown","event","key","includes","preventDefault","index","indexOf","length","contextValue","focus","Provider","value","onKeyDown","DropDown","disabled","buttonLabel","buttonAriaLabel","buttonClassName","buttonIconClassName","stopCloseOnClickSelf","buttonRef","positionIsCalculated","setPositionIsCalculated","showDropDown","setShowDropDown","handleClose","button","dropDown","style","top","left","offsetLeft","handle","target","contains","document","addEventListener","removeEventListener","displayContainer","display","Fragment","position"],"sources":["DropDown.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 { ReactNode, RefObject } from \"react\";\nimport * as React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\ntype DropDownContextType = {\n registerItem: (ref: React.RefObject<HTMLButtonElement>) => void;\n};\n\nconst DropDownContext = React.createContext<DropDownContextType | null>(null);\n\nexport function DropDownItem({\n children,\n className,\n onClick,\n title\n}: {\n children: React.ReactNode;\n className: string;\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;\n title?: string;\n}) {\n const ref = useRef<HTMLButtonElement>(null);\n\n const dropDownContext = React.useContext(DropDownContext);\n\n if (dropDownContext === null) {\n throw new Error(\"DropDownItem must be used within a DropDown\");\n }\n\n const { registerItem } = dropDownContext;\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n registerItem(ref as RefObject<HTMLButtonElement>);\n }, [ref, registerItem]);\n\n return (\n <button className={className} onClick={onClick} ref={ref} title={title} type=\"button\">\n {children}\n </button>\n );\n}\n\nfunction DropDownItems({\n children,\n dropDownRef,\n showScroll = true,\n onClose\n}: {\n children: React.ReactNode;\n dropDownRef?: React.Ref<HTMLDivElement>;\n showScroll?: boolean;\n onClose: () => void;\n}) {\n const [items, setItems] = useState<React.RefObject<HTMLButtonElement>[]>();\n const [highlightedItem, setHighlightedItem] = useState<React.RefObject<HTMLButtonElement>>();\n\n const registerItem = useCallback(\n (itemRef: React.RefObject<HTMLButtonElement>) => {\n setItems(prev => (prev ? [...prev, itemRef] : [itemRef]));\n },\n [setItems]\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!items) {\n return;\n }\n\n const key = event.key;\n\n if ([\"Escape\", \"ArrowUp\", \"ArrowDown\", \"Tab\"].includes(key)) {\n event.preventDefault();\n }\n\n if (key === \"Escape\" || key === \"Tab\") {\n onClose();\n } else if (key === \"ArrowUp\") {\n setHighlightedItem(prev => {\n if (!prev) {\n return items[0];\n }\n const index = items.indexOf(prev) - 1;\n return items[index === -1 ? items.length - 1 : index];\n });\n } else if (key === \"ArrowDown\") {\n setHighlightedItem(prev => {\n if (!prev) {\n return items[0];\n }\n return items[items.indexOf(prev) + 1];\n });\n }\n };\n\n const contextValue = useMemo(\n () => ({\n registerItem\n }),\n [registerItem]\n );\n\n useEffect(() => {\n if (items && !highlightedItem) {\n setHighlightedItem(items[0]);\n }\n\n if (highlightedItem && highlightedItem.current) {\n highlightedItem.current.focus();\n }\n }, [items, highlightedItem]);\n\n return (\n <DropDownContext.Provider value={contextValue}>\n <div\n className={`lexical-dropdown ${showScroll ? \"\" : \"no-scroll\"}`}\n ref={dropDownRef}\n onKeyDown={handleKeyDown}\n >\n {children}\n </div>\n </DropDownContext.Provider>\n );\n}\n\nexport function DropDown({\n disabled = false,\n buttonLabel,\n buttonAriaLabel,\n buttonClassName,\n buttonIconClassName,\n children,\n stopCloseOnClickSelf,\n showScroll = true\n}: {\n disabled?: boolean;\n buttonAriaLabel?: string;\n buttonClassName: string;\n buttonIconClassName?: string;\n buttonLabel?: string;\n children: ReactNode;\n stopCloseOnClickSelf?: boolean;\n showScroll?: boolean;\n}): JSX.Element {\n const dropDownRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n // Used to prevent flickering of the dropdown while calculating the dropdown position.\n const [positionIsCalculated, setPositionIsCalculated] = useState(false);\n const [showDropDown, setShowDropDown] = useState(false);\n\n const handleClose = () => {\n setPositionIsCalculated(false);\n setShowDropDown(false);\n if (buttonRef && buttonRef.current) {\n buttonRef.current.focus();\n }\n };\n\n useEffect(() => {\n const button = buttonRef.current;\n const dropDown = dropDownRef.current;\n\n if (showDropDown && button && dropDown) {\n dropDown.style.top = \"44px\";\n dropDown.style.left = `${button.offsetLeft}px`;\n setPositionIsCalculated(true);\n }\n }, [dropDownRef, buttonRef, showDropDown]);\n\n useEffect(() => {\n const button = buttonRef.current;\n if (button && showDropDown) {\n const handle = (event: MouseEvent) => {\n const target = event.target;\n if (stopCloseOnClickSelf) {\n if (dropDownRef.current && dropDownRef.current.contains(target as Node)) {\n return;\n }\n }\n\n if (!button.contains(target as Node)) {\n setShowDropDown(false);\n }\n };\n document.addEventListener(\"click\", handle);\n return () => {\n document.removeEventListener(\"click\", handle);\n };\n }\n return;\n }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf]);\n\n const displayContainer = useMemo(() => {\n // To prevent blinking, we show the container only when the dropdown position is calculated.\n // Without this, window would be visible first on left (0px), and after a millisecond on the right side.\n return positionIsCalculated ? { display: \"block\" } : { display: \"none\" };\n }, [positionIsCalculated]);\n\n return (\n <>\n <button\n style={{ position: \"relative\" }}\n disabled={disabled}\n aria-label={buttonAriaLabel || buttonLabel}\n className={buttonClassName}\n onClick={() => setShowDropDown(!showDropDown)}\n ref={buttonRef}\n >\n {buttonIconClassName && <span className={buttonIconClassName} />}\n {buttonLabel && <span className=\"text dropdown-button-text\">{buttonLabel}</span>}\n <i className=\"chevron-down\" />\n </button>\n {showDropDown && (\n <div className={\"lexical-dropdown-container\"} style={displayContainer}>\n <DropDownItems\n showScroll={showScroll}\n dropDownRef={dropDownRef}\n onClose={handleClose}\n >\n {children}\n </DropDownItems>\n </div>\n )}\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- /// <reference types="react" />
9
8
  import type { LexicalEditor } from "lexical";
10
9
  export declare function ImageResizer({ onResizeStart, onResizeEnd, buttonRef, imageRef, maxWidth, editor, showCaption, setShowCaption, captionsEnabled }: {
11
10
  editor: LexicalEditor;
@@ -1,12 +1,3 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.ImageResizer = ImageResizer;
8
- var _react = _interopRequireWildcard(require("react"));
9
- var React = _react;
10
1
  /**
11
2
  * Copyright (c) Meta Platforms, Inc. and affiliates.
12
3
  *
@@ -15,31 +6,34 @@ var React = _react;
15
6
  *
16
7
  */
17
8
 
9
+ import * as React from "react";
10
+ import { useRef } from "react";
18
11
  function clamp(value, min, max) {
19
12
  return Math.min(Math.max(value, min), max);
20
13
  }
21
- var Direction = {
14
+ const Direction = {
22
15
  east: 1 << 0,
23
16
  north: 1 << 3,
24
17
  south: 1 << 1,
25
18
  west: 1 << 2
26
19
  };
27
- function ImageResizer(_ref) {
28
- var onResizeStart = _ref.onResizeStart,
29
- onResizeEnd = _ref.onResizeEnd,
30
- buttonRef = _ref.buttonRef,
31
- imageRef = _ref.imageRef,
32
- maxWidth = _ref.maxWidth,
33
- editor = _ref.editor,
34
- showCaption = _ref.showCaption,
35
- setShowCaption = _ref.setShowCaption,
36
- captionsEnabled = _ref.captionsEnabled;
37
- var controlWrapperRef = (0, _react.useRef)(null);
38
- var userSelect = (0, _react.useRef)({
20
+ export function ImageResizer({
21
+ onResizeStart,
22
+ onResizeEnd,
23
+ buttonRef,
24
+ imageRef,
25
+ maxWidth,
26
+ editor,
27
+ showCaption,
28
+ setShowCaption,
29
+ captionsEnabled
30
+ }) {
31
+ const controlWrapperRef = useRef(null);
32
+ const userSelect = useRef({
39
33
  priority: "",
40
34
  value: "default"
41
35
  });
42
- var positioningRef = (0, _react.useRef)({
36
+ const positioningRef = useRef({
43
37
  currentHeight: 0,
44
38
  currentWidth: 0,
45
39
  direction: 0,
@@ -50,28 +44,28 @@ function ImageResizer(_ref) {
50
44
  startX: 0,
51
45
  startY: 0
52
46
  });
53
- var editorRootElement = editor.getRootElement();
47
+ const editorRootElement = editor.getRootElement();
54
48
  // Find max width, accounting for editor padding.
55
- var maxWidthContainer = maxWidth ? maxWidth : editorRootElement !== null ? editorRootElement.getBoundingClientRect().width - 20 : 100;
56
- var maxHeightContainer = editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;
57
- var minWidth = 100;
58
- var minHeight = 100;
59
- var setStartCursor = function setStartCursor(direction) {
60
- var ew = direction === Direction.east || direction === Direction.west;
61
- var ns = direction === Direction.north || direction === Direction.south;
62
- var nwse = direction & Direction.north && direction & Direction.west || direction & Direction.south && direction & Direction.east;
63
- var cursorDir = ew ? "ew" : ns ? "ns" : nwse ? "nwse" : "nesw";
49
+ const maxWidthContainer = maxWidth ? maxWidth : editorRootElement !== null ? editorRootElement.getBoundingClientRect().width - 20 : 100;
50
+ const maxHeightContainer = editorRootElement !== null ? editorRootElement.getBoundingClientRect().height - 20 : 100;
51
+ const minWidth = 100;
52
+ const minHeight = 100;
53
+ const setStartCursor = direction => {
54
+ const ew = direction === Direction.east || direction === Direction.west;
55
+ const ns = direction === Direction.north || direction === Direction.south;
56
+ const nwse = direction & Direction.north && direction & Direction.west || direction & Direction.south && direction & Direction.east;
57
+ const cursorDir = ew ? "ew" : ns ? "ns" : nwse ? "nwse" : "nesw";
64
58
  if (editorRootElement !== null) {
65
- editorRootElement.style.setProperty("cursor", "".concat(cursorDir, "-resize"), "important");
59
+ editorRootElement.style.setProperty("cursor", `${cursorDir}-resize`, "important");
66
60
  }
67
61
  if (document.body !== null) {
68
- document.body.style.setProperty("cursor", "".concat(cursorDir, "-resize"), "important");
62
+ document.body.style.setProperty("cursor", `${cursorDir}-resize`, "important");
69
63
  userSelect.current.value = document.body.style.getPropertyValue("-webkit-user-select");
70
64
  userSelect.current.priority = document.body.style.getPropertyPriority("-webkit-user-select");
71
- document.body.style.setProperty("-webkit-user-select", "none", "important");
65
+ document.body.style.setProperty("-webkit-user-select", `none`, "important");
72
66
  }
73
67
  };
74
- var setEndCursor = function setEndCursor() {
68
+ const setEndCursor = () => {
75
69
  if (editorRootElement !== null) {
76
70
  editorRootElement.style.setProperty("cursor", "text");
77
71
  }
@@ -80,17 +74,18 @@ function ImageResizer(_ref) {
80
74
  document.body.style.setProperty("-webkit-user-select", userSelect.current.value, userSelect.current.priority);
81
75
  }
82
76
  };
83
- var handlePointerDown = function handlePointerDown(event, direction) {
77
+ const handlePointerDown = (event, direction) => {
84
78
  if (!editor.isEditable()) {
85
79
  return;
86
80
  }
87
- var image = imageRef.current;
88
- var controlWrapper = controlWrapperRef.current;
81
+ const image = imageRef.current;
82
+ const controlWrapper = controlWrapperRef.current;
89
83
  if (image !== null && controlWrapper !== null) {
90
- var _image$getBoundingCli = image.getBoundingClientRect(),
91
- width = _image$getBoundingCli.width,
92
- height = _image$getBoundingCli.height;
93
- var positioning = positioningRef.current;
84
+ const {
85
+ width,
86
+ height
87
+ } = image.getBoundingClientRect();
88
+ const positioning = positioningRef.current;
94
89
  positioning.startWidth = width;
95
90
  positioning.startHeight = height;
96
91
  positioning.ratio = width / height;
@@ -103,50 +98,50 @@ function ImageResizer(_ref) {
103
98
  setStartCursor(direction);
104
99
  onResizeStart();
105
100
  controlWrapper.classList.add("image-control-wrapper--resizing");
106
- image.style.height = "".concat(height, "px");
107
- image.style.width = "".concat(width, "px");
101
+ image.style.height = `${height}px`;
102
+ image.style.width = `${width}px`;
108
103
  document.addEventListener("pointermove", handlePointerMove);
109
- document.addEventListener("pointerup", _handlePointerUp);
104
+ document.addEventListener("pointerup", handlePointerUp);
110
105
  }
111
106
  };
112
- var handlePointerMove = function handlePointerMove(event) {
113
- var image = imageRef.current;
114
- var positioning = positioningRef.current;
115
- var isHorizontal = positioning.direction & (Direction.east | Direction.west);
116
- var isVertical = positioning.direction & (Direction.south | Direction.north);
107
+ const handlePointerMove = event => {
108
+ const image = imageRef.current;
109
+ const positioning = positioningRef.current;
110
+ const isHorizontal = positioning.direction & (Direction.east | Direction.west);
111
+ const isVertical = positioning.direction & (Direction.south | Direction.north);
117
112
  if (image !== null && positioning.isResizing) {
118
113
  // Corner cursor
119
114
  if (isHorizontal && isVertical) {
120
- var diff = Math.floor(positioning.startX - event.clientX);
115
+ let diff = Math.floor(positioning.startX - event.clientX);
121
116
  diff = positioning.direction & Direction.east ? -diff : diff;
122
- var width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
123
- var height = width / positioning.ratio;
124
- image.style.width = "".concat(width, "px");
125
- image.style.height = "".concat(height, "px");
117
+ const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
118
+ const height = width / positioning.ratio;
119
+ image.style.width = `${width}px`;
120
+ image.style.height = `${height}px`;
126
121
  positioning.currentHeight = height;
127
122
  positioning.currentWidth = width;
128
123
  } else if (isVertical) {
129
- var _diff = Math.floor(positioning.startY - event.clientY);
130
- _diff = positioning.direction & Direction.south ? -_diff : _diff;
131
- var _height = clamp(positioning.startHeight + _diff, minHeight, maxHeightContainer);
132
- image.style.height = "".concat(_height, "px");
133
- positioning.currentHeight = _height;
124
+ let diff = Math.floor(positioning.startY - event.clientY);
125
+ diff = positioning.direction & Direction.south ? -diff : diff;
126
+ const height = clamp(positioning.startHeight + diff, minHeight, maxHeightContainer);
127
+ image.style.height = `${height}px`;
128
+ positioning.currentHeight = height;
134
129
  } else {
135
- var _diff2 = Math.floor(positioning.startX - event.clientX);
136
- _diff2 = positioning.direction & Direction.east ? -_diff2 : _diff2;
137
- var _width = clamp(positioning.startWidth + _diff2, minWidth, maxWidthContainer);
138
- image.style.width = "".concat(_width, "px");
139
- positioning.currentWidth = _width;
130
+ let diff = Math.floor(positioning.startX - event.clientX);
131
+ diff = positioning.direction & Direction.east ? -diff : diff;
132
+ const width = clamp(positioning.startWidth + diff, minWidth, maxWidthContainer);
133
+ image.style.width = `${width}px`;
134
+ positioning.currentWidth = width;
140
135
  }
141
136
  }
142
137
  };
143
- var _handlePointerUp = function handlePointerUp() {
144
- var image = imageRef.current;
145
- var positioning = positioningRef.current;
146
- var controlWrapper = controlWrapperRef.current;
138
+ const handlePointerUp = () => {
139
+ const image = imageRef.current;
140
+ const positioning = positioningRef.current;
141
+ const controlWrapper = controlWrapperRef.current;
147
142
  if (image !== null && controlWrapper !== null && positioning.isResizing) {
148
- var width = positioning.currentWidth;
149
- var height = positioning.currentHeight;
143
+ const width = positioning.currentWidth;
144
+ const height = positioning.currentHeight;
150
145
  positioning.startWidth = 0;
151
146
  positioning.startHeight = 0;
152
147
  positioning.ratio = 0;
@@ -159,7 +154,7 @@ function ImageResizer(_ref) {
159
154
  setEndCursor();
160
155
  onResizeEnd(width, height);
161
156
  document.removeEventListener("pointermove", handlePointerMove);
162
- document.removeEventListener("pointerup", _handlePointerUp);
157
+ document.removeEventListener("pointerup", handlePointerUp);
163
158
  }
164
159
  };
165
160
  return /*#__PURE__*/React.createElement("div", {
@@ -167,47 +162,47 @@ function ImageResizer(_ref) {
167
162
  }, !showCaption && captionsEnabled && /*#__PURE__*/React.createElement("button", {
168
163
  className: "image-caption-button",
169
164
  ref: buttonRef,
170
- onClick: function onClick() {
165
+ onClick: () => {
171
166
  setShowCaption(!showCaption);
172
167
  }
173
168
  }, "Add Caption"), /*#__PURE__*/React.createElement("div", {
174
169
  className: "image-resizer image-resizer-n",
175
- onPointerDown: function onPointerDown(event) {
170
+ onPointerDown: event => {
176
171
  handlePointerDown(event, Direction.north);
177
172
  }
178
173
  }), /*#__PURE__*/React.createElement("div", {
179
174
  className: "image-resizer image-resizer-ne",
180
- onPointerDown: function onPointerDown(event) {
175
+ onPointerDown: event => {
181
176
  handlePointerDown(event, Direction.north | Direction.east);
182
177
  }
183
178
  }), /*#__PURE__*/React.createElement("div", {
184
179
  className: "image-resizer image-resizer-e",
185
- onPointerDown: function onPointerDown(event) {
180
+ onPointerDown: event => {
186
181
  handlePointerDown(event, Direction.east);
187
182
  }
188
183
  }), /*#__PURE__*/React.createElement("div", {
189
184
  className: "image-resizer image-resizer-se",
190
- onPointerDown: function onPointerDown(event) {
185
+ onPointerDown: event => {
191
186
  handlePointerDown(event, Direction.south | Direction.east);
192
187
  }
193
188
  }), /*#__PURE__*/React.createElement("div", {
194
189
  className: "image-resizer image-resizer-s",
195
- onPointerDown: function onPointerDown(event) {
190
+ onPointerDown: event => {
196
191
  handlePointerDown(event, Direction.south);
197
192
  }
198
193
  }), /*#__PURE__*/React.createElement("div", {
199
194
  className: "image-resizer image-resizer-sw",
200
- onPointerDown: function onPointerDown(event) {
195
+ onPointerDown: event => {
201
196
  handlePointerDown(event, Direction.south | Direction.west);
202
197
  }
203
198
  }), /*#__PURE__*/React.createElement("div", {
204
199
  className: "image-resizer image-resizer-w",
205
- onPointerDown: function onPointerDown(event) {
200
+ onPointerDown: event => {
206
201
  handlePointerDown(event, Direction.west);
207
202
  }
208
203
  }), /*#__PURE__*/React.createElement("div", {
209
204
  className: "image-resizer image-resizer-nw",
210
- onPointerDown: function onPointerDown(event) {
205
+ onPointerDown: event => {
211
206
  handlePointerDown(event, Direction.north | Direction.west);
212
207
  }
213
208
  }));