@atlaskit/renderer 109.18.0 → 109.19.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 (32) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/react/nodes/mediaSingle/index.js +31 -0
  3. package/dist/cjs/ui/MediaCard.js +2 -15
  4. package/dist/cjs/ui/Renderer/index.js +1 -1
  5. package/dist/cjs/ui/annotations/contexts/AnnotationHoverContext.js +63 -0
  6. package/dist/cjs/ui/annotations/contexts/AnnotationRangeContext.js +4 -2
  7. package/dist/cjs/ui/annotations/hover/mounter.js +2 -0
  8. package/dist/cjs/ui/annotations/hover/range-validator.js +4 -0
  9. package/dist/cjs/ui/annotations/index.js +3 -2
  10. package/dist/es2019/react/nodes/mediaSingle/index.js +34 -1
  11. package/dist/es2019/ui/MediaCard.js +2 -16
  12. package/dist/es2019/ui/Renderer/index.js +1 -1
  13. package/dist/es2019/ui/annotations/contexts/AnnotationHoverContext.js +46 -0
  14. package/dist/es2019/ui/annotations/contexts/AnnotationRangeContext.js +4 -2
  15. package/dist/es2019/ui/annotations/hover/mounter.js +2 -0
  16. package/dist/es2019/ui/annotations/hover/range-validator.js +5 -0
  17. package/dist/es2019/ui/annotations/index.js +3 -2
  18. package/dist/esm/react/nodes/mediaSingle/index.js +32 -1
  19. package/dist/esm/ui/MediaCard.js +2 -15
  20. package/dist/esm/ui/Renderer/index.js +1 -1
  21. package/dist/esm/ui/annotations/contexts/AnnotationHoverContext.js +53 -0
  22. package/dist/esm/ui/annotations/contexts/AnnotationRangeContext.js +4 -2
  23. package/dist/esm/ui/annotations/hover/mounter.js +2 -0
  24. package/dist/esm/ui/annotations/hover/range-validator.js +4 -0
  25. package/dist/esm/ui/annotations/index.js +3 -2
  26. package/dist/types/ui/MediaCard.d.ts +0 -1
  27. package/dist/types/ui/annotations/contexts/AnnotationHoverContext.d.ts +14 -0
  28. package/dist/types/ui/annotations/hover/mounter.d.ts +1 -0
  29. package/dist/types-ts4.5/ui/MediaCard.d.ts +0 -1
  30. package/dist/types-ts4.5/ui/annotations/contexts/AnnotationHoverContext.d.ts +14 -0
  31. package/dist/types-ts4.5/ui/annotations/hover/mounter.d.ts +1 -0
  32. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 109.19.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#90964](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/90964) [`6e7df33eb280`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6e7df33eb280) - [ux] [ED-22992] Auto-dismiss comment button on media if mouse rolling away from media and comment popup, remove popup position transition so that popup does not appear sliding across the page when mouse moving from one media to another
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
13
+ ## 109.18.1
14
+
15
+ ### Patch Changes
16
+
17
+ - [#90969](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/90969) [`e6b63a9cbe78`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/e6b63a9cbe78) - Fix issues with comment hover for media nodes
18
+
3
19
  ## 109.18.0
4
20
 
5
21
  ### Minor Changes
@@ -15,6 +15,8 @@ var _ui = require("@atlaskit/editor-common/ui");
15
15
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
16
16
  var _style = require("../../../ui/Renderer/style");
17
17
  var _styles = require("./styles");
18
+ var _AnnotationRangeContext = require("../../../ui/annotations/contexts/AnnotationRangeContext");
19
+ var _AnnotationHoverContext = require("../../../ui/annotations/contexts/AnnotationHoverContext");
18
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
19
21
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
22
  /** @jsx jsx */
@@ -144,6 +146,35 @@ var MediaSingleWithChildren = function MediaSingleWithChildren(props) {
144
146
  height: height
145
147
  };
146
148
  }, [height, width]);
149
+ var _useAnnotationRangeDi = (0, _AnnotationRangeContext.useAnnotationRangeDispatch)(),
150
+ setHoverTarget = _useAnnotationRangeDi.setHoverTarget;
151
+ var _useAnnotationHoverDi = (0, _AnnotationHoverContext.useAnnotationHoverDispatch)(),
152
+ cancelTimeout = _useAnnotationHoverDi.cancelTimeout,
153
+ initiateTimeout = _useAnnotationHoverDi.initiateTimeout,
154
+ setIsWithinRange = _useAnnotationHoverDi.setIsWithinRange;
155
+ (0, _react.useEffect)(function () {
156
+ var mediaSingleElement = ref.current;
157
+ var handleMouseEnter = function handleMouseEnter(event) {
158
+ cancelTimeout();
159
+ if (event.buttons === 0) {
160
+ setHoverTarget && setHoverTarget(event.target);
161
+ setIsWithinRange(true);
162
+ }
163
+ };
164
+ var handleMouseLeave = function handleMouseLeave() {
165
+ initiateTimeout();
166
+ };
167
+ if (mediaSingleElement) {
168
+ mediaSingleElement.addEventListener('mouseenter', handleMouseEnter);
169
+ mediaSingleElement.addEventListener('mouseleave', handleMouseLeave);
170
+ }
171
+ return function () {
172
+ if (mediaSingleElement) {
173
+ mediaSingleElement.removeEventListener('mouseenter', handleMouseEnter);
174
+ mediaSingleElement.removeEventListener('mouseleave', handleMouseLeave);
175
+ }
176
+ };
177
+ }, [setHoverTarget, cancelTimeout, initiateTimeout, setIsWithinRange]);
147
178
 
148
179
  // Note: in SSR mode the `window` object is not defined,
149
180
  // therefore width here is 0, see:
@@ -21,7 +21,6 @@ var _traverse = require("@atlaskit/adf-utils/traverse");
21
21
  var _mediaCard = require("@atlaskit/media-card");
22
22
  var _mediaClientReact = require("@atlaskit/media-client-react");
23
23
  var _utils = require("@atlaskit/editor-common/utils");
