@atlaskit/renderer 151.0.0 → 151.0.2
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.
- package/CHANGELOG.md +21 -0
- package/dist/cjs/react/nodes/blockCard.js +1 -2
- package/dist/cjs/react/nodes/extension-comments.js +10 -10
- package/dist/cjs/react/nodes/extension.js +47 -9
- package/dist/cjs/react/nodes/task-item-with-providers.js +2 -2
- package/dist/cjs/ui/Renderer/index.js +1 -1
- package/dist/es2019/react/nodes/blockCard.js +1 -2
- package/dist/es2019/react/nodes/extension-comments.js +3 -3
- package/dist/es2019/react/nodes/extension.js +44 -8
- package/dist/es2019/react/nodes/task-item-with-providers.js +1 -1
- package/dist/es2019/ui/Renderer/index.js +1 -1
- package/dist/esm/react/nodes/blockCard.js +1 -2
- package/dist/esm/react/nodes/extension-comments.js +3 -3
- package/dist/esm/react/nodes/extension.js +48 -10
- package/dist/esm/react/nodes/task-item-with-providers.js +1 -1
- package/dist/esm/ui/Renderer/index.js +1 -1
- package/dist/types/react/index.d.ts +2 -1
- package/dist/types/react/nodes/task-item-with-providers.d.ts +1 -1
- package/dist/types/ui/renderer-props.d.ts +2 -1
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/renderer
|
|
2
2
|
|
|
3
|
+
## 151.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`bc79027197d91`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/bc79027197d91) -
|
|
8
|
+
Clean up the platform_ssr_smartlink_cards feature gate, retaining SSR cards when enabled by the
|
|
9
|
+
consumer.
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
12
|
+
## 151.0.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [`0dacb94545d03`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0dacb94545d03) -
|
|
17
|
+
Behind cc_maui_annotations_on_extensions: fire the cc_maui_comments_on_charts_exp exposure only
|
|
18
|
+
where the chart Comment button can show. Adds an optional viewModeEditorToolbarItems UiConfig
|
|
19
|
+
hook, used by MAUI charts to show Comment in the view-mode toolbar (live pages), and a
|
|
20
|
+
getAddCommentPermission annotation plugin action, used to disable the chart Comment button without
|
|
21
|
+
comment permission. The full-page renderer checks extension comment creation on first hover or
|
|
22
|
+
focus instead of while rendering.
|
|
23
|
+
|
|
3
24
|
## 151.0.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -15,7 +15,6 @@ var _datasource = require("@atlaskit/editor-common/utils/datasource");
|
|
|
15
15
|
var _WidthProvider = require("@atlaskit/editor-common/WidthProvider");
|
|
16
16
|
var _editorSmartLinkDraggable = require("@atlaskit/editor-smart-link-draggable");
|
|
17
17
|
var _datasourceTableViewWithWrappers = require("@atlaskit/link-datasource/datasource-table-view-with-wrappers");
|
|
18
|
-
var _fg = require("@atlaskit/platform-feature-flags/fg");
|
|
19
18
|
var _lazy = require("@atlaskit/smart-card/card/lazy");
|
|
20
19
|
var _ssr = require("@atlaskit/smart-card/ssr");
|
|
21
20
|
var _consts = require("../../consts");
|
|
@@ -162,7 +161,7 @@ function BlockCard(props) {
|
|
|
162
161
|
});
|
|
163
162
|
}
|
|
164
163
|
var cardComponent;
|
|
165
|
-
if (smartLinks !== null && smartLinks !== void 0 && smartLinks.ssr && url
|
|
164
|
+
if (smartLinks !== null && smartLinks !== void 0 && smartLinks.ssr && url) {
|
|
166
165
|
cardComponent = (0, _react.jsx)(_ssr.CardSSR, (0, _extends2.default)({
|
|
167
166
|
appearance: "block",
|
|
168
167
|
platform: platform
|
|
@@ -12,9 +12,9 @@ var _runtime = require("@compiled/react/runtime");
|
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _annotation = require("@atlaskit/adf-schema/annotation");
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
15
|
+
var _inlineCommentEvents = require("@atlaskit/editor-common/analytics/types/inline-comment-events");
|
|
16
|
+
var _CommentBadgeNext = require("@atlaskit/editor-common/media-single/CommentBadgeNext");
|
|
17
|
+
var _emitter = require("@atlaskit/editor-common/types/emitter");
|
|
18
18
|
var _AnnotationManagerContext = require("../../ui/annotations/contexts/AnnotationManagerContext");
|
|
19
19
|
var _AnnotationRangeContext = require("../../ui/annotations/contexts/AnnotationRangeContext");
|
|
20
20
|
var _useInlineCommentSubscriber = require("../../ui/annotations/hooks/use-inline-comment-subscriber");
|
|
@@ -76,11 +76,11 @@ var ExtensionCommentsEnabled = function ExtensionCommentsEnabled(_ref) {
|
|
|
76
76
|
var onBlur = function onBlur() {
|
|
77
77
|
return setFocusedId(undefined);
|
|
78
78
|
};
|
|
79
|
-
updateSubscriber.on(
|
|
80
|
-
updateSubscriber.on(
|
|
79
|
+
updateSubscriber.on(_emitter.AnnotationUpdateEvent.SET_ANNOTATION_FOCUS, onFocus);
|
|
80
|
+
updateSubscriber.on(_emitter.AnnotationUpdateEvent.REMOVE_ANNOTATION_FOCUS, onBlur);
|
|
81
81
|
return function () {
|
|
82
|
-
updateSubscriber.off(
|
|
83
|
-
updateSubscriber.off(
|
|
82
|
+
updateSubscriber.off(_emitter.AnnotationUpdateEvent.SET_ANNOTATION_FOCUS, onFocus);
|
|
83
|
+
updateSubscriber.off(_emitter.AnnotationUpdateEvent.REMOVE_ANNOTATION_FOCUS, onBlur);
|
|
84
84
|
};
|
|
85
85
|
}, [updateSubscriber]);
|
|
86
86
|
var onClick = (0, _react.useCallback)(function (event) {
|
|
@@ -89,11 +89,11 @@ var ExtensionCommentsEnabled = function ExtensionCommentsEnabled(_ref) {
|
|
|
89
89
|
// Anchor the thread to this chart, not an icon inside the badge or a nested renderer.
|
|
90
90
|
var extension = event.currentTarget.closest('.ak-renderer-extension');
|
|
91
91
|
if (extension && activeIds.length) {
|
|
92
|
-
updateSubscriber === null || updateSubscriber === void 0 || updateSubscriber.emit(
|
|
92
|
+
updateSubscriber === null || updateSubscriber === void 0 || updateSubscriber.emit(_emitter.AnnotationUpdateEvent.ON_ANNOTATION_CLICK, {
|
|
93
93
|
annotationIds: activeIds,
|
|
94
94
|
eventTarget: extension,
|
|
95
95
|
eventTargetType: 'extension',
|
|
96
|
-
viewMethod:
|
|
96
|
+
viewMethod: _inlineCommentEvents.VIEW_METHOD.BADGE
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
}, [activeIds, updateSubscriber]);
|
|
@@ -121,7 +121,7 @@ var ExtensionCommentsEnabled = function ExtensionCommentsEnabled(_ref) {
|
|
|
121
121
|
});
|
|
122
122
|
}), enabled && activeIds.length > 0 && updateSubscriber && /*#__PURE__*/_react.default.createElement("div", {
|
|
123
123
|
className: (0, _runtime.ax)(["_kqswstnw _154iu2gc _1xi2u2gc"])
|
|
124
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
124
|
+
}, /*#__PURE__*/_react.default.createElement(_CommentBadgeNext.CommentBadgeNext, {
|
|
125
125
|
status: active ? 'active' : entered ? 'entered' : 'default',
|
|
126
126
|
onClick: onClick,
|
|
127
127
|
onMouseEnter: onMouseEnter,
|
|
@@ -9,6 +9,7 @@ exports.renderExtension = exports.default = void 0;
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
11
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
14
|
var _react2 = require("@emotion/react");
|
|
14
15
|
var _enums = require("@atlaskit/editor-common/analytics/types/enums");
|
|
@@ -212,35 +213,72 @@ var ExtensionWithAnnotations = function ExtensionWithAnnotations(props) {
|
|
|
212
213
|
return Boolean(props.extensionNode && (isBlockNodeSupported === null || isBlockNodeSupported === void 0 ? void 0 : isBlockNodeSupported(props.extensionNode)) === true);
|
|
213
214
|
}, [props.extensionNode, isBlockNodeSupported]);
|
|
214
215
|
var canCreateCommentOnBlockNode = providers === null || providers === void 0 || (_providers$inlineComm2 = providers.inlineComment) === null || _providers$inlineComm2 === void 0 ? void 0 : _providers$inlineComm2.canCreateCommentOnBlockNode;
|
|
215
|
-
var isCommentTarget = (0, _react.useMemo)(function () {
|
|
216
|
-
return Boolean(supportsComments && props.extensionNode && (!canCreateCommentOnBlockNode || canCreateCommentOnBlockNode(props.extensionNode)));
|
|
217
|
-
}, [supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
218
216
|
var isFullPageRenderer = props.rendererAppearance === 'full-page' || props.rendererAppearance === 'full-width';
|
|
217
|
+
// The creation policy may fire an experiment exposure. In the full-page renderer it is only
|
|
218
|
+
// checked once the user hovers or focuses the extension, where the comment target appears.
|
|
219
|
+
// Other renderers have no hover entry point, so they keep checking during render. Saved
|
|
220
|
+
// threads stay viewable through `supportsComments`.
|
|
221
|
+
// Only an allowed result is stored. A rejection is not cached because it can be temporary (for
|
|
222
|
+
// example before Statsig initializes), so the check runs again on the next hover or focus.
|
|
223
|
+
var _useState = (0, _react.useState)(),
|
|
224
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
225
|
+
allowedCommentNode = _useState2[0],
|
|
226
|
+
setAllowedCommentNode = _useState2[1];
|
|
227
|
+
var canCreateDuringRender = (0, _react.useMemo)(function () {
|
|
228
|
+
return !isFullPageRenderer && Boolean(supportsComments && props.extensionNode && (canCreateCommentOnBlockNode === null || canCreateCommentOnBlockNode === void 0 ? void 0 : canCreateCommentOnBlockNode(props.extensionNode)));
|
|
229
|
+
}, [isFullPageRenderer, supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
230
|
+
var isCommentTarget = Boolean(supportsComments && props.extensionNode && (!canCreateCommentOnBlockNode || canCreateDuringRender || allowedCommentNode === props.extensionNode));
|
|
231
|
+
var isCommentTargetRef = (0, _react.useRef)(isCommentTarget);
|
|
232
|
+
isCommentTargetRef.current = isCommentTarget;
|
|
233
|
+
var resolveCommentTarget = (0, _react.useCallback)(function (target) {
|
|
234
|
+
if (isCommentTargetRef.current) {
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
var node = props.extensionNode;
|
|
238
|
+
if (!supportsComments || !node || !canCreateCommentOnBlockNode || !canCreateCommentOnBlockNode(node)) {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
// The hover target is matched against this attribute before React re-renders, so set it
|
|
242
|
+
// now; the batched render below writes the same value.
|
|
243
|
+
target.dataset.inlineCommentsTarget = 'true';
|
|
244
|
+
isCommentTargetRef.current = true;
|
|
245
|
+
setAllowedCommentNode(node);
|
|
246
|
+
return true;
|
|
247
|
+
}, [supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
219
248
|
var onMouseEnter = (0, _react.useCallback)(function (event) {
|
|
249
|
+
if (!resolveCommentTarget(event.currentTarget)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
220
252
|
cancelTimeout();
|
|
221
253
|
if (event.buttons === 0) {
|
|
222
254
|
setHoverTarget === null || setHoverTarget === void 0 || setHoverTarget(event.currentTarget);
|
|
223
255
|
setIsWithinRange(true);
|
|
224
256
|
}
|
|
225
|
-
}, [cancelTimeout, setHoverTarget, setIsWithinRange]);
|
|
257
|
+
}, [cancelTimeout, resolveCommentTarget, setHoverTarget, setIsWithinRange]);
|
|
226
258
|
var onMouseLeave = (0, _react.useCallback)(function () {
|
|
227
|
-
|
|
259
|
+
if (isCommentTargetRef.current) {
|
|
260
|
+
initiateTimeout();
|
|
261
|
+
}
|
|
228
262
|
}, [initiateTimeout]);
|
|
229
263
|
var onFocus = (0, _react.useCallback)(function (event) {
|
|
230
264
|
if (event.currentTarget.contains(event.relatedTarget)) {
|
|
231
265
|
return;
|
|
232
266
|
}
|
|
267
|
+
if (!resolveCommentTarget(event.currentTarget)) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
233
270
|
cancelTimeout();
|
|
234
271
|
setHoverTarget === null || setHoverTarget === void 0 || setHoverTarget(event.currentTarget);
|
|
235
272
|
setIsWithinRange(true);
|
|
236
|
-
}, [cancelTimeout, setHoverTarget, setIsWithinRange]);
|
|
273
|
+
}, [cancelTimeout, resolveCommentTarget, setHoverTarget, setIsWithinRange]);
|
|
237
274
|
var onBlur = (0, _react.useCallback)(function (event) {
|
|
238
|
-
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
275
|
+
if (isCommentTargetRef.current && !event.currentTarget.contains(event.relatedTarget)) {
|
|
239
276
|
initiateTimeout();
|
|
240
277
|
}
|
|
241
278
|
}, [initiateTimeout]);
|
|
242
|
-
|
|
243
|
-
|
|
279
|
+
// Listen whenever comments are supported, so the first hover or focus can check creation.
|
|
280
|
+
var commentTargetOptions = supportsComments && isFullPageRenderer ? {
|
|
281
|
+
isCommentTarget: isCommentTarget,
|
|
244
282
|
onBlur: onBlur,
|
|
245
283
|
onFocus: onFocus,
|
|
246
284
|
onMouseEnter: onMouseEnter,
|
|
@@ -11,7 +11,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
11
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
13
|
var _react = _interopRequireDefault(require("react"));
|
|
14
|
-
var
|
|
14
|
+
var _resourcedTaskItem = _interopRequireDefault(require("@atlaskit/task-decision/resourced-task-item"));
|
|
15
15
|
var _excluded = ["objectAri", "isRenderer"];
|
|
16
16
|
function TaskItemWithProviders(props) {
|
|
17
17
|
var objectAri = props.objectAri,
|
|
@@ -59,7 +59,7 @@ function TaskItemWithProviders(props) {
|
|
|
59
59
|
var resolvedObjectId = resolvedContextProvider && resolvedContextProvider.objectId || objectAri;
|
|
60
60
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
61
61
|
"data-task-local-id": props.taskId || ''
|
|
62
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement(_resourcedTaskItem.default, (0, _extends2.default)({}, otherProps, {
|
|
63
63
|
objectAri: resolvedObjectId,
|
|
64
64
|
isRenderer: isRenderer
|
|
65
65
|
})));
|
|
@@ -79,7 +79,7 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
79
79
|
var TABLE_INFO_TIMEOUT = 10000;
|
|
80
80
|
var RENDER_EVENT_SAMPLE_RATE = 0.1;
|
|
81
81
|
var packageName = "@atlaskit/renderer";
|
|
82
|
-
var packageVersion = "
|
|
82
|
+
var packageVersion = "151.0.1";
|
|
83
83
|
var setAsQueryContainerStyles = (0, _react2.css)({
|
|
84
84
|
containerName: 'ak-renderer-wrapper',
|
|
85
85
|
containerType: 'inline-size'
|
|
@@ -13,7 +13,6 @@ import { canRenderDatasource } from '@atlaskit/editor-common/utils/datasource';
|
|
|
13
13
|
import { WidthConsumer } from '@atlaskit/editor-common/WidthProvider';
|
|
14
14
|
import { SmartLinkDraggable, SMART_LINK_DRAG_TYPES, SMART_LINK_APPEARANCE } from '@atlaskit/editor-smart-link-draggable';
|
|
15
15
|
import { DatasourceTableViewWithWrappers as DatasourceTableView } from '@atlaskit/link-datasource/datasource-table-view-with-wrappers';
|
|
16
|
-
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
17
16
|
import { Card } from '@atlaskit/smart-card/card/lazy';
|
|
18
17
|
import { CardSSR } from '@atlaskit/smart-card/ssr';
|
|
19
18
|
import { RendererCssClassName } from '../../consts';
|
|
@@ -151,7 +150,7 @@ export default function BlockCard(props) {
|
|
|
151
150
|
});
|
|
152
151
|
}
|
|
153
152
|
let cardComponent;
|
|
154
|
-
if (smartLinks !== null && smartLinks !== void 0 && smartLinks.ssr && url
|
|
153
|
+
if (smartLinks !== null && smartLinks !== void 0 && smartLinks.ssr && url) {
|
|
155
154
|
cardComponent = jsx(CardSSR, _extends({
|
|
156
155
|
appearance: "block",
|
|
157
156
|
platform: platform
|
|
@@ -3,9 +3,9 @@ import "./extension-comments.compiled.css";
|
|
|
3
3
|
import { ax, ix } from "@compiled/react/runtime";
|
|
4
4
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
5
5
|
import { AnnotationMarkStates, AnnotationTypes } from '@atlaskit/adf-schema/annotation';
|
|
6
|
-
import { VIEW_METHOD } from '@atlaskit/editor-common/analytics';
|
|
7
|
-
import { CommentBadgeNext } from '@atlaskit/editor-common/media-single';
|
|
8
|
-
import { AnnotationUpdateEvent } from '@atlaskit/editor-common/types';
|
|
6
|
+
import { VIEW_METHOD } from '@atlaskit/editor-common/analytics/types/inline-comment-events';
|
|
7
|
+
import { CommentBadgeNext } from '@atlaskit/editor-common/media-single/CommentBadgeNext';
|
|
8
|
+
import { AnnotationUpdateEvent } from '@atlaskit/editor-common/types/emitter';
|
|
9
9
|
import { useAnnotationManagerState } from '../../ui/annotations/contexts/AnnotationManagerContext';
|
|
10
10
|
import { useAnnotationRangeState } from '../../ui/annotations/contexts/AnnotationRangeContext';
|
|
11
11
|
import { useInlineCommentSubscriberContext } from '../../ui/annotations/hooks/use-inline-comment-subscriber';
|
|
@@ -4,7 +4,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
4
4
|
* @jsx jsx
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
|
|
7
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
8
8
|
|
|
9
9
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
10
10
|
import { jsx, css } from '@emotion/react';
|
|
@@ -190,31 +190,67 @@ const ExtensionWithAnnotations = props => {
|
|
|
190
190
|
const isBlockNodeSupported = providers === null || providers === void 0 ? void 0 : (_providers$inlineComm = providers.inlineComment) === null || _providers$inlineComm === void 0 ? void 0 : _providers$inlineComm.isBlockNodeSupported;
|
|
191
191
|
const supportsComments = useMemo(() => Boolean(props.extensionNode && (isBlockNodeSupported === null || isBlockNodeSupported === void 0 ? void 0 : isBlockNodeSupported(props.extensionNode)) === true), [props.extensionNode, isBlockNodeSupported]);
|
|
192
192
|
const canCreateCommentOnBlockNode = providers === null || providers === void 0 ? void 0 : (_providers$inlineComm2 = providers.inlineComment) === null || _providers$inlineComm2 === void 0 ? void 0 : _providers$inlineComm2.canCreateCommentOnBlockNode;
|
|
193
|
-
const isCommentTarget = useMemo(() => Boolean(supportsComments && props.extensionNode && (!canCreateCommentOnBlockNode || canCreateCommentOnBlockNode(props.extensionNode))), [supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
194
193
|
const isFullPageRenderer = props.rendererAppearance === 'full-page' || props.rendererAppearance === 'full-width';
|
|
194
|
+
// The creation policy may fire an experiment exposure. In the full-page renderer it is only
|
|
195
|
+
// checked once the user hovers or focuses the extension, where the comment target appears.
|
|
196
|
+
// Other renderers have no hover entry point, so they keep checking during render. Saved
|
|
197
|
+
// threads stay viewable through `supportsComments`.
|
|
198
|
+
// Only an allowed result is stored. A rejection is not cached because it can be temporary (for
|
|
199
|
+
// example before Statsig initializes), so the check runs again on the next hover or focus.
|
|
200
|
+
const [allowedCommentNode, setAllowedCommentNode] = useState();
|
|
201
|
+
const canCreateDuringRender = useMemo(() => !isFullPageRenderer && Boolean(supportsComments && props.extensionNode && (canCreateCommentOnBlockNode === null || canCreateCommentOnBlockNode === void 0 ? void 0 : canCreateCommentOnBlockNode(props.extensionNode))), [isFullPageRenderer, supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
202
|
+
const isCommentTarget = Boolean(supportsComments && props.extensionNode && (!canCreateCommentOnBlockNode || canCreateDuringRender || allowedCommentNode === props.extensionNode));
|
|
203
|
+
const isCommentTargetRef = useRef(isCommentTarget);
|
|
204
|
+
isCommentTargetRef.current = isCommentTarget;
|
|
205
|
+
const resolveCommentTarget = useCallback(target => {
|
|
206
|
+
if (isCommentTargetRef.current) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
const node = props.extensionNode;
|
|
210
|
+
if (!supportsComments || !node || !canCreateCommentOnBlockNode || !canCreateCommentOnBlockNode(node)) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
// The hover target is matched against this attribute before React re-renders, so set it
|
|
214
|
+
// now; the batched render below writes the same value.
|
|
215
|
+
target.dataset.inlineCommentsTarget = 'true';
|
|
216
|
+
isCommentTargetRef.current = true;
|
|
217
|
+
setAllowedCommentNode(node);
|
|
218
|
+
return true;
|
|
219
|
+
}, [supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
195
220
|
const onMouseEnter = useCallback(event => {
|
|
221
|
+
if (!resolveCommentTarget(event.currentTarget)) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
196
224
|
cancelTimeout();
|
|
197
225
|
if (event.buttons === 0) {
|
|
198
226
|
setHoverTarget === null || setHoverTarget === void 0 ? void 0 : setHoverTarget(event.currentTarget);
|
|
199
227
|
setIsWithinRange(true);
|
|
200
228
|
}
|
|
201
|
-
}, [cancelTimeout, setHoverTarget, setIsWithinRange]);
|
|
202
|
-
const onMouseLeave = useCallback(() =>
|
|
229
|
+
}, [cancelTimeout, resolveCommentTarget, setHoverTarget, setIsWithinRange]);
|
|
230
|
+
const onMouseLeave = useCallback(() => {
|
|
231
|
+
if (isCommentTargetRef.current) {
|
|
232
|
+
initiateTimeout();
|
|
233
|
+
}
|
|
234
|
+
}, [initiateTimeout]);
|
|
203
235
|
const onFocus = useCallback(event => {
|
|
204
236
|
if (event.currentTarget.contains(event.relatedTarget)) {
|
|
205
237
|
return;
|
|
206
238
|
}
|
|
239
|
+
if (!resolveCommentTarget(event.currentTarget)) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
207
242
|
cancelTimeout();
|
|
208
243
|
setHoverTarget === null || setHoverTarget === void 0 ? void 0 : setHoverTarget(event.currentTarget);
|
|
209
244
|
setIsWithinRange(true);
|
|
210
|
-
}, [cancelTimeout, setHoverTarget, setIsWithinRange]);
|
|
245
|
+
}, [cancelTimeout, resolveCommentTarget, setHoverTarget, setIsWithinRange]);
|
|
211
246
|
const onBlur = useCallback(event => {
|
|
212
|
-
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
247
|
+
if (isCommentTargetRef.current && !event.currentTarget.contains(event.relatedTarget)) {
|
|
213
248
|
initiateTimeout();
|
|
214
249
|
}
|
|
215
250
|
}, [initiateTimeout]);
|
|
216
|
-
|
|
217
|
-
|
|
251
|
+
// Listen whenever comments are supported, so the first hover or focus can check creation.
|
|
252
|
+
const commentTargetOptions = supportsComments && isFullPageRenderer ? {
|
|
253
|
+
isCommentTarget,
|
|
218
254
|
onBlur,
|
|
219
255
|
onFocus,
|
|
220
256
|
onMouseEnter,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import ResourcedTaskItem from '@atlaskit/task-decision/resourced-task-item';
|
|
4
4
|
export default function TaskItemWithProviders(props) {
|
|
5
5
|
const {
|
|
6
6
|
objectAri,
|
|
@@ -64,7 +64,7 @@ export const DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
64
64
|
const TABLE_INFO_TIMEOUT = 10000;
|
|
65
65
|
const RENDER_EVENT_SAMPLE_RATE = 0.1;
|
|
66
66
|
const packageName = "@atlaskit/renderer";
|
|
67
|
-
const packageVersion = "
|
|
67
|
+
const packageVersion = "151.0.1";
|
|
68
68
|
const setAsQueryContainerStyles = css({
|
|
69
69
|
containerName: 'ak-renderer-wrapper',
|
|
70
70
|
containerType: 'inline-size'
|
|
@@ -13,7 +13,6 @@ import { canRenderDatasource } from '@atlaskit/editor-common/utils/datasource';
|
|
|
13
13
|
import { WidthConsumer } from '@atlaskit/editor-common/WidthProvider';
|
|
14
14
|
import { SmartLinkDraggable, SMART_LINK_DRAG_TYPES, SMART_LINK_APPEARANCE } from '@atlaskit/editor-smart-link-draggable';
|
|
15
15
|
import { DatasourceTableViewWithWrappers as DatasourceTableView } from '@atlaskit/link-datasource/datasource-table-view-with-wrappers';
|
|
16
|
-
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
17
16
|
import { Card } from '@atlaskit/smart-card/card/lazy';
|
|
18
17
|
import { CardSSR } from '@atlaskit/smart-card/ssr';
|
|
19
18
|
import { RendererCssClassName } from '../../consts';
|
|
@@ -154,7 +153,7 @@ export default function BlockCard(props) {
|
|
|
154
153
|
});
|
|
155
154
|
}
|
|
156
155
|
var cardComponent;
|
|
157
|
-
if (smartLinks !== null && smartLinks !== void 0 && smartLinks.ssr && url
|
|
156
|
+
if (smartLinks !== null && smartLinks !== void 0 && smartLinks.ssr && url) {
|
|
158
157
|
cardComponent = jsx(CardSSR, _extends({
|
|
159
158
|
appearance: "block",
|
|
160
159
|
platform: platform
|
|
@@ -4,9 +4,9 @@ import "./extension-comments.compiled.css";
|
|
|
4
4
|
import { ax, ix } from "@compiled/react/runtime";
|
|
5
5
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
6
|
import { AnnotationMarkStates, AnnotationTypes } from '@atlaskit/adf-schema/annotation';
|
|
7
|
-
import { VIEW_METHOD } from '@atlaskit/editor-common/analytics';
|
|
8
|
-
import { CommentBadgeNext } from '@atlaskit/editor-common/media-single';
|
|
9
|
-
import { AnnotationUpdateEvent } from '@atlaskit/editor-common/types';
|
|
7
|
+
import { VIEW_METHOD } from '@atlaskit/editor-common/analytics/types/inline-comment-events';
|
|
8
|
+
import { CommentBadgeNext } from '@atlaskit/editor-common/media-single/CommentBadgeNext';
|
|
9
|
+
import { AnnotationUpdateEvent } from '@atlaskit/editor-common/types/emitter';
|
|
10
10
|
import { useAnnotationManagerState } from '../../ui/annotations/contexts/AnnotationManagerContext';
|
|
11
11
|
import { useAnnotationRangeState } from '../../ui/annotations/contexts/AnnotationRangeContext';
|
|
12
12
|
import { useInlineCommentSubscriberContext } from '../../ui/annotations/hooks/use-inline-comment-subscriber';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
import _extends from "@babel/runtime/helpers/extends";
|
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
5
|
var _excluded = ["commentProps", "commentTargetOptions"];
|
|
5
6
|
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; }
|
|
6
7
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -9,7 +10,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
9
10
|
* @jsx jsx
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
|
-
import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
|
|
13
|
+
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
13
14
|
|
|
14
15
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
15
16
|
import { jsx, css } from '@emotion/react';
|
|
@@ -205,35 +206,72 @@ var ExtensionWithAnnotations = function ExtensionWithAnnotations(props) {
|
|
|
205
206
|
return Boolean(props.extensionNode && (isBlockNodeSupported === null || isBlockNodeSupported === void 0 ? void 0 : isBlockNodeSupported(props.extensionNode)) === true);
|
|
206
207
|
}, [props.extensionNode, isBlockNodeSupported]);
|
|
207
208
|
var canCreateCommentOnBlockNode = providers === null || providers === void 0 || (_providers$inlineComm2 = providers.inlineComment) === null || _providers$inlineComm2 === void 0 ? void 0 : _providers$inlineComm2.canCreateCommentOnBlockNode;
|
|
208
|
-
var isCommentTarget = useMemo(function () {
|
|
209
|
-
return Boolean(supportsComments && props.extensionNode && (!canCreateCommentOnBlockNode || canCreateCommentOnBlockNode(props.extensionNode)));
|
|
210
|
-
}, [supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
211
209
|
var isFullPageRenderer = props.rendererAppearance === 'full-page' || props.rendererAppearance === 'full-width';
|
|
210
|
+
// The creation policy may fire an experiment exposure. In the full-page renderer it is only
|
|
211
|
+
// checked once the user hovers or focuses the extension, where the comment target appears.
|
|
212
|
+
// Other renderers have no hover entry point, so they keep checking during render. Saved
|
|
213
|
+
// threads stay viewable through `supportsComments`.
|
|
214
|
+
// Only an allowed result is stored. A rejection is not cached because it can be temporary (for
|
|
215
|
+
// example before Statsig initializes), so the check runs again on the next hover or focus.
|
|
216
|
+
var _useState = useState(),
|
|
217
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
218
|
+
allowedCommentNode = _useState2[0],
|
|
219
|
+
setAllowedCommentNode = _useState2[1];
|
|
220
|
+
var canCreateDuringRender = useMemo(function () {
|
|
221
|
+
return !isFullPageRenderer && Boolean(supportsComments && props.extensionNode && (canCreateCommentOnBlockNode === null || canCreateCommentOnBlockNode === void 0 ? void 0 : canCreateCommentOnBlockNode(props.extensionNode)));
|
|
222
|
+
}, [isFullPageRenderer, supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
223
|
+
var isCommentTarget = Boolean(supportsComments && props.extensionNode && (!canCreateCommentOnBlockNode || canCreateDuringRender || allowedCommentNode === props.extensionNode));
|
|
224
|
+
var isCommentTargetRef = useRef(isCommentTarget);
|
|
225
|
+
isCommentTargetRef.current = isCommentTarget;
|
|
226
|
+
var resolveCommentTarget = useCallback(function (target) {
|
|
227
|
+
if (isCommentTargetRef.current) {
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
var node = props.extensionNode;
|
|
231
|
+
if (!supportsComments || !node || !canCreateCommentOnBlockNode || !canCreateCommentOnBlockNode(node)) {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
// The hover target is matched against this attribute before React re-renders, so set it
|
|
235
|
+
// now; the batched render below writes the same value.
|
|
236
|
+
target.dataset.inlineCommentsTarget = 'true';
|
|
237
|
+
isCommentTargetRef.current = true;
|
|
238
|
+
setAllowedCommentNode(node);
|
|
239
|
+
return true;
|
|
240
|
+
}, [supportsComments, props.extensionNode, canCreateCommentOnBlockNode]);
|
|
212
241
|
var onMouseEnter = useCallback(function (event) {
|
|
242
|
+
if (!resolveCommentTarget(event.currentTarget)) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
213
245
|
cancelTimeout();
|
|
214
246
|
if (event.buttons === 0) {
|
|
215
247
|
setHoverTarget === null || setHoverTarget === void 0 || setHoverTarget(event.currentTarget);
|
|
216
248
|
setIsWithinRange(true);
|
|
217
249
|
}
|
|
218
|
-
}, [cancelTimeout, setHoverTarget, setIsWithinRange]);
|
|
250
|
+
}, [cancelTimeout, resolveCommentTarget, setHoverTarget, setIsWithinRange]);
|
|
219
251
|
var onMouseLeave = useCallback(function () {
|
|
220
|
-
|
|
252
|
+
if (isCommentTargetRef.current) {
|
|
253
|
+
initiateTimeout();
|
|
254
|
+
}
|
|
221
255
|
}, [initiateTimeout]);
|
|
222
256
|
var onFocus = useCallback(function (event) {
|
|
223
257
|
if (event.currentTarget.contains(event.relatedTarget)) {
|
|
224
258
|
return;
|
|
225
259
|
}
|
|
260
|
+
if (!resolveCommentTarget(event.currentTarget)) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
226
263
|
cancelTimeout();
|
|
227
264
|
setHoverTarget === null || setHoverTarget === void 0 || setHoverTarget(event.currentTarget);
|
|
228
265
|
setIsWithinRange(true);
|
|
229
|
-
}, [cancelTimeout, setHoverTarget, setIsWithinRange]);
|
|
266
|
+
}, [cancelTimeout, resolveCommentTarget, setHoverTarget, setIsWithinRange]);
|
|
230
267
|
var onBlur = useCallback(function (event) {
|
|
231
|
-
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
268
|
+
if (isCommentTargetRef.current && !event.currentTarget.contains(event.relatedTarget)) {
|
|
232
269
|
initiateTimeout();
|
|
233
270
|
}
|
|
234
271
|
}, [initiateTimeout]);
|
|
235
|
-
|
|
236
|
-
|
|
272
|
+
// Listen whenever comments are supported, so the first hover or focus can check creation.
|
|
273
|
+
var commentTargetOptions = supportsComments && isFullPageRenderer ? {
|
|
274
|
+
isCommentTarget: isCommentTarget,
|
|
237
275
|
onBlur: onBlur,
|
|
238
276
|
onFocus: onFocus,
|
|
239
277
|
onMouseEnter: onMouseEnter,
|
|
@@ -5,7 +5,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
5
5
|
var _excluded = ["objectAri", "isRenderer"];
|
|
6
6
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import
|
|
8
|
+
import ResourcedTaskItem from '@atlaskit/task-decision/resourced-task-item';
|
|
9
9
|
export default function TaskItemWithProviders(props) {
|
|
10
10
|
var objectAri = props.objectAri,
|
|
11
11
|
isRenderer = props.isRenderer,
|
|
@@ -69,7 +69,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
|
|
|
69
69
|
var TABLE_INFO_TIMEOUT = 10000;
|
|
70
70
|
var RENDER_EVENT_SAMPLE_RATE = 0.1;
|
|
71
71
|
var packageName = "@atlaskit/renderer";
|
|
72
|
-
var packageVersion = "
|
|
72
|
+
var packageVersion = "151.0.1";
|
|
73
73
|
var setAsQueryContainerStyles = css({
|
|
74
74
|
containerName: 'ak-renderer-wrapper',
|
|
75
75
|
containerType: 'inline-size'
|
|
@@ -5,7 +5,8 @@ import type { Parameters } from '@atlaskit/editor-common/extensions/extension-pa
|
|
|
5
5
|
import type { MentionNodeDataProvider } from '@atlaskit/editor-common/mention';
|
|
6
6
|
import type ProviderFactory from '@atlaskit/editor-common/provider-factory/provider-factory';
|
|
7
7
|
import type { Fragment, Mark, Node } from '@atlaskit/editor-prosemirror/model';
|
|
8
|
-
import type {
|
|
8
|
+
import type { EmojiResourceConfig } from '@atlaskit/emoji/emoji-resource';
|
|
9
|
+
import type { EmojiProviderLookupOrder } from '@atlaskit/emoji/types';
|
|
9
10
|
import type { AnalyticsEventPayload } from '../analytics/events';
|
|
10
11
|
import type { Serializer } from '../serializer';
|
|
11
12
|
import type { MediaOptions } from '../types/mediaOptions';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
3
|
import type { ContextIdentifierProvider } from '@atlaskit/editor-common/provider-factory/context-identifier-provider';
|
|
4
|
-
import type { ContentRef, TaskDecisionProvider } from '@atlaskit/task-decision';
|
|
4
|
+
import type { ContentRef, TaskDecisionProvider } from '@atlaskit/task-decision/types';
|
|
5
5
|
interface Props {
|
|
6
6
|
children?: ReactNode;
|
|
7
7
|
contentRef?: ContentRef;
|
|
@@ -10,7 +10,8 @@ import type { AnnotationProviders } from '@atlaskit/editor-common/types/annotati
|
|
|
10
10
|
import type { UnsupportedContentLevelsTracking } from '@atlaskit/editor-common/utils/get-unsupported-content-level-data';
|
|
11
11
|
import type { ADFStage } from '@atlaskit/editor-common/utils/validator';
|
|
12
12
|
import type { Schema } from '@atlaskit/editor-prosemirror/model';
|
|
13
|
-
import type {
|
|
13
|
+
import type { EmojiResourceConfig } from '@atlaskit/emoji/emoji-resource';
|
|
14
|
+
import type { EmojiProviderLookupOrder } from '@atlaskit/emoji/types';
|
|
14
15
|
import type { ReactSerializerInit, RendererContext, Serializer } from '../';
|
|
15
16
|
import type { TextHighlighter, ExtensionViewportSize } from '../react/types';
|
|
16
17
|
import type { RenderOutputStat } from '../render-document';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/renderer",
|
|
3
|
-
"version": "151.0.
|
|
3
|
+
"version": "151.0.2",
|
|
4
4
|
"description": "Renderer component",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"@atlaskit/media-state": "^4.0.0",
|
|
113
113
|
"@atlaskit/media-test-helpers": "^43.0.0",
|
|
114
114
|
"@atlaskit/mention": "^30.3.0",
|
|
115
|
-
"@atlaskit/modal-dialog": "^17.
|
|
115
|
+
"@atlaskit/modal-dialog": "^17.1.0",
|
|
116
116
|
"@atlaskit/navigation-system": "^11.3.0",
|
|
117
117
|
"@atlaskit/primitives": "^22.6.0",
|
|
118
118
|
"@atlaskit/profilecard": "^27.1.0",
|
|
@@ -184,9 +184,6 @@
|
|
|
184
184
|
"platform_ssr_smartlink_embeds": {
|
|
185
185
|
"type": "boolean"
|
|
186
186
|
},
|
|
187
|
-
"platform_ssr_smartlink_cards": {
|
|
188
|
-
"type": "boolean"
|
|
189
|
-
},
|
|
190
187
|
"platform_editor_custom_emoji_unicode_fallback": {
|
|
191
188
|
"type": "boolean",
|
|
192
189
|
"referenceOnly": true
|