@webiny/lexical-editor 5.43.2-beta.0 → 6.0.0-alpha.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 (196) hide show
  1. package/commands/image.js +2 -8
  2. package/commands/image.js.map +1 -1
  3. package/commands/index.js +4 -49
  4. package/commands/index.js.map +1 -1
  5. package/commands/list.js +4 -10
  6. package/commands/list.js.map +1 -1
  7. package/commands/quote.js +2 -8
  8. package/commands/quote.js.map +1 -1
  9. package/commands/toolbar.js +2 -8
  10. package/commands/toolbar.js.map +1 -1
  11. package/components/Editor/EnsureHeadingTagPlugin.js +10 -16
  12. package/components/Editor/EnsureHeadingTagPlugin.js.map +1 -1
  13. package/components/Editor/HeadingEditor.js +13 -21
  14. package/components/Editor/HeadingEditor.js.map +1 -1
  15. package/components/Editor/ParagraphEditor.js +12 -19
  16. package/components/Editor/ParagraphEditor.js.map +1 -1
  17. package/components/Editor/RichTextEditor.js +92 -105
  18. package/components/Editor/RichTextEditor.js.map +1 -1
  19. package/components/Editor/normalizeInputValue.js +2 -8
  20. package/components/Editor/normalizeInputValue.js.map +1 -1
  21. package/components/LexicalEditorConfig/LexicalEditorConfig.js +39 -49
  22. package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -1
  23. package/components/LexicalEditorConfig/components/Node.js +17 -26
  24. package/components/LexicalEditorConfig/components/Node.js.map +1 -1
  25. package/components/LexicalEditorConfig/components/Plugin.js +17 -26
  26. package/components/LexicalEditorConfig/components/Plugin.js.map +1 -1
  27. package/components/LexicalEditorConfig/components/ToolbarElement.js +17 -26
  28. package/components/LexicalEditorConfig/components/ToolbarElement.js.map +1 -1
  29. package/components/LexicalHtmlRenderer.js +37 -46
  30. package/components/LexicalHtmlRenderer.js.map +1 -1
  31. package/components/Toolbar/StaticToolbar.d.ts +3 -1
  32. package/components/Toolbar/StaticToolbar.js +19 -23
  33. package/components/Toolbar/StaticToolbar.js.map +1 -1
  34. package/components/Toolbar/Toolbar.js +66 -75
  35. package/components/Toolbar/Toolbar.js.map +1 -1
  36. package/components/ToolbarActions/BoldAction.js +16 -21
  37. package/components/ToolbarActions/BoldAction.js.map +1 -1
  38. package/components/ToolbarActions/BulletListAction.js +26 -31
  39. package/components/ToolbarActions/BulletListAction.js.map +1 -1
  40. package/components/ToolbarActions/CodeHighlightAction.js +16 -21
  41. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -1
  42. package/components/ToolbarActions/FontColorAction.js +32 -42
  43. package/components/ToolbarActions/FontColorAction.js.map +1 -1
  44. package/components/ToolbarActions/FontSizeAction.js +53 -71
  45. package/components/ToolbarActions/FontSizeAction.js.map +1 -1
  46. package/components/ToolbarActions/ImageAction.js +19 -34
  47. package/components/ToolbarActions/ImageAction.js.map +1 -1
  48. package/components/ToolbarActions/ItalicAction.js +16 -21
  49. package/components/ToolbarActions/ItalicAction.js.map +1 -1
  50. package/components/ToolbarActions/LinkAction.js +19 -24
  51. package/components/ToolbarActions/LinkAction.js.map +1 -1
  52. package/components/ToolbarActions/NumberedListAction.js +26 -33
  53. package/components/ToolbarActions/NumberedListAction.js.map +1 -1
  54. package/components/ToolbarActions/QuoteAction.js +20 -25
  55. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  56. package/components/ToolbarActions/TextAlignmentAction.js +36 -45
  57. package/components/ToolbarActions/TextAlignmentAction.js.map +1 -1
  58. package/components/ToolbarActions/TypographyAction.js +43 -55
  59. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  60. package/components/ToolbarActions/UnderlineAction.js +16 -21
  61. package/components/ToolbarActions/UnderlineAction.js.map +1 -1
  62. package/context/FontColorActionContext.js +2 -9
  63. package/context/FontColorActionContext.js.map +1 -1
  64. package/context/RichTextEditorContext.js +15 -26
  65. package/context/RichTextEditorContext.js.map +1 -1
  66. package/context/SharedHistoryContext.js +12 -20
  67. package/context/SharedHistoryContext.js.map +1 -1
  68. package/context/TextAlignmentActionContextProps.js +2 -9
  69. package/context/TextAlignmentActionContextProps.js.map +1 -1
  70. package/context/TypographyActionContext.js +2 -9
  71. package/context/TypographyActionContext.js.map +1 -1
  72. package/hooks/index.js +8 -93
  73. package/hooks/index.js.map +1 -1
  74. package/hooks/useCurrentElement.d.ts +2 -2
  75. package/hooks/useCurrentElement.js +12 -18
  76. package/hooks/useCurrentElement.js.map +1 -1
  77. package/hooks/useCurrentSelection.js +27 -40
  78. package/hooks/useCurrentSelection.js.map +1 -1
  79. package/hooks/useFontColorPicker.js +5 -11
  80. package/hooks/useFontColorPicker.js.map +1 -1
  81. package/hooks/useIsMounted.js +6 -14
  82. package/hooks/useIsMounted.js.map +1 -1
  83. package/hooks/useList.js +31 -35
  84. package/hooks/useList.js.map +1 -1
  85. package/hooks/useQuote.js +12 -17
  86. package/hooks/useQuote.js.map +1 -1
  87. package/hooks/useRichTextEditor.js +5 -11
  88. package/hooks/useRichTextEditor.js.map +1 -1
  89. package/hooks/useTextAlignmentAction.js +5 -11
  90. package/hooks/useTextAlignmentAction.js.map +1 -1
  91. package/hooks/useTypographyAction.js +5 -11
  92. package/hooks/useTypographyAction.js.map +1 -1
  93. package/index.js +49 -322
  94. package/index.js.map +1 -1
  95. package/package.json +8 -7
  96. package/plugins/BlurEventPlugin/BlurEventPlugin.js +16 -22
  97. package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -1
  98. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js +9 -14
  99. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -1
  100. package/plugins/CodeHighlightPlugin/index.js +1 -16
  101. package/plugins/CodeHighlightPlugin/index.js.map +1 -1
  102. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.d.ts +16 -0
  103. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.js +158 -0
  104. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.js.map +1 -0
  105. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorController.d.ts +8 -0
  106. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorController.js +62 -0
  107. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorController.js.map +1 -0
  108. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +2 -1
  109. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.d.ts +5 -16
  110. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +11 -180
  111. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -1
  112. package/plugins/FloatingLinkEditorPlugin/LinkEditForm.d.ts +2 -3
  113. package/plugins/FloatingLinkEditorPlugin/LinkEditForm.js +54 -68
  114. package/plugins/FloatingLinkEditorPlugin/LinkEditForm.js.map +1 -1
  115. package/plugins/FloatingLinkEditorPlugin/LinkPreviewForm.d.ts +1 -1
  116. package/plugins/FloatingLinkEditorPlugin/LinkPreviewForm.js +16 -26
  117. package/plugins/FloatingLinkEditorPlugin/LinkPreviewForm.js.map +1 -1
  118. package/plugins/FloatingLinkEditorPlugin/index.js +1 -16
  119. package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -1
  120. package/plugins/FloatingLinkEditorPlugin/isChildOfLinkEditor.js +3 -9
  121. package/plugins/FloatingLinkEditorPlugin/isChildOfLinkEditor.js.map +1 -1
  122. package/plugins/FontColorPlugin/FontColorPlugin.js +19 -22
  123. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  124. package/plugins/FontColorPlugin/applyColorToNode.js +4 -10
  125. package/plugins/FontColorPlugin/applyColorToNode.js.map +1 -1
  126. package/plugins/FontColorPlugin/applyColorToSelection.js +28 -44
  127. package/plugins/FontColorPlugin/applyColorToSelection.js.map +1 -1
  128. package/plugins/ImagesPlugin/ImagesPlugin.js +59 -58
  129. package/plugins/ImagesPlugin/ImagesPlugin.js.map +1 -1
  130. package/plugins/LexicalUpdateStatePlugin/UpdateStatePlugin.js +23 -23
  131. package/plugins/LexicalUpdateStatePlugin/UpdateStatePlugin.js.map +1 -1
  132. package/plugins/LexicalUpdateStatePlugin/index.js +1 -16
  133. package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -1
  134. package/plugins/LinkPlugin/LinkPlugin.js +30 -37
  135. package/plugins/LinkPlugin/LinkPlugin.js.map +1 -1
  136. package/plugins/ListPLugin/ListPlugin.js +10 -15
  137. package/plugins/ListPLugin/ListPlugin.js.map +1 -1
  138. package/plugins/QuoteNodePlugin/QuoteNodePlugin.js +11 -16
  139. package/plugins/QuoteNodePlugin/QuoteNodePlugin.js.map +1 -1
  140. package/plugins/TypographyPlugin/TypographyPlugin.js +16 -21
  141. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  142. package/types.d.ts +3 -3
  143. package/types.js +6 -38
  144. package/types.js.map +1 -1
  145. package/ui/ContentEditable.js +7 -14
  146. package/ui/ContentEditable.js.map +1 -1
  147. package/ui/Divider.js +3 -10
  148. package/ui/Divider.js.map +1 -1
  149. package/ui/DropDown.js +61 -88
  150. package/ui/DropDown.js.map +1 -1
  151. package/ui/ImageResizer.js +78 -83
  152. package/ui/ImageResizer.js.map +1 -1
  153. package/ui/LinkPreview.js +22 -29
  154. package/ui/LinkPreview.js.map +1 -1
  155. package/ui/Placeholder.js +10 -16
  156. package/ui/Placeholder.js.map +1 -1
  157. package/ui/TextInput.js +11 -18
  158. package/ui/TextInput.js.map +1 -1
  159. package/ui/ToolbarActionDialog.js +30 -42
  160. package/ui/ToolbarActionDialog.js.map +1 -1
  161. package/utils/canUseDOM.js +1 -7
  162. package/utils/canUseDOM.js.map +1 -1
  163. package/utils/files.js +9 -26
  164. package/utils/files.js.map +1 -1
  165. package/utils/generateInitialLexicalValue.js +2 -8
  166. package/utils/generateInitialLexicalValue.js.map +1 -1
  167. package/utils/getDOMRangeRect.js +4 -10
  168. package/utils/getDOMRangeRect.js.map +1 -1
  169. package/utils/getSelectedNode.js +9 -16
  170. package/utils/getSelectedNode.js.map +1 -1
  171. package/utils/getTransparentImage.js +1 -7
  172. package/utils/getTransparentImage.js.map +1 -1
  173. package/utils/insertImage.js +8 -14
  174. package/utils/insertImage.js.map +1 -1
  175. package/utils/isAnchorLink.js +1 -7
  176. package/utils/isAnchorLink.js.map +1 -1
  177. package/utils/isChildOfFloatingToolbar.js +3 -9
  178. package/utils/isChildOfFloatingToolbar.js.map +1 -1
  179. package/utils/isHTMLElement.js +1 -7
  180. package/utils/isHTMLElement.js.map +1 -1
  181. package/utils/isValidJSON.js +3 -9
  182. package/utils/isValidJSON.js.map +1 -1
  183. package/utils/isValidLexicalData.d.ts +1 -1
  184. package/utils/isValidLexicalData.js +6 -12
  185. package/utils/isValidLexicalData.js.map +1 -1
  186. package/utils/point.js +35 -60
  187. package/utils/point.js.map +1 -1
  188. package/utils/rect.js +114 -149
  189. package/utils/rect.js.map +1 -1
  190. package/utils/sanitizeUrl.js +6 -13
  191. package/utils/sanitizeUrl.js.map +1 -1
  192. package/utils/setFloatingElemPosition.js +11 -19
  193. package/utils/setFloatingElemPosition.js.map +1 -1
  194. package/plugins/FloatingLinkEditorPlugin/useFloatingLinkEditor.d.ts +0 -2
  195. package/plugins/FloatingLinkEditorPlugin/useFloatingLinkEditor.js +0 -96
  196. package/plugins/FloatingLinkEditorPlugin/useFloatingLinkEditor.js.map +0 -1