24
- var _AnnotationRangeContext = require("./annotations/contexts/AnnotationRangeContext");
25
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
26
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
26
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -269,7 +268,6 @@ var MediaCardView = exports.MediaCardView = /*#__PURE__*/function (_Component) {
269
268
  shouldEnableDownloadButton = _this$props5.shouldEnableDownloadButton,
270
269
  ssr = _this$props5.ssr,
271
270
  mediaClient = _this$props5.mediaClient,
272
- setHoverTarget = _this$props5.setHoverTarget,
273
271
  dataAttributes = _this$props5.dataAttributes;
274
272
  var isMobile = rendererAppearance === 'mobile';
275
273
  var shouldPlayInline = useInlinePlayer !== undefined ? useInlinePlayer : true;
@@ -305,15 +303,7 @@ var MediaCardView = exports.MediaCardView = /*#__PURE__*/function (_Component) {
305
303
  contextIdentifierProvider: contextIdentifierProvider,
306
304
  originalDimensions: originalDimensions,
307
305
  fileState: fileState
308
- }), dataAttributes, {
309
- onMouseEnter: function onMouseEnter(event) {
310
- // We will not allow a hover target to be set if any mouse button is depressed during the mouse enter state.
311
- // This could be due to the user trying to select text across the document.
312
- if (event.buttons === 0) {
313
- setHoverTarget && setHoverTarget(event.target);
314
- }
315
- }
316
- }), /*#__PURE__*/_react.default.createElement(_mediaCard.Card, {
306
+ }), dataAttributes), /*#__PURE__*/_react.default.createElement(_mediaCard.Card, {
317
307
  identifier: identifier,
318
308
  alt: alt,
319
309
  contextId: contextId,
@@ -371,11 +361,8 @@ var getClipboardAttrs = exports.getClipboardAttrs = function getClipboardAttrs(_
371
361
  };
372
362
  var MediaCardInternal = exports.MediaCardInternal = function MediaCardInternal(props) {
373
363
  var mediaClient = (0, _react.useContext)(_mediaClientReact.MediaClientContext);
374
- var _useAnnotationRangeDi = (0, _AnnotationRangeContext.useAnnotationRangeDispatch)(),
375
- setHoverTarget = _useAnnotationRangeDi.setHoverTarget;
376
364
  return /*#__PURE__*/_react.default.createElement(MediaCardView, (0, _extends2.default)({}, props, {
377
- mediaClient: mediaClient,
378
- setHoverTarget: setHoverTarget
365
+ mediaClient: mediaClient
379
366
  }));
380
367
  };
381
368
  var MediaCard = exports.MediaCard = (0, _utils.withImageLoader)(MediaCardInternal);
@@ -55,7 +55,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
55
55
  var NORMAL_SEVERITY_THRESHOLD = exports.NORMAL_SEVERITY_THRESHOLD = 2000;
56
56
  var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
57
57
  var packageName = "@atlaskit/renderer";
58
- var packageVersion = "109.18.0";
58
+ var packageVersion = "109.19.0";
59
59
  var Renderer = exports.Renderer = /*#__PURE__*/function (_PureComponent) {
60
60
  (0, _inherits2.default)(Renderer, _PureComponent);
61
61
  var _super = _createSuper(Renderer);
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useAnnotationHoverDispatch = exports.useAnnotationHoverContext = exports.AnnotationHoverContext = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ var AnnotationHoverStateContext = /*#__PURE__*/(0, _react.createContext)({
14
+ isWithinRange: false
15
+ });
16
+ var AnnotationHoverDispatchContext = /*#__PURE__*/(0, _react.createContext)({
17
+ cancelTimeout: function cancelTimeout() {},
18
+ initiateTimeout: function initiateTimeout() {},
19
+ setIsWithinRange: function setIsWithinRange() {}
20
+ });
21
+ var AnnotationHoverContext = exports.AnnotationHoverContext = function AnnotationHoverContext(_ref) {
22
+ var children = _ref.children;
23
+ var _useState = (0, _react.useState)(false),
24
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
+ isWithinRange = _useState2[0],
26
+ setIsWithinRange = _useState2[1];
27
+ var timeoutHandler = (0, _react.useRef)();
28
+ var cancelTimeout = (0, _react.useCallback)(function () {
29
+ if (timeoutHandler) {
30
+ clearTimeout(timeoutHandler.current);
31
+ }
32
+ }, [timeoutHandler]);
33
+ var initiateTimeout = (0, _react.useCallback)(function () {
34
+ if (isWithinRange) {
35
+ timeoutHandler.current = setTimeout(function () {
36
+ setIsWithinRange(false);
37
+ }, 500);
38
+ }
39
+ }, [isWithinRange]);
40
+ var stateData = (0, _react.useMemo)(function () {
41
+ return {
42
+ isWithinRange: isWithinRange
43
+ };
44
+ }, [isWithinRange]);
45
+ var dispatchData = (0, _react.useMemo)(function () {
46
+ return {
47
+ cancelTimeout: cancelTimeout,
48
+ initiateTimeout: initiateTimeout,
49
+ setIsWithinRange: setIsWithinRange
50
+ };
51
+ }, [cancelTimeout, initiateTimeout, setIsWithinRange]);
52
+ return /*#__PURE__*/_react.default.createElement(AnnotationHoverStateContext.Provider, {
53
+ value: stateData
54
+ }, /*#__PURE__*/_react.default.createElement(AnnotationHoverDispatchContext.Provider, {
55
+ value: dispatchData
56
+ }, children));
57
+ };
58
+ var useAnnotationHoverContext = exports.useAnnotationHoverContext = function useAnnotationHoverContext() {
59
+ return (0, _react.useContext)(AnnotationHoverStateContext);
60
+ };
61
+ var useAnnotationHoverDispatch = exports.useAnnotationHoverDispatch = function useAnnotationHoverDispatch() {
62
+ return (0, _react.useContext)(AnnotationHoverDispatchContext);
63
+ };
@@ -162,9 +162,11 @@ var AnnotationRangeProvider = exports.AnnotationRangeProvider = function Annotat
162
162
  });
163
163
  }, []);