package/utils/rect.js CHANGED
@@ -1,14 +1,3 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.Rect = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _point = require("./point");
12
1
  /**
13
2
  * Copyright (c) Meta Platforms, Inc. and affiliates.
14
3
  *
@@ -16,149 +5,125 @@ var _point = require("./point");
16
5
  * LICENSE file in the root directory of this source tree.
17
6
  *
18
7
  */
19
- var Rect = exports.Rect = /*#__PURE__*/function () {
20
- function Rect(left, top, right, bottom) {
21
- (0, _classCallCheck2.default)(this, Rect);
22
- var _ref = top <= bottom ? [top, bottom] : [bottom, top],
23
- _ref2 = (0, _slicedToArray2.default)(_ref, 2),
24
- physicTop = _ref2[0],
25
- physicBottom = _ref2[1];
26
- var _ref3 = left <= right ? [left, right] : [right, left],
27
- _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
28
- physicLeft = _ref4[0],
29
- physicRight = _ref4[1];
8
+ import { isPoint } from "./point";
9
+ export class Rect {
10
+ constructor(left, top, right, bottom) {
11
+ const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top];
12
+ const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left];
30
13
  this._top = physicTop;
31
14
  this._right = physicRight;
32
15
  this._left = physicLeft;
33
16
  this._bottom = physicBottom;
34
17
  }
35
- return (0, _createClass2.default)(Rect, [{
36
- key: "top",
37
- get: function get() {
38
- return this._top;
39
- }
40
- }, {
41
- key: "right",
42
- get: function get() {
43
- return this._right;
44
- }
45
- }, {
46
- key: "bottom",
47
- get: function get() {
48
- return this._bottom;
49
- }
50
- }, {
51
- key: "left",
52
- get: function get() {
53
- return this._left;
54
- }
55
- }, {
56
- key: "width",
57
- get: function get() {
58
- return Math.abs(this._left - this._right);
59
- }
60
- }, {
61
- key: "height",
62
- get: function get() {
63
- return Math.abs(this._bottom - this._top);
64
- }
65
- }, {
66
- key: "equals",
67
- value: function equals(_ref5) {
68
- var top = _ref5.top,
69
- left = _ref5.left,
70
- bottom = _ref5.bottom,
71
- right = _ref5.right;
72
- return top === this._top && bottom === this._bottom && left === this._left && right === this._right;
73
- }
74
- }, {
75
- key: "contains",
76
- value: function contains(target) {
77
- if ((0, _point.isPoint)(target)) {
78
- var x = target.x,
79
- y = target.y;
80
- var isOnTopSide = y < this._top;
81
- var isOnBottomSide = y > this._bottom;
82
- var isOnLeftSide = x < this._left;
83
- var isOnRightSide = x > this._right;
84
- var result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide;
85
- return {
86
- reason: {
87
- isOnBottomSide: isOnBottomSide,
88
- isOnLeftSide: isOnLeftSide,
89
- isOnRightSide: isOnRightSide,
90
- isOnTopSide: isOnTopSide
91
- },
92
- result: result
93
- };
94
- } else {
95
- var top = target.top,
96
- left = target.left,
97
- bottom = target.bottom,
98
- right = target.right;
99
- return top >= this._top && top <= this._bottom && bottom >= this._top && bottom <= this._bottom && left >= this._left && left <= this._right && right >= this._left && right <= this._right;
100
- }
101
- }
102
- }, {
103
- key: "intersectsWith",
104
- value: function intersectsWith(rect) {
105
- var x1 = rect.left,
106
- y1 = rect.top,
107
- w1 = rect.width,
108
- h1 = rect.height;
109
- var x2 = this.left,
110
- y2 = this.top,
111
- w2 = this.width,
112
- h2 = this.height;
113
- var maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;
114
- var maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;
115
- var minX = x1 <= x2 ? x1 : x2;
116
- var minY = y1 <= y2 ? y1 : y2;
117
- return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2;
118
- }
119
- }, {
120
- key: "generateNewRect",
121
- value: function generateNewRect(_ref6) {
122
- var _ref6$left = _ref6.left,
123
- left = _ref6$left === void 0 ? this.left : _ref6$left,
124
- _ref6$top = _ref6.top,
125
- top = _ref6$top === void 0 ? this.top : _ref6$top,
126
- _ref6$right = _ref6.right,
127
- right = _ref6$right === void 0 ? this.right : _ref6$right,
128
- _ref6$bottom = _ref6.bottom,
129
- bottom = _ref6$bottom === void 0 ? this.bottom : _ref6$bottom;
130
- return new Rect(left, top, right, bottom);
131
- }
132
- }], [{
133
- key: "fromLTRB",
134
- value: function fromLTRB(left, top, right, bottom) {
135
- return new Rect(left, top, right, bottom);
136
- }
137
- }, {
138
- key: "fromLWTH",
139
- value: function fromLWTH(left, width, top, height) {
140
- return new Rect(left, top, left + width, top + height);
141
- }
142
- }, {
143
- key: "fromPoints",
144
- value: function fromPoints(startPoint, endPoint) {
145
- var top = startPoint.y,
146
- left = startPoint.x;
147
- var bottom = endPoint.y,
148
- right = endPoint.x;
149
- return Rect.fromLTRB(left, top, right, bottom);
150
- }
151
- }, {
152
- key: "fromDOM",
153
- value: function fromDOM(dom) {
154
- var _dom$getBoundingClien = dom.getBoundingClientRect(),
155
- top = _dom$getBoundingClien.top,
156
- width = _dom$getBoundingClien.width,
157
- left = _dom$getBoundingClien.left,
158
- height = _dom$getBoundingClien.height;
159
- return Rect.fromLWTH(left, width, top, height);
18
+ get top() {
19
+ return this._top;
20
+ }
21
+ get right() {
22
+ return this._right;
23
+ }
24
+ get bottom() {
25
+ return this._bottom;
26
+ }
27
+ get left() {
28
+ return this._left;
29
+ }
30
+ get width() {
31
+ return Math.abs(this._left - this._right);
32
+ }
33
+ get height() {
34
+ return Math.abs(this._bottom - this._top);
35
+ }
36
+ equals({
37
+ top,
38
+ left,
39
+ bottom,
40
+ right
41
+ }) {
42
+ return top === this._top && bottom === this._bottom && left === this._left && right === this._right;
43
+ }
44
+ contains(target) {
45
+ if (isPoint(target)) {
46
+ const {
47
+ x,
48
+ y
49
+ } = target;
50
+ const isOnTopSide = y < this._top;
51
+ const isOnBottomSide = y > this._bottom;
52
+ const isOnLeftSide = x < this._left;
53
+ const isOnRightSide = x > this._right;
54
+ const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide;
55
+ return {
56
+ reason: {
57
+ isOnBottomSide,
58
+ isOnLeftSide,
59
+ isOnRightSide,
60
+ isOnTopSide
61
+ },
62
+ result
63
+ };
64
+ } else {
65
+ const {
66
+ top,
67
+ left,
68
+ bottom,
69
+ right
70
+ } = target;
71
+ return top >= this._top && top <= this._bottom && bottom >= this._top && bottom <= this._bottom && left >= this._left && left <= this._right && right >= this._left && right <= this._right;
160
72
  }
161
- }]);
162
- }();
73
+ }
74
+ intersectsWith(rect) {
75
+ const {
76
+ left: x1,
77
+ top: y1,
78
+ width: w1,
79
+ height: h1
80
+ } = rect;
81
+ const {
82
+ left: x2,
83
+ top: y2,
84
+ width: w2,
85
+ height: h2
86
+ } = this;
87
+ const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;
88
+ const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;
89
+ const minX = x1 <= x2 ? x1 : x2;
90
+ const minY = y1 <= y2 ? y1 : y2;
91
+ return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2;
92
+ }
93
+ generateNewRect({
94
+ left = this.left,
95
+ top = this.top,
96
+ right = this.right,
97
+ bottom = this.bottom
98
+ }) {
99
+ return new Rect(left, top, right, bottom);
100
+ }
101
+ static fromLTRB(left, top, right, bottom) {
102
+ return new Rect(left, top, right, bottom);
103
+ }
104
+ static fromLWTH(left, width, top, height) {
105
+ return new Rect(left, top, left + width, top + height);
106
+ }
107
+ static fromPoints(startPoint, endPoint) {
108
+ const {
109
+ y: top,
110
+ x: left
111
+ } = startPoint;
112
+ const {
113
+ y: bottom,
114
+ x: right
115
+ } = endPoint;
116
+ return Rect.fromLTRB(left, top, right, bottom);
117
+ }
118
+ static fromDOM(dom) {
119
+ const {
120
+ top,
121
+ width,
122
+ left,
123
+ height
124
+ } = dom.getBoundingClientRect();
125
+ return Rect.fromLWTH(left, width, top, height);
126
+ }
127
+ }
163
128
 
164
129
  //# sourceMappingURL=rect.js.map
package/utils/rect.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_point","require","Rect","exports","left","top","right","bottom","_classCallCheck2","default","_ref","_ref2","_slicedToArray2","physicTop","physicBottom","_ref3","_ref4","physicLeft","physicRight","_top","_right","_left","_bottom","_createClass2","key","get","Math","abs","value","equals","_ref5","contains","target","isPoint","x","y","isOnTopSide","isOnBottomSide","isOnLeftSide","isOnRightSide","result","reason","intersectsWith","rect","x1","y1","w1","width","h1","height","x2","y2","w2","h2","maxX","maxY","minX","minY","generateNewRect","_ref6","_ref6$left","_ref6$top","_ref6$right","_ref6$bottom","fromLTRB","fromLWTH","fromPoints","startPoint","endPoint","fromDOM","dom","_dom$getBoundingClien","getBoundingClientRect"],"sources":["rect.ts"],"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 */\nimport { isPoint, Point } from \"./point\";\n\ntype ContainsPointReturn = {\n result: boolean;\n reason: {\n isOnTopSide: boolean;\n isOnBottomSide: boolean;\n isOnLeftSide: boolean;\n isOnRightSide: boolean;\n };\n};\n\nexport class Rect {\n private readonly _left: number;\n private readonly _top: number;\n private readonly _right: number;\n private readonly _bottom: number;\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top];\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left];\n\n this._top = physicTop;\n this._right = physicRight;\n this._left = physicLeft;\n this._bottom = physicBottom;\n }\n\n get top(): number {\n return this._top;\n }\n\n get right(): number {\n return this._right;\n }\n\n get bottom(): number {\n return this._bottom;\n }\n\n get left(): number {\n return this._left;\n }\n\n get width(): number {\n return Math.abs(this._left - this._right);\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top);\n }\n\n public equals({ top, left, bottom, right }: Rect): boolean {\n return (\n top === this._top &&\n bottom === this._bottom &&\n left === this._left &&\n right === this._right\n );\n }\n\n public contains({ x, y }: Point): ContainsPointReturn;\n public contains({ top, left, bottom, right }: Rect): boolean;\n public contains(target: Point | Rect): boolean | ContainsPointReturn {\n if (isPoint(target)) {\n const { x, y } = target;\n\n const isOnTopSide = y < this._top;\n const isOnBottomSide = y > this._bottom;\n const isOnLeftSide = x < this._left;\n const isOnRightSide = x > this._right;\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide;\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide\n },\n result\n };\n } else {\n const { top, left, bottom, right } = target;\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n );\n }\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { left: x1, top: y1, width: w1, height: h1 } = rect;\n const { left: x2, top: y2, width: w2, height: h2 } = this;\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;\n const minX = x1 <= x2 ? x1 : x2;\n const minY = y1 <= y2 ? y1 : y2;\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2;\n }\n\n public generateNewRect({\n left = this.left,\n top = this.top,\n right = this.right,\n bottom = this.bottom\n }): Rect {\n return new Rect(left, top, right, bottom);\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom);\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height);\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { y: top, x: left } = startPoint;\n const { y: bottom, x: right } = endPoint;\n return Rect.fromLTRB(left, top, right, bottom);\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { top, width, left, height } = dom.getBoundingClientRect();\n return Rect.fromLWTH(left, width, top, height);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isPoint","Rect","constructor","left","top","right","bottom","physicTop","physicBottom","physicLeft","physicRight","_top","_right","_left","_bottom","width","Math","abs","height","equals","contains","target","x","y","isOnTopSide","isOnBottomSide","isOnLeftSide","isOnRightSide","result","reason","intersectsWith","rect","x1","y1","w1","h1","x2","y2","w2","h2","maxX","maxY","minX","minY","generateNewRect","fromLTRB","fromLWTH","fromPoints","startPoint","endPoint","fromDOM","dom","getBoundingClientRect"],"sources":["rect.ts"],"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 */\nimport { isPoint, Point } from \"./point\";\n\ntype ContainsPointReturn = {\n result: boolean;\n reason: {\n isOnTopSide: boolean;\n isOnBottomSide: boolean;\n isOnLeftSide: boolean;\n isOnRightSide: boolean;\n };\n};\n\nexport class Rect {\n private readonly _left: number;\n private readonly _top: number;\n private readonly _right: number;\n private readonly _bottom: number;\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top];\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left];\n\n this._top = physicTop;\n this._right = physicRight;\n this._left = physicLeft;\n this._bottom = physicBottom;\n }\n\n get top(): number {\n return this._top;\n }\n\n get right(): number {\n return this._right;\n }\n\n get bottom(): number {\n return this._bottom;\n }\n\n get left(): number {\n return this._left;\n }\n\n get width(): number {\n return Math.abs(this._left - this._right);\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top);\n }\n\n public equals({ top, left, bottom, right }: Rect): boolean {\n return (\n top === this._top &&\n bottom === this._bottom &&\n left === this._left &&\n right === this._right\n );\n }\n\n public contains({ x, y }: Point): ContainsPointReturn;\n public contains({ top, left, bottom, right }: Rect): boolean;\n public contains(target: Point | Rect): boolean | ContainsPointReturn {\n if (isPoint(target)) {\n const { x, y } = target;\n\n const isOnTopSide = y < this._top;\n const isOnBottomSide = y > this._bottom;\n const isOnLeftSide = x < this._left;\n const isOnRightSide = x > this._right;\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide;\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide\n },\n result\n };\n } else {\n const { top, left, bottom, right } = target;\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n );\n }\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { left: x1, top: y1, width: w1, height: h1 } = rect;\n const { left: x2, top: y2, width: w2, height: h2 } = this;\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;\n const minX = x1 <= x2 ? x1 : x2;\n const minY = y1 <= y2 ? y1 : y2;\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2;\n }\n\n public generateNewRect({\n left = this.left,\n top = this.top,\n right = this.right,\n bottom = this.bottom\n }): Rect {\n return new Rect(left, top, right, bottom);\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom);\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height);\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { y: top, x: left } = startPoint;\n const { y: bottom, x: right } = endPoint;\n return Rect.fromLTRB(left, top, right, bottom);\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { top, width, left, height } = dom.getBoundingClientRect();\n return Rect.fromLWTH(left, width, top, height);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.sanitizeUrl = void 0;
7
- var _isAnchorLink = require("./isAnchorLink");
8
1
  /**
9
2
  * Copyright (c) Meta Platforms, Inc. and affiliates.
10
3
  *
@@ -12,21 +5,21 @@ var _isAnchorLink = require("./isAnchorLink");
12
5
  * LICENSE file in the root directory of this source tree.
13
6
  *
14
7
  */