164
164
  var setHoverTarget = (0, _react.useCallback)(function (target) {
165
+ // the HoverComponent expects an element deeply nested inside media, these classes work with the current implementation
166
+ var mediaNode = target.querySelector('.media-card-inline-player, .media-file-card-view');
165
167
  var range = document.createRange();
166
- range.setStartBefore(target);
167
- range.setEndAfter(target);
168
+ range.setStartBefore(mediaNode);
169
+ range.setEndAfter(mediaNode);
168
170
  dispatch({
169
171
  type: 'setHover',
170
172
  range: range
@@ -18,6 +18,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
18
18
  var Mounter = exports.Mounter = /*#__PURE__*/_react.default.memo(function (props) {
19
19
  var Component = props.component,
20
20
  range = props.range,
21
+ isWithinRange = props.isWithinRange,
21
22
  isAnnotationAllowed = props.isAnnotationAllowed,
22
23
  wrapperDOM = props.wrapperDOM,
23
24
  onCloseProps = props.onClose,
@@ -123,6 +124,7 @@ var Mounter = exports.Mounter = /*#__PURE__*/_react.default.memo(function (props
123
124
  }, [onCloseProps, removeDraftModeCallback, createAnalyticsEvent]);
124
125
  return /*#__PURE__*/_react.default.createElement(Component, {
125
126
  range: range,
127
+ isWithinRange: isWithinRange,
126
128
  wrapperDOM: wrapperDOM.current,
127
129
  isAnnotationAllowed: isAnnotationAllowed,
128
130
  onClose: onCloseCallback,
@@ -9,6 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _mounter = require("./mounter");
10
10
  var _RendererActionsContext = require("../../RendererActionsContext");
11
11
  var _AnnotationRangeContext = require("../contexts/AnnotationRangeContext");
12
+ var _AnnotationHoverContext = require("../contexts/AnnotationHoverContext");
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
15
  var RangeValidator = exports.RangeValidator = function RangeValidator(props) {
@@ -23,11 +24,14 @@ var RangeValidator = exports.RangeValidator = function RangeValidator(props) {
23
24
  var _useAnnotationRangeSt = (0, _AnnotationRangeContext.useAnnotationRangeState)(),
24
25
  range = _useAnnotationRangeSt.range,
25
26
  type = _useAnnotationRangeSt.type;
27
+ var _useAnnotationHoverCo = (0, _AnnotationHoverContext.useAnnotationHoverContext)(),
28
+ isWithinRange = _useAnnotationHoverCo.isWithinRange;
26
29
  if (!range || type !== 'hover') {
27
30
  return null;
28
31
  }
29
32
  var documentPosition = actions.getPositionFromRange(range);
30
33
  return /*#__PURE__*/_react.default.createElement(_mounter.Mounter, {
34
+ isWithinRange: isWithinRange,
31
35
  range: range,
32
36
  wrapperDOM: rendererRef,
33
37
  component: component,
@@ -26,6 +26,7 @@ var _useLoadAnnotations = require("./hooks/use-load-annotations");
26
26
  var _useEvents = require("./hooks/use-events");
27
27
  var _analyticsNext = require("@atlaskit/analytics-next");
28
28
  var _AnnotationRangeContext = require("./contexts/AnnotationRangeContext");
29
+ var _AnnotationHoverContext = require("./contexts/AnnotationHoverContext");
29
30
  var _draft = require("./draft");
30
31
  var _element = require("./element");
31
32
  var LoadAnnotations = /*#__PURE__*/_react.default.memo(function (_ref) {
@@ -54,12 +55,12 @@ var AnnotationsWrapper = exports.AnnotationsWrapper = function AnnotationsWrappe
54
55
  value: inlineCommentAnnotationsState
55
56
  }, /*#__PURE__*/_react.default.createElement(_AnnotationRangeContext.AnnotationRangeProvider, {
56
57
  allowCommentsOnMedia: (_annotationProvider$i = annotationProvider === null || annotationProvider === void 0 || (_annotationProvider$i2 = annotationProvider.inlineComment) === null || _annotationProvider$i2 === void 0 ? void 0 : _annotationProvider$i2.allowCommentsOnMedia) !== null && _annotationProvider$i !== void 0 ? _annotationProvider$i : false
57
- }, /*#__PURE__*/_react.default.createElement(_wrapper.AnnotationsContextWrapper, {
58
+ }, /*#__PURE__*/_react.default.createElement(_AnnotationHoverContext.AnnotationHoverContext, null, /*#__PURE__*/_react.default.createElement(_wrapper.AnnotationsContextWrapper, {
58
59
  createAnalyticsEvent: createAnalyticsEvent,
59
60
  rendererRef: rendererRef
60
61
  }, /*#__PURE__*/_react.default.createElement(LoadAnnotations, {
61
62
  adfDocument: adfDocument
62
63
  }), /*#__PURE__*/_react.default.createElement(_view.AnnotationView, {
63
64
  createAnalyticsEvent: createAnalyticsEvent
64
- }), children))));
65
+ }), children)))));
65
66
  };
@@ -1,13 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
3
 
4
- import { default as React, Fragment, useCallback, useContext, useMemo } from 'react';
4
+ import { default as React, Fragment, useCallback, useContext, useMemo, useEffect } from 'react';
5
5
  import { jsx } from '@emotion/react';
6
6
  import { injectIntl } from 'react-intl-next';
7
7
  import { MediaSingle as UIMediaSingle, WidthContext } from '@atlaskit/editor-common/ui';
8
8
  import { akEditorFullWidthLayoutWidth, akEditorDefaultLayoutWidth, akEditorWideLayoutWidth } from '@atlaskit/editor-shared-styles';
9
9
  import { FullPagePadding } from '../../../ui/Renderer/style';
10
10
  import { uiMediaSingleBaseStyles, uiMediaSingleLayoutStyles } from './styles';
11
+ import { useAnnotationRangeDispatch } from '../../../ui/annotations/contexts/AnnotationRangeContext';
12
+ import { useAnnotationHoverDispatch } from '../../../ui/annotations/contexts/AnnotationHoverContext';
11
13
  const DEFAULT_WIDTH = 250;
12
14
  const DEFAULT_HEIGHT = 200;
13
15
  const isMediaElement = media => {
@@ -129,6 +131,37 @@ const MediaSingleWithChildren = props => {
129
131
  width,
130
132
  height
131
133
  }), [height, width]);
134
+ const {
135
+ setHoverTarget
136
+ } = useAnnotationRangeDispatch();
137
+ const {
138
+ cancelTimeout,
139
+ initiateTimeout,
140
+ setIsWithinRange
141
+ } = useAnnotationHoverDispatch();
142
+ useEffect(() => {
143
+ const mediaSingleElement = ref.current;
144
+ const handleMouseEnter = event => {
145
+ cancelTimeout();
146
+ if (event.buttons === 0) {
147
+ setHoverTarget && setHoverTarget(event.target);
148
+ setIsWithinRange(true);
149
+ }
150
+ };
151
+ const handleMouseLeave = () => {
152
+ initiateTimeout();
153
+ };
154
+ if (mediaSingleElement) {
155
+ mediaSingleElement.addEventListener('mouseenter', handleMouseEnter);
156
+ mediaSingleElement.addEventListener('mouseleave', handleMouseLeave);
157
+ }
158
+ return () => {
159
+ if (mediaSingleElement) {
160
+ mediaSingleElement.removeEventListener('mouseenter', handleMouseEnter);
161
+ mediaSingleElement.removeEventListener('mouseleave', handleMouseLeave);
162
+ }
163
+ };
164
+ }, [setHoverTarget, cancelTimeout, initiateTimeout, setIsWithinRange]);
132
165
 
133
166
  // Note: in SSR mode the `window` object is not defined,
134
167
  // therefore width here is 0, see:
@@ -5,7 +5,6 @@ import { filter } from '@atlaskit/adf-utils/traverse';
5
5
  import { Card, CardLoading, CardError } from '@atlaskit/media-card';
6
6
  import { MediaClientContext } from '@atlaskit/media-client-react';
7
7
  import { withImageLoader } from '@atlaskit/editor-common/utils';
8
- import { useAnnotationRangeDispatch } from './annotations/contexts/AnnotationRangeContext';
9
8
  export const mediaIdentifierMap = new Map();
10
9
  export const getListOfIdentifiersFromDoc = doc => {
11
10
  if (!doc) {
@@ -201,7 +200,6 @@ export class MediaCardView extends Component {
201
200
  shouldEnableDownloadButton,
202
201
  ssr,
203
202
  mediaClient,
204
- setHoverTarget,
205
203
  dataAttributes
206
204
  } = this.props;
207
205
  const isMobile = rendererAppearance === 'mobile';
@@ -238,15 +236,7 @@ export class MediaCardView extends Component {
238
236
  contextIdentifierProvider,
239
237
  originalDimensions,
240
238
  fileState
241
- }), dataAttributes, {
242
- onMouseEnter: event => {
243
- // We will not allow a hover target to be set if any mouse button is depressed during the mouse enter state.
244
- // This could be due to the user trying to select text across the document.
245
- if (event.buttons === 0) {
246
- setHoverTarget && setHoverTarget(event.target);
247
- }
248
- }
249
- }), /*#__PURE__*/React.createElement(Card, {
239
+ }), dataAttributes), /*#__PURE__*/React.createElement(Card, {
250
240
  identifier: identifier,
251
241
  alt: alt,
252
242
  contextId: contextId,
@@ -303,12 +293,8 @@ export const getClipboardAttrs = ({
303
293
  };
304
294
  export const MediaCardInternal = props => {
305
295
  const mediaClient = useContext(MediaClientContext);
306
- const {
307
- setHoverTarget
308
- } = useAnnotationRangeDispatch();
309
296
  return /*#__PURE__*/React.createElement(MediaCardView, _extends({}, props, {
310
- mediaClient: mediaClient,
311
- setHoverTarget: setHoverTarget
297
+ mediaClient: mediaClient
312
298
  }));
313
299
  };
314
300
  export const MediaCard = withImageLoader(MediaCardInternal);
@@ -36,7 +36,7 @@ import { EditorMediaClientProvider } from '../../react/utils/EditorMediaClientPr
36
36
  export const NORMAL_SEVERITY_THRESHOLD = 2000;
37
37
  export const DEGRADED_SEVERITY_THRESHOLD = 3000;
38
38
  const packageName = "@atlaskit/renderer";
39
- const packageVersion = "109.18.0";
39
+ const packageVersion = "109.19.0";
40
40
  export class Renderer extends PureComponent {
41
41
  constructor(props) {
42
42
  super(props);
@@ -0,0 +1,46 @@
1
+ import React, { createContext, useState, useContext, useMemo, useRef, useCallback } from 'react';
2
+ const AnnotationHoverStateContext = /*#__PURE__*/createContext({
3
+ isWithinRange: false
4
+ });
5
+ const AnnotationHoverDispatchContext = /*#__PURE__*/createContext({
6
+ cancelTimeout: () => {},
7
+ initiateTimeout: () => {},
8
+ setIsWithinRange: () => {}
9
+ });
10
+ export const AnnotationHoverContext = ({
11
+ children
12
+ }) => {
13
+ const [isWithinRange, setIsWithinRange] = useState(false);
14
+ const timeoutHandler = useRef();
15
+ const cancelTimeout = useCallback(() => {
16
+ if (timeoutHandler) {
17
+ clearTimeout(timeoutHandler.current);
18
+ }
19
+ }, [timeoutHandler]);
20
+ const initiateTimeout = useCallback(() => {
21
+ if (isWithinRange) {
22
+ timeoutHandler.current = setTimeout(() => {
23
+ setIsWithinRange(false);
24
+ }, 500);
25
+ }
26
+ }, [isWithinRange]);
27
+ const stateData = useMemo(() => ({
28
+ isWithinRange
29
+ }), [isWithinRange]);
30
+ const dispatchData = useMemo(() => ({
31
+ cancelTimeout,
32
+ initiateTimeout,
33
+ setIsWithinRange
34
+ }), [cancelTimeout, initiateTimeout, setIsWithinRange]);
35
+ return /*#__PURE__*/React.createElement(AnnotationHoverStateContext.Provider, {
36
+ value: stateData
37
+ }, /*#__PURE__*/React.createElement(AnnotationHoverDispatchContext.Provider, {
38
+ value: dispatchData
39
+ }, children));
40
+ };
41
+ export const useAnnotationHoverContext = () => {
42
+ return useContext(AnnotationHoverStateContext);
43
+ };
44
+ export const useAnnotationHoverDispatch = () => {
45
+ return useContext(AnnotationHoverDispatchContext);
46
+ };
@@ -145,9 +145,11 @@ export const AnnotationRangeProvider = ({
145
145
  });
146
146
  }, []);
147
147
  const setHoverTarget = useCallback(target => {
148
+ // the HoverComponent expects an element deeply nested inside media, these classes work with the current implementation
149
+ const mediaNode = target.querySelector('.media-card-inline-player, .media-file-card-view');
148
150
  const range = document.createRange();
149
- range.setStartBefore(target);
150
- range.setEndAfter(target);
151
+ range.setStartBefore(mediaNode);
152
+ range.setEndAfter(mediaNode);
151
153
  dispatch({
152
154
  type: 'setHover',
153
155
  range
@@ -8,6 +8,7 @@ export const Mounter = /*#__PURE__*/React.memo(props => {
8
8
  const {
9
9
  component: Component,
10
10
  range,
11
+ isWithinRange,
11
12
  isAnnotationAllowed,
12
13
  wrapperDOM,
13
14
  onClose: onCloseProps,
@@ -110,6 +111,7 @@ export const Mounter = /*#__PURE__*/React.memo(props => {
110
111
  }, [onCloseProps, removeDraftModeCallback, createAnalyticsEvent]);
111
112
  return /*#__PURE__*/React.createElement(Component, {
112
113
  range: range,
114
+ isWithinRange: isWithinRange,
113
115
  wrapperDOM: wrapperDOM.current,
114
116
  isAnnotationAllowed: isAnnotationAllowed,
115
117
  onClose: onCloseCallback,
@@ -2,6 +2,7 @@ import React, { useContext } from 'react';
2
2
  import { Mounter } from './mounter';
3
3
  import { RendererContext as ActionsContext } from '../../RendererActionsContext';
4
4
  import { useAnnotationRangeDispatch, useAnnotationRangeState } from '../contexts/AnnotationRangeContext';
5
+ import { useAnnotationHoverContext } from '../contexts/AnnotationHoverContext';
5
6
  export const RangeValidator = props => {
6
7
  const {
7
8
  component,
@@ -18,11 +19,15 @@ export const RangeValidator = props => {
18
19
  range,
19
20
  type
20
21
  } = useAnnotationRangeState();
22
+ const {
23
+ isWithinRange
24
+ } = useAnnotationHoverContext();
21
25
  if (!range || type !== 'hover') {
22
26
  return null;
23
27
  }
24
28
  const documentPosition = actions.getPositionFromRange(range);
25
29
  return /*#__PURE__*/React.createElement(Mounter, {
30
+ isWithinRange: isWithinRange,
26
31
  range: range,
27
32
  wrapperDOM: rendererRef,
28
33
  component: component,
@@ -7,6 +7,7 @@ import { useLoadAnnotations } from './hooks/use-load-annotations';
7
7
  import { useAnnotationStateByTypeEvent } from './hooks/use-events';
8
8
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
9
9
  import { AnnotationRangeProvider } from './contexts/AnnotationRangeContext';
10
+ import { AnnotationHoverContext } from './contexts/AnnotationHoverContext';
10
11
  const LoadAnnotations = /*#__PURE__*/React.memo(({
11
12
  adfDocument
12
13
  }) => {
@@ -37,14 +38,14 @@ export const AnnotationsWrapper = props => {
37
38
  value: inlineCommentAnnotationsState
38
39
  }, /*#__PURE__*/React.createElement(AnnotationRangeProvider, {
39
40
  allowCommentsOnMedia: (_annotationProvider$i = annotationProvider === null || annotationProvider === void 0 ? void 0 : (_annotationProvider$i2 = annotationProvider.inlineComment) === null || _annotationProvider$i2 === void 0 ? void 0 : _annotationProvider$i2.allowCommentsOnMedia) !== null && _annotationProvider$i !== void 0 ? _annotationProvider$i : false
40
- }, /*#__PURE__*/React.createElement(AnnotationsContextWrapper, {
41
+ }, /*#__PURE__*/React.createElement(AnnotationHoverContext, null, /*#__PURE__*/React.createElement(AnnotationsContextWrapper, {
41
42
  createAnalyticsEvent: createAnalyticsEvent,
42
43
  rendererRef: rendererRef
43
44
  }, /*#__PURE__*/React.createElement(LoadAnnotations, {
44
45
  adfDocument: adfDocument
45
46
  }), /*#__PURE__*/React.createElement(AnnotationView, {
46
47
  createAnalyticsEvent: createAnalyticsEvent
47
- }), children))));
48
+ }), children)))));
48
49
  };
49
50
  export { TextWithAnnotationDraft } from './draft';
50
51
  export { MarkElement as AnnotationMark } from './element';
@@ -2,13 +2,15 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  /** @jsx jsx */
4
4
 
5
- import { default as React, Fragment, useCallback, useContext, useMemo } from 'react';
5
+ import { default as React, Fragment, useCallback, useContext, useMemo, useEffect } from 'react';
6
6
  import { jsx } from '@emotion/react';
7
7
  import { injectIntl } from 'react-intl-next';
8
8
  import { MediaSingle as UIMediaSingle, WidthContext } from '@atlaskit/editor-common/ui';
9
9
  import { akEditorFullWidthLayoutWidth, akEditorDefaultLayoutWidth, akEditorWideLayoutWidth } from '@atlaskit/editor-shared-styles';
10
10
  import { FullPagePadding } from '../../../ui/Renderer/style';
11
11
  import { uiMediaSingleBaseStyles, uiMediaSingleLayoutStyles } from './styles';
12
+ import { useAnnotationRangeDispatch } from '../../../ui/annotations/contexts/AnnotationRangeContext';
13
+ import { useAnnotationHoverDispatch } from '../../../ui/annotations/contexts/AnnotationHoverContext';
12
14
  var DEFAULT_WIDTH = 250;
13
15
  var DEFAULT_HEIGHT = 200;
14
16
  var isMediaElement = function isMediaElement(media) {
@@ -134,6 +136,35 @@ var MediaSingleWithChildren = function MediaSingleWithChildren(props) {
134
136
  height: height
135
137
  };
136
138
  }, [height, width]);
139
+ var _useAnnotationRangeDi = useAnnotationRangeDispatch(),
140
+ setHoverTarget = _useAnnotationRangeDi.setHoverTarget;
141
+ var _useAnnotationHoverDi = useAnnotationHoverDispatch(),
142
+ cancelTimeout = _useAnnotationHoverDi.cancelTimeout,
143
+ initiateTimeout = _useAnnotationHoverDi.initiateTimeout,
144
+ setIsWithinRange = _useAnnotationHoverDi.setIsWithinRange;
145
+ useEffect(function () {
146
+ var mediaSingleElement = ref.current;
147
+ var handleMouseEnter = function handleMouseEnter(event) {
148
+ cancelTimeout();
149
+ if (event.buttons === 0) {
150
+ setHoverTarget && setHoverTarget(event.target);
151
+ setIsWithinRange(true);
152
+ }
153
+ };
154
+ var handleMouseLeave = function handleMouseLeave() {
155
+ initiateTimeout();
156
+ };
157
+ if (mediaSingleElement) {
158
+ mediaSingleElement.addEventListener('mouseenter', handleMouseEnter);
159
+ mediaSingleElement.addEventListener('mouseleave', handleMouseLeave);
160
+ }
161
+ return function () {
162
+ if (mediaSingleElement) {
163
+ mediaSingleElement.removeEventListener('mouseenter', handleMouseEnter);
164
+ mediaSingleElement.removeEventListener('mouseleave', handleMouseLeave);
165
+ }
166
+ };
167
+ }, [setHoverTarget, cancelTimeout, initiateTimeout, setIsWithinRange]);
137
168
 
138
169
  // Note: in SSR mode the `window` object is not defined,
139
170
  // therefore width here is 0, see:
@@ -17,7 +17,6 @@ import { filter } from '@atlaskit/adf-utils/traverse';
17
17
  import { Card, CardLoading, CardError } from '@atlaskit/media-card';
18
18
  import { MediaClientContext } from '@atlaskit/media-client-react';
19
19
  import { withImageLoader } from '@atlaskit/editor-common/utils';
20
- import { useAnnotationRangeDispatch } from './annotations/contexts/AnnotationRangeContext';
21
20
  export var mediaIdentifierMap = new Map();
22
21
  export var getListOfIdentifiersFromDoc = function getListOfIdentifiersFromDoc(doc) {
23
22
  if (!doc) {
@@ -259,7 +258,6 @@ export var MediaCardView = /*#__PURE__*/function (_Component) {
259
258
  shouldEnableDownloadButton = _this$props5.shouldEnableDownloadButton,
260
259
  ssr = _this$props5.ssr,
261
260
  mediaClient = _this$props5.mediaClient,
262
- setHoverTarget = _this$props5.setHoverTarget,
263
261
  dataAttributes = _this$props5.dataAttributes;
264
262
  var isMobile = rendererAppearance === 'mobile';
265
263
  var shouldPlayInline = useInlinePlayer !== undefined ? useInlinePlayer : true;
@@ -295,15 +293,7 @@ export var MediaCardView = /*#__PURE__*/function (_Component) {
295
293
  contextIdentifierProvider: contextIdentifierProvider,
296
294
  originalDimensions: originalDimensions,
297
295
  fileState: fileState
298
- }), dataAttributes, {
299
- onMouseEnter: function onMouseEnter(event) {
300
- // We will not allow a hover target to be set if any mouse button is depressed during the mouse enter state.
301
- // This could be due to the user trying to select text across the document.
302
- if (event.buttons === 0) {
303
- setHoverTarget && setHoverTarget(event.target);
304
- }
305
- }
306
- }), /*#__PURE__*/React.createElement(Card, {
296
+ }), dataAttributes), /*#__PURE__*/React.createElement(Card, {
307
297
  identifier: identifier,
308
298
  alt: alt,
309
299
  contextId: contextId,
@@ -361,11 +351,8 @@ export var getClipboardAttrs = function getClipboardAttrs(_ref2) {
361
351
  };
362
352
  export var MediaCardInternal = function MediaCardInternal(props) {
363
353
  var mediaClient = useContext(MediaClientContext);
364
- var _useAnnotationRangeDi = useAnnotationRangeDispatch(),
365
- setHoverTarget = _useAnnotationRangeDi.setHoverTarget;
366
354
  return /*#__PURE__*/React.createElement(MediaCardView, _extends({}, props, {
367
- mediaClient: mediaClient,
368
- setHoverTarget: setHoverTarget
355
+ mediaClient: mediaClient
369
356
  }));
370
357
  };
371
358
  export var MediaCard = withImageLoader(MediaCardInternal);
@@ -46,7 +46,7 @@ import { EditorMediaClientProvider } from '../../react/utils/EditorMediaClientPr
46
46
  export var NORMAL_SEVERITY_THRESHOLD = 2000;
47
47
  export var DEGRADED_SEVERITY_THRESHOLD = 3000;
48
48
  var packageName = "@atlaskit/renderer";
49
- var packageVersion = "109.18.0";
49
+ var packageVersion = "109.19.0";
50
50
  export var Renderer = /*#__PURE__*/function (_PureComponent) {
51
51
  _inherits(Renderer, _PureComponent);
52
52
  var _super = _createSuper(Renderer);
@@ -0,0 +1,53 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { createContext, useState, useContext, useMemo, useRef, useCallback } from 'react';
3
+ var AnnotationHoverStateContext = /*#__PURE__*/createContext({
4
+ isWithinRange: false
5
+ });
6
+ var AnnotationHoverDispatchContext = /*#__PURE__*/createContext({
7
+ cancelTimeout: function cancelTimeout() {},
8
+ initiateTimeout: function initiateTimeout() {},
9
+ setIsWithinRange: function setIsWithinRange() {}
10
+ });
11
+ export var AnnotationHoverContext = function AnnotationHoverContext(_ref) {
12
+ var children = _ref.children;
13
+ var _useState = useState(false),
14
+ _useState2 = _slicedToArray(_useState, 2),
15
+ isWithinRange = _useState2[0],
16
+ setIsWithinRange = _useState2[1];
17
+ var timeoutHandler = useRef();
18
+ var cancelTimeout = useCallback(function () {
19
+ if (timeoutHandler) {
20
+ clearTimeout(timeoutHandler.current);
21
+ }
22
+ }, [timeoutHandler]);
23
+ var initiateTimeout = useCallback(function () {
24
+ if (isWithinRange) {
25
+ timeoutHandler.current = setTimeout(function () {
26
+ setIsWithinRange(false);
27
+ }, 500);
28
+ }
29
+ }, [isWithinRange]);
30
+ var stateData = useMemo(function () {
31
+ return {
32
+ isWithinRange: isWithinRange
33
+ };
34
+ }, [isWithinRange]);
35
+ var dispatchData = useMemo(function () {
36
+ return {
37
+ cancelTimeout: cancelTimeout,
38
+ initiateTimeout: initiateTimeout,
39
+ setIsWithinRange: setIsWithinRange
40
+ };
41
+ }, [cancelTimeout, initiateTimeout, setIsWithinRange]);
42
+ return /*#__PURE__*/React.createElement(AnnotationHoverStateContext.Provider, {
43
+ value: stateData
44
+ }, /*#__PURE__*/React.createElement(AnnotationHoverDispatchContext.Provider, {
45
+ value: dispatchData
46
+ }, children));
47
+ };
48
+ export var useAnnotationHoverContext = function useAnnotationHoverContext() {
49
+ return useContext(AnnotationHoverStateContext);
50
+ };
51
+ export var useAnnotationHoverDispatch = function useAnnotationHoverDispatch() {
52
+ return useContext(AnnotationHoverDispatchContext);
53
+ };
@@ -152,9 +152,11 @@ export var AnnotationRangeProvider = function AnnotationRangeProvider(_ref) {
152
152
  });
153
153
  }, []);
154
154
  var setHoverTarget = useCallback(function (target) {
155
+ // the HoverComponent expects an element deeply nested inside media, these classes work with the current implementation
156
+ var mediaNode = target.querySelector('.media-card-inline-player, .media-file-card-view');
155
157
  var range = document.createRange();
156
- range.setStartBefore(target);
157
- range.setEndAfter(target);
158
+ range.setStartBefore(mediaNode);
159
+ range.setEndAfter(mediaNode);
158
160
  dispatch({
159
161
  type: 'setHover',
160
162
  range: range
@@ -8,6 +8,7 @@ import { RendererContext as ActionsContext } from '../../RendererActionsContext'
8
8
  export var Mounter = /*#__PURE__*/React.memo(function (props) {
9
9
  var Component = props.component,
10
10
  range = props.range,
11
+ isWithinRange = props.isWithinRange,
11
12
  isAnnotationAllowed = props.isAnnotationAllowed,
12
13
  wrapperDOM = props.wrapperDOM,
13
14
  onCloseProps = props.onClose,
@@ -113,6 +114,7 @@ export var Mounter = /*#__PURE__*/React.memo(function (props) {
113
114
  }, [onCloseProps, removeDraftModeCallback, createAnalyticsEvent]);
114
115
  return /*#__PURE__*/React.createElement(Component, {
115
116
  range: range,
117
+ isWithinRange: isWithinRange,
116
118
  wrapperDOM: wrapperDOM.current,
117
119
  isAnnotationAllowed: isAnnotationAllowed,
118
120
  onClose: onCloseCallback,
@@ -2,6 +2,7 @@ import React, { useContext } from 'react';
2
2
  import { Mounter } from './mounter';
3
3
  import { RendererContext as ActionsContext } from '../../RendererActionsContext';
4
4
  import { useAnnotationRangeDispatch, useAnnotationRangeState } from '../contexts/AnnotationRangeContext';
5
+ import { useAnnotationHoverContext } from '../contexts/AnnotationHoverContext';
5
6
  export var RangeValidator = function RangeValidator(props) {
6
7
  var component = props.component,
7
8
  rendererRef = props.rendererRef,
@@ -14,11 +15,14 @@ export var RangeValidator = function RangeValidator(props) {
14
15
  var _useAnnotationRangeSt = useAnnotationRangeState(),
15
16
  range = _useAnnotationRangeSt.range,
16
17
  type = _useAnnotationRangeSt.type;
18
+ var _useAnnotationHoverCo = useAnnotationHoverContext(),
19
+ isWithinRange = _useAnnotationHoverCo.isWithinRange;
17
20
  if (!range || type !== 'hover') {
18
21
  return null;
19
22
  }
20
23
  var documentPosition = actions.getPositionFromRange(range);
21
24
  return /*#__PURE__*/React.createElement(Mounter, {
25
+ isWithinRange: isWithinRange,
22
26
  range: range,
23
27
  wrapperDOM: rendererRef,
24
28
  component: component,
@@ -7,6 +7,7 @@ import { useLoadAnnotations } from './hooks/use-load-annotations';
7
7
  import { useAnnotationStateByTypeEvent } from './hooks/use-events';
8
8
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
9
9
  import { AnnotationRangeProvider } from './contexts/AnnotationRangeContext';
10
+ import { AnnotationHoverContext } from './contexts/AnnotationHoverContext';
10
11
  var LoadAnnotations = /*#__PURE__*/React.memo(function (_ref) {
11
12
  var adfDocument = _ref.adfDocument;
12
13
  useLoadAnnotations({
@@ -33,14 +34,14 @@ export var AnnotationsWrapper = function AnnotationsWrapper(props) {
33
34
  value: inlineCommentAnnotationsState
34
35
  }, /*#__PURE__*/React.createElement(AnnotationRangeProvider, {
35
36
  allowCommentsOnMedia: (_annotationProvider$i = annotationProvider === null || annotationProvider === void 0 || (_annotationProvider$i2 = annotationProvider.inlineComment) === null || _annotationProvider$i2 === void 0 ? void 0 : _annotationProvider$i2.allowCommentsOnMedia) !== null && _annotationProvider$i !== void 0 ? _annotationProvider$i : false
36
- }, /*#__PURE__*/React.createElement(AnnotationsContextWrapper, {
37
+ }, /*#__PURE__*/React.createElement(AnnotationHoverContext, null, /*#__PURE__*/React.createElement(AnnotationsContextWrapper, {
37
38
  createAnalyticsEvent: createAnalyticsEvent,
38
39
  rendererRef: rendererRef
39
40
  }, /*#__PURE__*/React.createElement(LoadAnnotations, {
40
41
  adfDocument: adfDocument
41
42
  }), /*#__PURE__*/React.createElement(AnnotationView, {
42
43
  createAnalyticsEvent: createAnalyticsEvent
43
- }), children))));
44
+ }), children)))));
44
45
  };
45
46
  export { TextWithAnnotationDraft } from './draft';
46
47
  export { MarkElement as AnnotationMark } from './element';
@@ -49,7 +49,6 @@ export declare const mediaIdentifierMap: Map<string, Identifier>;
49
49
  export declare const getListOfIdentifiersFromDoc: (doc?: ADFEntity) => Identifier[];
50
50
  export declare class MediaCardView extends Component<MediaCardProps & {
51
51
  mediaClient?: MediaClient;
52
- setHoverTarget?: (target: HTMLElement) => void;
53
52
  }, State> {
54
53
  state: State;
55
54
  componentDidMount(): Promise<void>;
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface AnnotationHoverStateContext {
3
+ isWithinRange: boolean;
4
+ }
5
+ export interface AnnotationHoverDispatchContext {
6
+ cancelTimeout: () => void;
7
+ initiateTimeout: () => void;
8
+ setIsWithinRange: (isWithinRange: boolean) => void;
9
+ }
10
+ export declare const AnnotationHoverContext: ({ children, }: {
11
+ children?: ReactNode;
12
+ }) => JSX.Element;
13
+ export declare const useAnnotationHoverContext: () => AnnotationHoverStateContext;
14
+ export declare const useAnnotationHoverDispatch: () => AnnotationHoverDispatchContext;
@@ -5,6 +5,7 @@ import type { Position } from '../types';
5
5
  import type { CreateUIAnalyticsEvent } from '@atlaskit/analytics-next';
6
6
  type Props = {
7
7
  range: Range;
8
+ isWithinRange: boolean;
8
9
  component: React.ComponentType<InlineCommentHoverComponentProps>;
9
10
  wrapperDOM: React.RefObject<HTMLDivElement>;
10
11
  documentPosition: Position | false;
@@ -49,7 +49,6 @@ export declare const mediaIdentifierMap: Map<string, Identifier>;
49
49
  export declare const getListOfIdentifiersFromDoc: (doc?: ADFEntity) => Identifier[];
50
50
  export declare class MediaCardView extends Component<MediaCardProps & {
51
51
  mediaClient?: MediaClient;
52
- setHoverTarget?: (target: HTMLElement) => void;
53
52
  }, State> {
54
53
  state: State;
55
54
  componentDidMount(): Promise<void>;
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface AnnotationHoverStateContext {
3
+ isWithinRange: boolean;
4
+ }
5
+ export interface AnnotationHoverDispatchContext {
6
+ cancelTimeout: () => void;
7
+ initiateTimeout: () => void;
8
+ setIsWithinRange: (isWithinRange: boolean) => void;
9
+ }
10
+ export declare const AnnotationHoverContext: ({ children, }: {
11
+ children?: ReactNode;
12
+ }) => JSX.Element;
13
+ export declare const useAnnotationHoverContext: () => AnnotationHoverStateContext;
14
+ export declare const useAnnotationHoverDispatch: () => AnnotationHoverDispatchContext;
@@ -5,6 +5,7 @@ import type { Position } from '../types';
5
5
  import type { CreateUIAnalyticsEvent } from '@atlaskit/analytics-next';
6
6
  type Props = {
7
7
  range: Range;
8
+ isWithinRange: boolean;
8
9
  component: React.ComponentType<InlineCommentHoverComponentProps>;
9
10
  wrapperDOM: React.RefObject<HTMLDivElement>;
10
11
  documentPosition: Position | false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "109.18.0",
3
+ "version": "109.19.0",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -31,7 +31,7 @@
31
31
  "@atlaskit/analytics-next": "^9.2.0",
32
32
  "@atlaskit/button": "^17.12.0",
33
33
  "@atlaskit/code": "^15.1.0",
34
- "@atlaskit/editor-common": "^78.28.0",
34
+ "@atlaskit/editor-common": "^78.29.0",
35
35
  "@atlaskit/editor-json-transformer": "^8.10.0",
36
36
  "@atlaskit/editor-palette": "1.5.3",
37
37
  "@atlaskit/editor-prosemirror": "3.0.0",
@@ -71,7 +71,7 @@
71
71
  "@af/integration-testing": "*",
72
72
  "@af/visual-regression": "*",
73
73
  "@atlaskit/analytics-gas-types": "^5.1.0",
74
- "@atlaskit/css-reset": "^6.8.0",
74
+ "@atlaskit/css-reset": "^6.9.0",
75
75
  "@atlaskit/editor-test-helpers": "^18.20.0",
76
76
  "@atlaskit/link-provider": "^1.9.0",
77
77
  "@atlaskit/link-test-helpers": "^7.0.0",