15
-
16
- var sanitizeUrl = exports.sanitizeUrl = function sanitizeUrl(url) {
8
+ import { isAnchorLink } from "./isAnchorLink";
9
+ export const sanitizeUrl = url => {
17
10
  /** A pattern that matches safe URLs. */
18
- var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;
11
+ const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;
19
12
 
20
13
  /** A pattern that matches safe data URLs. */
21
- var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
14
+ const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
22
15
  url = String(url).trim();
23
- if ((0, _isAnchorLink.isAnchorLink)(url)) {
16
+ if (isAnchorLink(url)) {
24
17
  return url;
25
18
  }
26
19
  if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN)) {
27
20
  return url;
28
21
  }
29
- return "https://";
22
+ return `https://`;
30
23
  };
31
24
 
32
25
  //# sourceMappingURL=sanitizeUrl.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_isAnchorLink","require","sanitizeUrl","exports","url","SAFE_URL_PATTERN","DATA_URL_PATTERN","String","trim","isAnchorLink","match"],"sources":["sanitizeUrl.ts"],"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 */\nimport { isAnchorLink } from \"~/utils/isAnchorLink\";\n\nexport const sanitizeUrl = (url: string): string => {\n /** A pattern that matches safe URLs. */\n const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;\n\n /** A pattern that matches safe data URLs. */\n const DATA_URL_PATTERN =\n /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n url = String(url).trim();\n\n if (isAnchorLink(url)) {\n return url;\n }\n\n if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN)) {\n return url;\n }\n\n return `https://`;\n};\n"],"mappings":";;;;;;AAOA,IAAAA,aAAA,GAAAC,OAAA;AAPA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,IAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,SAAdA,WAAWA,CAAIE,GAAW,EAAa;EAChD;EACA,IAAMC,gBAAgB,GAAG,iEAAiE;;EAE1F;EACA,IAAMC,gBAAgB,GAClB,qIAAqI;EAEzIF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACI,IAAI,CAAC,CAAC;EAExB,IAAI,IAAAC,0BAAY,EAACL,GAAG,CAAC,EAAE;IACnB,OAAOA,GAAG;EACd;EAEA,IAAIA,GAAG,CAACM,KAAK,CAACL,gBAAgB,CAAC,IAAID,GAAG,CAACM,KAAK,CAACJ,gBAAgB,CAAC,EAAE;IAC5D,OAAOF,GAAG;EACd;EAEA;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["isAnchorLink","sanitizeUrl","url","SAFE_URL_PATTERN","DATA_URL_PATTERN","String","trim","match"],"sources":["sanitizeUrl.ts"],"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 */\nimport { isAnchorLink } from \"~/utils/isAnchorLink\";\n\nexport const sanitizeUrl = (url: string): string => {\n /** A pattern that matches safe URLs. */\n const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;\n\n /** A pattern that matches safe data URLs. */\n const DATA_URL_PATTERN =\n /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n url = String(url).trim();\n\n if (isAnchorLink(url)) {\n return url;\n }\n\n if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN)) {\n return url;\n }\n\n return `https://`;\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY;AAErB,OAAO,MAAMC,WAAW,GAAIC,GAAW,IAAa;EAChD;EACA,MAAMC,gBAAgB,GAAG,iEAAiE;;EAE1F;EACA,MAAMC,gBAAgB,GAClB,qIAAqI;EAEzIF,GAAG,GAAGG,MAAM,CAACH,GAAG,CAAC,CAACI,IAAI,CAAC,CAAC;EAExB,IAAIN,YAAY,CAACE,GAAG,CAAC,EAAE;IACnB,OAAOA,GAAG;EACd;EAEA,IAAIA,GAAG,CAACK,KAAK,CAACJ,gBAAgB,CAAC,IAAID,GAAG,CAACK,KAAK,CAACH,gBAAgB,CAAC,EAAE;IAC5D,OAAOF,GAAG;EACd;EAEA,OAAO,UAAU;AACrB,CAAC","ignoreList":[]}
@@ -1,27 +1,19 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.setFloatingElemPosition = setFloatingElemPosition;
7
- var VERTICAL_GAP = 10;
8
- var HORIZONTAL_OFFSET = 5;
9
- function setFloatingElemPosition(basePosition, elementToPosition, anchorElem) {
10
- var verticalGap = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : VERTICAL_GAP;
11
- var horizontalOffset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : HORIZONTAL_OFFSET;
1
+ const VERTICAL_GAP = 10;
2
+ const HORIZONTAL_OFFSET = 5;
3
+ export function setFloatingElemPosition(basePosition, elementToPosition, anchorElem, verticalGap = VERTICAL_GAP, horizontalOffset = HORIZONTAL_OFFSET) {
12
4
  // A small timeout gives enough time for DOM to update and provides us with correct bounding rect values.
13
- setTimeout(function () {
14
- var scrollerElem = anchorElem.parentElement;
5
+ setTimeout(() => {
6
+ const scrollerElem = anchorElem.parentElement;
15
7
  if (basePosition === null || !scrollerElem) {
16
8
  elementToPosition.style.opacity = "0";
17
9
  elementToPosition.style.transform = "translate(-10000px, -10000px)";
18
10
  return;
19
11
  }
20
- var rectToPosition = elementToPosition.getBoundingClientRect();
21
- var anchorElementRect = anchorElem.getBoundingClientRect();
22
- var editorScrollerRect = scrollerElem.getBoundingClientRect();
23
- var top = basePosition.top - rectToPosition.height - verticalGap;
24
- var left = basePosition.left - horizontalOffset;
12
+ const rectToPosition = elementToPosition.getBoundingClientRect();
13
+ const anchorElementRect = anchorElem.getBoundingClientRect();
14
+ const editorScrollerRect = scrollerElem.getBoundingClientRect();
15
+ let top = basePosition.top - rectToPosition.height - verticalGap;
16
+ let left = basePosition.left - horizontalOffset;
25
17
  if (top < editorScrollerRect.top) {
26
18
  top += rectToPosition.height + basePosition.height + verticalGap * 2;
27
19
  }
@@ -31,7 +23,7 @@ function setFloatingElemPosition(basePosition, elementToPosition, anchorElem) {
31
23
  top -= anchorElementRect.top;
32
24
  left -= anchorElementRect.left;
33
25
  elementToPosition.style.opacity = "1";
34
- elementToPosition.style.transform = "translate(".concat(left, "px, ").concat(top, "px)");
26
+ elementToPosition.style.transform = `translate(${left}px, ${top}px)`;
35
27
  }, 10);
36
28
  }
37
29
 
@@ -1 +1 @@
1
- {"version":3,"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPosition","basePosition","elementToPosition","anchorElem","verticalGap","arguments","length","undefined","horizontalOffset","setTimeout","scrollerElem","parentElement","style","opacity","transform","rectToPosition","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","height","left","width","right","concat"],"sources":["setFloatingElemPosition.ts"],"sourcesContent":["const VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPosition(\n basePosition: ClientRect | null,\n elementToPosition: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n // A small timeout gives enough time for DOM to update and provides us with correct bounding rect values.\n setTimeout(() => {\n const scrollerElem = anchorElem.parentElement;\n\n if (basePosition === null || !scrollerElem) {\n elementToPosition.style.opacity = \"0\";\n elementToPosition.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const rectToPosition = elementToPosition.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = basePosition.top - rectToPosition.height - verticalGap;\n let left = basePosition.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += rectToPosition.height + basePosition.height + verticalGap * 2;\n }\n\n if (left + rectToPosition.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - rectToPosition.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n elementToPosition.style.opacity = \"1\";\n elementToPosition.style.transform = `translate(${left}px, ${top}px)`;\n }, 10);\n}\n"],"mappings":";;;;;;AAAA,IAAMA,YAAY,GAAG,EAAE;AACvB,IAAMC,iBAAiB,GAAG,CAAC;AAEpB,SAASC,uBAAuBA,CACnCC,YAA+B,EAC/BC,iBAA8B,EAC9BC,UAAuB,EAGnB;EAAA,IAFJC,WAAmB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGP,YAAY;EAAA,IAClCU,gBAAwB,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGN,iBAAiB;EAE5C;EACAU,UAAU,CAAC,YAAM;IACb,IAAMC,YAAY,GAAGP,UAAU,CAACQ,aAAa;IAE7C,IAAIV,YAAY,KAAK,IAAI,IAAI,CAACS,YAAY,EAAE;MACxCR,iBAAiB,CAACU,KAAK,CAACC,OAAO,GAAG,GAAG;MACrCX,iBAAiB,CAACU,KAAK,CAACE,SAAS,GAAG,+BAA+B;MACnE;IACJ;IAEA,IAAMC,cAAc,GAAGb,iBAAiB,CAACc,qBAAqB,CAAC,CAAC;IAChE,IAAMC,iBAAiB,GAAGd,UAAU,CAACa,qBAAqB,CAAC,CAAC;IAC5D,IAAME,kBAAkB,GAAGR,YAAY,CAACM,qBAAqB,CAAC,CAAC;IAE/D,IAAIG,GAAG,GAAGlB,YAAY,CAACkB,GAAG,GAAGJ,cAAc,CAACK,MAAM,GAAGhB,WAAW;IAChE,IAAIiB,IAAI,GAAGpB,YAAY,CAACoB,IAAI,GAAGb,gBAAgB;IAE/C,IAAIW,GAAG,GAAGD,kBAAkB,CAACC,GAAG,EAAE;MAC9BA,GAAG,IAAIJ,cAAc,CAACK,MAAM,GAAGnB,YAAY,CAACmB,MAAM,GAAGhB,WAAW,GAAG,CAAC;IACxE;IAEA,IAAIiB,IAAI,GAAGN,cAAc,CAACO,KAAK,GAAGJ,kBAAkB,CAACK,KAAK,EAAE;MACxDF,IAAI,GAAGH,kBAAkB,CAACK,KAAK,GAAGR,cAAc,CAACO,KAAK,GAAGd,gBAAgB;IAC7E;IAEAW,GAAG,IAAIF,iBAAiB,CAACE,GAAG;IAC5BE,IAAI,IAAIJ,iBAAiB,CAACI,IAAI;IAE9BnB,iBAAiB,CAACU,KAAK,CAACC,OAAO,GAAG,GAAG;IACrCX,iBAAiB,CAACU,KAAK,CAACE,SAAS,gBAAAU,MAAA,CAAgBH,IAAI,UAAAG,MAAA,CAAOL,GAAG,QAAK;EACxE,CAAC,EAAE,EAAE,CAAC;AACV","ignoreList":[]}
1
+ {"version":3,"names":["VERTICAL_GAP","HORIZONTAL_OFFSET","setFloatingElemPosition","basePosition","elementToPosition","anchorElem","verticalGap","horizontalOffset","setTimeout","scrollerElem","parentElement","style","opacity","transform","rectToPosition","getBoundingClientRect","anchorElementRect","editorScrollerRect","top","height","left","width","right"],"sources":["setFloatingElemPosition.ts"],"sourcesContent":["const VERTICAL_GAP = 10;\nconst HORIZONTAL_OFFSET = 5;\n\nexport function setFloatingElemPosition(\n basePosition: ClientRect | null,\n elementToPosition: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n // A small timeout gives enough time for DOM to update and provides us with correct bounding rect values.\n setTimeout(() => {\n const scrollerElem = anchorElem.parentElement;\n\n if (basePosition === null || !scrollerElem) {\n elementToPosition.style.opacity = \"0\";\n elementToPosition.style.transform = \"translate(-10000px, -10000px)\";\n return;\n }\n\n const rectToPosition = elementToPosition.getBoundingClientRect();\n const anchorElementRect = anchorElem.getBoundingClientRect();\n const editorScrollerRect = scrollerElem.getBoundingClientRect();\n\n let top = basePosition.top - rectToPosition.height - verticalGap;\n let left = basePosition.left - horizontalOffset;\n\n if (top < editorScrollerRect.top) {\n top += rectToPosition.height + basePosition.height + verticalGap * 2;\n }\n\n if (left + rectToPosition.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - rectToPosition.width - horizontalOffset;\n }\n\n top -= anchorElementRect.top;\n left -= anchorElementRect.left;\n\n elementToPosition.style.opacity = \"1\";\n elementToPosition.style.transform = `translate(${left}px, ${top}px)`;\n }, 10);\n}\n"],"mappings":"AAAA,MAAMA,YAAY,GAAG,EAAE;AACvB,MAAMC,iBAAiB,GAAG,CAAC;AAE3B,OAAO,SAASC,uBAAuBA,CACnCC,YAA+B,EAC/BC,iBAA8B,EAC9BC,UAAuB,EACvBC,WAAmB,GAAGN,YAAY,EAClCO,gBAAwB,GAAGN,iBAAiB,EACxC;EACJ;EACAO,UAAU,CAAC,MAAM;IACb,MAAMC,YAAY,GAAGJ,UAAU,CAACK,aAAa;IAE7C,IAAIP,YAAY,KAAK,IAAI,IAAI,CAACM,YAAY,EAAE;MACxCL,iBAAiB,CAACO,KAAK,CAACC,OAAO,GAAG,GAAG;MACrCR,iBAAiB,CAACO,KAAK,CAACE,SAAS,GAAG,+BAA+B;MACnE;IACJ;IAEA,MAAMC,cAAc,GAAGV,iBAAiB,CAACW,qBAAqB,CAAC,CAAC;IAChE,MAAMC,iBAAiB,GAAGX,UAAU,CAACU,qBAAqB,CAAC,CAAC;IAC5D,MAAME,kBAAkB,GAAGR,YAAY,CAACM,qBAAqB,CAAC,CAAC;IAE/D,IAAIG,GAAG,GAAGf,YAAY,CAACe,GAAG,GAAGJ,cAAc,CAACK,MAAM,GAAGb,WAAW;IAChE,IAAIc,IAAI,GAAGjB,YAAY,CAACiB,IAAI,GAAGb,gBAAgB;IAE/C,IAAIW,GAAG,GAAGD,kBAAkB,CAACC,GAAG,EAAE;MAC9BA,GAAG,IAAIJ,cAAc,CAACK,MAAM,GAAGhB,YAAY,CAACgB,MAAM,GAAGb,WAAW,GAAG,CAAC;IACxE;IAEA,IAAIc,IAAI,GAAGN,cAAc,CAACO,KAAK,GAAGJ,kBAAkB,CAACK,KAAK,EAAE;MACxDF,IAAI,GAAGH,kBAAkB,CAACK,KAAK,GAAGR,cAAc,CAACO,KAAK,GAAGd,gBAAgB;IAC7E;IAEAW,GAAG,IAAIF,iBAAiB,CAACE,GAAG;IAC5BE,IAAI,IAAIJ,iBAAiB,CAACI,IAAI;IAE9BhB,iBAAiB,CAACO,KAAK,CAACC,OAAO,GAAG,GAAG;IACrCR,iBAAiB,CAACO,KAAK,CAACE,SAAS,GAAG,aAAaO,IAAI,OAAOF,GAAG,KAAK;EACxE,CAAC,EAAE,EAAE,CAAC;AACV","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare function useFloatingLinkEditor(anchorElem: HTMLElement): JSX.Element | null;
@@ -1,96 +0,0 @@
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.useFloatingLinkEditor = useFloatingLinkEditor;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
11
- var _reactDom = require("react-dom");
12
- var _hooks = require("../../hooks");
13
- var _getSelectedNode = require("../../utils/getSelectedNode");
14
- var _lexicalNodes = require("@webiny/lexical-nodes");
15
- var _isChildOfLinkEditor = require("./isChildOfLinkEditor");
16
- var _lexical = require("lexical");
17
- var _utils = require("@lexical/utils");
18
- var _FloatingLinkEditorPlugin = require("./FloatingLinkEditorPlugin");
19
- var _commands = require("../../commands");
20
- var isLink = function isLink(selection) {
21
- if (!(0, _lexical.$isRangeSelection)(selection)) {
22
- return;
23
- }
24
- var node = (0, _getSelectedNode.getSelectedNode)(selection);
25
- var linkParent = (0, _utils.$findMatchingParent)(node, _lexicalNodes.$isLinkNode);
26
- var autoLinkParent = (0, _utils.$findMatchingParent)(node, _lexicalNodes.$isAutoLinkNode);
27
- var isLinkOrChildOfLink = Boolean((0, _lexicalNodes.$isLinkNode)(node) || linkParent);
28
- if (!isLinkOrChildOfLink) {
29
- return false;
30
- }
31
- return linkParent !== null && autoLinkParent == null;
32
- };
33
- var isSelectionCollapsed = function isSelectionCollapsed(selection) {
34
- return (0, _lexical.$isRangeSelection)(selection) && selection.isCollapsed();
35
- };
36
- var isLinkFocused = function isLinkFocused(selection) {
37
- return isLink(selection) && isSelectionCollapsed(selection);
38
- };
39
- var isLinkSelected = function isLinkSelected(selection) {
40
- return isLink(selection) && !isSelectionCollapsed(selection);
41
- };
42
- function useFloatingLinkEditor(anchorElem) {
43
- var _useRichTextEditor = (0, _hooks.useRichTextEditor)(),
44
- editor = _useRichTextEditor.editor;
45
- var _useState = (0, _react.useState)(false),
46
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
47
- isLinkEditorVisible = _useState2[0],
48
- setShowLinkEditor = _useState2[1];
49
- var newLinkRef = (0, _react.useRef)(false);
50
- var showLinkEditor = function showLinkEditor(state) {
51
- setShowLinkEditor(state);
52
- if (!state) {
53
- newLinkRef.current = false;
54
- }
55
- };
56
- (0, _react.useEffect)(function () {
57
- return (0, _utils.mergeRegister)(editor.registerCommand(_lexical.SELECTION_CHANGE_COMMAND, function () {
58
- var selection = (0, _lexical.$getSelection)();
59
- if (isLinkFocused(selection)) {
60
- showLinkEditor(true);
61
- return false;
62
- }
63
- if (isLinkSelected(selection) && newLinkRef.current) {
64
- return false;
65
- }
66
- if (isLinkSelected(selection) && !newLinkRef.current) {
67
- showLinkEditor(false);
68
- return false;
69
- }
70
- showLinkEditor(false);
71
- return false;
72
- }, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.BLUR_COMMAND, function (payload) {
73
- if (!(0, _isChildOfLinkEditor.isChildOfLinkEditor)(payload.relatedTarget)) {
74
- showLinkEditor(false);
75
- }
76
- return false;
77
- }, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexicalNodes.TOGGLE_LINK_COMMAND, function (payload) {
78
- var addLink = !!payload;
79
- if (addLink) {
80
- newLinkRef.current = true;
81
- showLinkEditor(true);
82
- editor.dispatchCommand(_commands.HIDE_FLOATING_TOOLBAR, {});
83
- } else {
84
- showLinkEditor(false);
85
- }
86
- return false;
87
- }, _lexical.COMMAND_PRIORITY_CRITICAL));
88
- }, [editor]);
89
- return /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/_react.default.createElement(_FloatingLinkEditorPlugin.FloatingLinkEditor, {
90
- isVisible: isLinkEditorVisible,
91
- editor: editor,
92
- anchorElem: anchorElem
93
- }), anchorElem);
94
- }
95
-
96
- //# sourceMappingURL=useFloatingLinkEditor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactDom","_hooks","_getSelectedNode","_lexicalNodes","_isChildOfLinkEditor","_lexical","_utils","_FloatingLinkEditorPlugin","_commands","isLink","selection","$isRangeSelection","node","getSelectedNode","linkParent","$findMatchingParent","$isLinkNode","autoLinkParent","$isAutoLinkNode","isLinkOrChildOfLink","Boolean","isSelectionCollapsed","isCollapsed","isLinkFocused","isLinkSelected","useFloatingLinkEditor","anchorElem","_useRichTextEditor","useRichTextEditor","editor","_useState","useState","_useState2","_slicedToArray2","default","isLinkEditorVisible","setShowLinkEditor","newLinkRef","useRef","showLinkEditor","state","current","useEffect","mergeRegister","registerCommand","SELECTION_CHANGE_COMMAND","$getSelection","COMMAND_PRIORITY_LOW","BLUR_COMMAND","payload","isChildOfLinkEditor","relatedTarget","TOGGLE_LINK_COMMAND","addLink","dispatchCommand","HIDE_FLOATING_TOOLBAR","COMMAND_PRIORITY_CRITICAL","createPortal","createElement","FloatingLinkEditor","isVisible"],"sources":["useFloatingLinkEditor.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useRichTextEditor } from \"~/hooks\";\nimport { getSelectedNode } from \"~/utils/getSelectedNode\";\nimport { BaseSelection } from \"lexical\";\nimport { $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@webiny/lexical-nodes\";\nimport { isChildOfLinkEditor } from \"~/plugins/FloatingLinkEditorPlugin/isChildOfLinkEditor\";\nimport {\n $getSelection,\n $isRangeSelection,\n BLUR_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport { FloatingLinkEditor } from \"./FloatingLinkEditorPlugin\";\nimport { HIDE_FLOATING_TOOLBAR } from \"~/commands\";\n\nconst isLink = (selection: BaseSelection | null) => {\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n const autoLinkParent = $findMatchingParent(node, $isAutoLinkNode);\n const isLinkOrChildOfLink = Boolean($isLinkNode(node) || linkParent);\n\n if (!isLinkOrChildOfLink) {\n return false;\n }\n\n return linkParent !== null && autoLinkParent == null;\n};\n\nconst isSelectionCollapsed = (selection: BaseSelection | null) => {\n return $isRangeSelection(selection) && selection.isCollapsed();\n};\n\nconst isLinkFocused = (selection: BaseSelection | null) => {\n return isLink(selection) && isSelectionCollapsed(selection);\n};\n\nconst isLinkSelected = (selection: BaseSelection | null) => {\n return isLink(selection) && !isSelectionCollapsed(selection);\n};\n\nexport function useFloatingLinkEditor(anchorElem: HTMLElement): JSX.Element | null {\n const { editor } = useRichTextEditor();\n const [isLinkEditorVisible, setShowLinkEditor] = useState(false);\n const newLinkRef = useRef(false);\n\n const showLinkEditor = (state: boolean) => {\n setShowLinkEditor(state);\n if (!state) {\n newLinkRef.current = false;\n }\n };\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const selection = $getSelection();\n\n if (isLinkFocused(selection)) {\n showLinkEditor(true);\n return false;\n }\n\n if (isLinkSelected(selection) && newLinkRef.current) {\n return false;\n }\n\n if (isLinkSelected(selection) && !newLinkRef.current) {\n showLinkEditor(false);\n return false;\n }\n\n showLinkEditor(false);\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n BLUR_COMMAND,\n payload => {\n if (!isChildOfLinkEditor(payload.relatedTarget as HTMLElement)) {\n showLinkEditor(false);\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n payload => {\n const addLink = !!payload;\n\n if (addLink) {\n newLinkRef.current = true;\n showLinkEditor(true);\n editor.dispatchCommand(HIDE_FLOATING_TOOLBAR, {});\n } else {\n showLinkEditor(false);\n }\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n )\n );\n }, [editor]);\n\n return createPortal(\n <FloatingLinkEditor\n isVisible={isLinkEditorVisible}\n editor={editor}\n anchorElem={anchorElem}\n />,\n anchorElem\n );\n}\n"],"mappings":"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","ignoreList":[]}