@atlaskit/editor-plugin-card 0.14.6 → 0.14.7
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 +6 -0
- package/dist/cjs/common/hooks/useLinkUpgradeDiscoverability.js +7 -7
- package/dist/cjs/common/pulse/index.js +15 -0
- package/dist/cjs/nodeviews/inlineCardWithAwareness.js +11 -3
- package/dist/cjs/ui/LinkToolbarAppearance.js +9 -2
- package/dist/cjs/ui/ToolbarViewedEvent.js +2 -14
- package/dist/cjs/utils.js +13 -1
- package/dist/es2019/common/hooks/useLinkUpgradeDiscoverability.js +8 -7
- package/dist/es2019/common/pulse/index.js +17 -1
- package/dist/es2019/nodeviews/inlineCardWithAwareness.js +18 -8
- package/dist/es2019/ui/LinkToolbarAppearance.js +11 -2
- package/dist/es2019/ui/ToolbarViewedEvent.js +1 -13
- package/dist/es2019/utils.js +13 -1
- package/dist/esm/common/hooks/useLinkUpgradeDiscoverability.js +7 -7
- package/dist/esm/common/pulse/index.js +16 -1
- package/dist/esm/nodeviews/inlineCardWithAwareness.js +11 -3
- package/dist/esm/ui/LinkToolbarAppearance.js +9 -2
- package/dist/esm/ui/ToolbarViewedEvent.js +1 -13
- package/dist/esm/utils.js +12 -0
- package/dist/types/ui/ToolbarViewedEvent.d.ts +1 -1
- package/dist/types/utils.d.ts +2 -0
- package/dist/types-ts4.5/ui/ToolbarViewedEvent.d.ts +1 -1
- package/dist/types-ts4.5/utils.d.ts +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-card
|
|
2
2
|
|
|
3
|
+
## 0.14.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#56898](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/56898) [`32d7fcd969d5`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/32d7fcd969d5) - Analytics even 'pulse viewed' is added to inline card with awareness (behind a FF)
|
|
8
|
+
|
|
3
9
|
## 0.14.6
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -9,7 +9,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _localStorage = require("../local-storage");
|
|
11
11
|
var useLinkUpgradeDiscoverability = function useLinkUpgradeDiscoverability(_ref) {
|
|
12
|
-
var _cardContext$store, _pluginInjectionApi$
|
|
12
|
+
var _cardContext$store, _pluginInjectionApi$c;
|
|
13
13
|
var url = _ref.url,
|
|
14
14
|
linkPosition = _ref.linkPosition,
|
|
15
15
|
cardContext = _ref.cardContext,
|
|
@@ -20,6 +20,9 @@ var useLinkUpgradeDiscoverability = function useLinkUpgradeDiscoverability(_ref)
|
|
|
20
20
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
21
21
|
urlState = _useState2[0],
|
|
22
22
|
setUrlState = _useState2[1];
|
|
23
|
+
var _ref2 = (pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 || (_pluginInjectionApi$c = _pluginInjectionApi$c.sharedState) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.currentState()) || {},
|
|
24
|
+
overlayCandidatePosition = _ref2.overlayCandidatePosition,
|
|
25
|
+
inlineCardAwarenessCandidatePosition = _ref2.inlineCardAwarenessCandidatePosition;
|
|
23
26
|
(0, _react.useEffect)(function () {
|
|
24
27
|
var _cardContext$store2;
|
|
25
28
|
var unsubscribe = cardContext === null || cardContext === void 0 || (_cardContext$store2 = cardContext.store) === null || _cardContext$store2 === void 0 ? void 0 : _cardContext$store2.subscribe(function () {
|
|
@@ -38,13 +41,10 @@ var useLinkUpgradeDiscoverability = function useLinkUpgradeDiscoverability(_ref)
|
|
|
38
41
|
return isResolved && !!(cardContext !== null && cardContext !== void 0 && (_cardContext$extracto = cardContext.extractors) !== null && _cardContext$extracto !== void 0 && _cardContext$extracto.getPreview(url, 'web'));
|
|
39
42
|
}, [cardContext === null || cardContext === void 0 ? void 0 : cardContext.extractors, url, urlState === null || urlState === void 0 ? void 0 : urlState.status]);
|
|
40
43
|
var shouldShowLinkPulse = (0, _react.useMemo)(function () {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return isPulseEnabled && linkPosition === awarenessCandidatePosition && canBeUpgradedToEmbed;
|
|
44
|
-
}, [canBeUpgradedToEmbed, isPulseEnabled, linkPosition, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.sharedState]);
|
|
44
|
+
return isPulseEnabled && linkPosition === inlineCardAwarenessCandidatePosition && canBeUpgradedToEmbed;
|
|
45
|
+
}, [canBeUpgradedToEmbed, isPulseEnabled, linkPosition, inlineCardAwarenessCandidatePosition]);
|
|
45
46
|
var shouldShowLinkOverlay = (urlState === null || urlState === void 0 ? void 0 : urlState.status) === 'resolved' && isOverlayEnabled;
|
|
46
|
-
var
|
|
47
|
-
var isLinkMostRecentlyInserted = overlayCandidatePos === linkPosition;
|
|
47
|
+
var isLinkMostRecentlyInserted = overlayCandidatePosition === linkPosition;
|
|
48
48
|
var shouldShowToolbarPulse = (0, _react.useMemo)(function () {
|
|
49
49
|
return isPulseEnabled && !(0, _localStorage.isLocalStorageKeyDiscovered)(_localStorage.LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR) && canBeUpgradedToEmbed;
|
|
50
50
|
}, [canBeUpgradedToEmbed, isPulseEnabled]);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.DiscoveryPulse = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
9
10
|
var _linkingCommon = require("@atlaskit/linking-common");
|
|
10
11
|
var _localStorage = require("../local-storage");
|
|
11
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -18,6 +19,20 @@ var DiscoveryPulse = exports.DiscoveryPulse = function DiscoveryPulse(_ref) {
|
|
|
18
19
|
_ref$discoveryMode = _ref.discoveryMode,
|
|
19
20
|
discoveryMode = _ref$discoveryMode === void 0 ? 'iteration' : _ref$discoveryMode;
|
|
20
21
|
var discovered = isDiscovered || (0, _localStorage.isLocalStorageKeyDiscovered)(localStorageKey);
|
|
22
|
+
var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
|
|
23
|
+
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
24
|
+
(0, _react.useEffect)(function () {
|
|
25
|
+
if (!discovered) {
|
|
26
|
+
createAnalyticsEvent({
|
|
27
|
+
action: 'viewed',
|
|
28
|
+
actionSubject: 'pulse',
|
|
29
|
+
eventType: 'ui',
|
|
30
|
+
attributes: {
|
|
31
|
+
pulseIdentifier: localStorageKey
|
|
32
|
+
}
|
|
33
|
+
}).fire('media');
|
|
34
|
+
}
|
|
35
|
+
}, [createAnalyticsEvent, discovered, localStorageKey]);
|
|
21
36
|
var onDiscovery = (0, _react.useCallback)(function () {
|
|
22
37
|
if (!discovered) {
|
|
23
38
|
(0, _localStorage.markLocalStorageKeyDiscovered)(localStorageKey, localStorageKeyExpirationInMs);
|
|
@@ -9,6 +9,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _react2 = require("@emotion/react");
|
|
11
11
|
var _rafSchd = _interopRequireDefault(require("raf-schd"));
|
|
12
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
12
13
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
13
14
|
var _smartCard = require("@atlaskit/smart-card");
|
|
14
15
|
var _useLinkUpgradeDiscoverability = _interopRequireDefault(require("../common/hooks/useLinkUpgradeDiscoverability"));
|
|
@@ -16,6 +17,7 @@ var _localStorage = require("../common/local-storage");
|
|
|
16
17
|
var _pulse = require("../common/pulse");
|
|
17
18
|
var _actions = require("../pm-plugins/actions");
|
|
18
19
|
var _InlineCardOverlay = _interopRequireDefault(require("../ui/InlineCardOverlay"));
|
|
20
|
+
var _utils = require("../utils");
|
|
19
21
|
/** @jsx jsx */
|
|
20
22
|
|
|
21
23
|
// editor adds a standard line-height that is bigger than an inline smart link
|
|
@@ -27,6 +29,7 @@ var loaderWrapperStyles = (0, _react2.css)({
|
|
|
27
29
|
}
|
|
28
30
|
});
|
|
29
31
|
var InlineCard = function InlineCard(_ref) {
|
|
32
|
+
var _cardContext$value2;
|
|
30
33
|
var node = _ref.node,
|
|
31
34
|
cardContext = _ref.cardContext,
|
|
32
35
|
showServerActions = _ref.showServerActions,
|
|
@@ -148,15 +151,20 @@ var InlineCard = function InlineCard(_ref) {
|
|
|
148
151
|
}, innerCard) : innerCard;
|
|
149
152
|
}, [innerCard, isHovered, isSelected, isInserted, shouldShowLinkOverlay, url]);
|
|
150
153
|
var card = (0, _react.useMemo)(function () {
|
|
154
|
+
var _cardContext$value;
|
|
151
155
|
return (0, _react2.jsx)("span", {
|
|
152
156
|
css: shouldShowLinkPulse && loaderWrapperStyles,
|
|
153
157
|
className: "card"
|
|
154
|
-
}, shouldShowLinkPulse ? (0, _react2.jsx)(
|
|
158
|
+
}, shouldShowLinkPulse ? (0, _react2.jsx)(_analyticsNext.AnalyticsContext, {
|
|
159
|
+
data: {
|
|
160
|
+
attributes: (0, _utils.getResolvedAttributesFromStore)(url, 'inline', cardContext === null || cardContext === void 0 || (_cardContext$value = cardContext.value) === null || _cardContext$value === void 0 ? void 0 : _cardContext$value.store)
|
|
161
|
+
}
|
|
162
|
+
}, (0, _react2.jsx)(_pulse.DiscoveryPulse, {
|
|
155
163
|
localStorageKey: _localStorage.LOCAL_STORAGE_DISCOVERY_KEY_SMART_LINK,
|
|
156
164
|
localStorageKeyExpirationInMs: _localStorage.ONE_DAY_IN_MILLISECONDS,
|
|
157
165
|
discoveryMode: "start"
|
|
158
|
-
}, cardWithOverlay) : cardWithOverlay);
|
|
159
|
-
}, [shouldShowLinkPulse, cardWithOverlay]);
|
|
166
|
+
}, cardWithOverlay)) : cardWithOverlay);
|
|
167
|
+
}, [shouldShowLinkPulse, cardWithOverlay, url, cardContext === null || cardContext === void 0 || (_cardContext$value2 = cardContext.value) === null || _cardContext$value2 === void 0 ? void 0 : _cardContext$value2.store]);
|
|
160
168
|
// END: Awareness
|
|
161
169
|
|
|
162
170
|
// [WS-2307]: we only render card wrapped into a Provider when the value is ready,
|
|
@@ -15,6 +15,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
15
15
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
16
|
var _react = _interopRequireDefault(require("react"));
|
|
17
17
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
18
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
18
19
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
19
20
|
var _card = require("@atlaskit/editor-common/card");
|
|
20
21
|
var _messages = _interopRequireWildcard(require("@atlaskit/editor-common/messages"));
|
|
@@ -23,6 +24,7 @@ var _model = require("@atlaskit/editor-prosemirror/model");
|
|
|
23
24
|
var _localStorage = require("../common/local-storage");
|
|
24
25
|
var _pulse = require("../common/pulse");
|
|
25
26
|
var _toolbar = require("../toolbar");
|
|
27
|
+
var _utils2 = require("../utils");
|
|
26
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
30
|
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; }
|
|
@@ -127,9 +129,14 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
|
|
|
127
129
|
var status = url ? cardContext === null || cardContext === void 0 || (_cardContext$store2 = cardContext.store) === null || _cardContext$store2 === void 0 || (_cardContext$store2 = _cardContext$store2.getState()[url]) === null || _cardContext$store2 === void 0 ? void 0 : _cardContext$store2.status : '';
|
|
128
130
|
var embedEnabled = embedOption ? !embedOption.disabled : false;
|
|
129
131
|
if ((0, _toolbar.shouldRenderToolbarPulse)(embedEnabled, currentAppearance !== null && currentAppearance !== void 0 ? currentAppearance : '', status !== null && status !== void 0 ? status : '', showUpgradeDiscoverability)) {
|
|
130
|
-
|
|
132
|
+
var resolvedAnalyticsAttributes = (0, _utils2.getResolvedAttributesFromStore)(url || '', currentAppearance || null, cardContext === null || cardContext === void 0 ? void 0 : cardContext.store);
|
|
133
|
+
return /*#__PURE__*/_react.default.createElement(_analyticsNext.AnalyticsContext, {
|
|
134
|
+
data: {
|
|
135
|
+
attributes: _objectSpread({}, resolvedAnalyticsAttributes)
|
|
136
|
+
}
|
|
137
|
+
}, /*#__PURE__*/_react.default.createElement(_pulse.DiscoveryPulse, {
|
|
131
138
|
localStorageKey: _localStorage.LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR
|
|
132
|
-
}, LinkToolbarButtons);
|
|
139
|
+
}, LinkToolbarButtons));
|
|
133
140
|
}
|
|
134
141
|
return LinkToolbarButtons;
|
|
135
142
|
});
|
|
@@ -9,25 +9,13 @@ exports.ToolbarViewedEvent = void 0;
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
12
|
-
var
|
|
12
|
+
var _utils = require("../utils");
|
|
13
13
|
var _CardContextProvider = require("./CardContextProvider");
|
|
14
14
|
var _EditorAnalyticsContext = require("./EditorAnalyticsContext");
|
|
15
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
17
|
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; }
|
|
18
18
|
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) { (0, _defineProperty2.default)(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; }
|
|
19
|
-
var getResolvedAttributesFromStore = function getResolvedAttributesFromStore(url, display, store) {
|
|
20
|
-
if (!store) {
|
|
21
|
-
return {};
|
|
22
|
-
}
|
|
23
|
-
var urlState = store.getState()[url];
|
|
24
|
-
var displayCategory = display === 'url' ? 'link' : undefined;
|
|
25
|
-
return (0, _resolvedAttributes.getResolvedAttributes)({
|
|
26
|
-
url: url,
|
|
27
|
-
displayCategory: displayCategory
|
|
28
|
-
}, urlState === null || urlState === void 0 ? void 0 : urlState.details);
|
|
29
|
-
};
|
|
30
|
-
|
|
31
19
|
/**
|
|
32
20
|
* Handles firing the toolbar viewed event
|
|
33
21
|
*/
|
|
@@ -44,7 +32,7 @@ var ToolbarViewedEventBase = function ToolbarViewedEventBase(_ref) {
|
|
|
44
32
|
actionSubject: 'inlineDialog',
|
|
45
33
|
actionSubjectId: 'editLinkToolbar',
|
|
46
34
|
eventType: 'ui',
|
|
47
|
-
attributes: _objectSpread(_objectSpread({}, getResolvedAttributesFromStore(url, display, store)), {}, {
|
|
35
|
+
attributes: _objectSpread(_objectSpread({}, (0, _utils.getResolvedAttributesFromStore)(url, display, store)), {}, {
|
|
48
36
|
display: display
|
|
49
37
|
})
|
|
50
38
|
}).fire('media');
|
package/dist/cjs/utils.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.titleUrlPairFromNode = exports.selectedCardAppearance = exports.mergeCardInfo = exports.isEmbedSupportedAtPosition = exports.isBlockSupportedAtPosition = exports.findCardInfo = exports.displayInfoForCard = exports.appearanceForNodeType = void 0;
|
|
6
|
+
exports.titleUrlPairFromNode = exports.selectedCardAppearance = exports.mergeCardInfo = exports.isEmbedSupportedAtPosition = exports.isBlockSupportedAtPosition = exports.getResolvedAttributesFromStore = exports.findCardInfo = exports.displayInfoForCard = exports.appearanceForNodeType = void 0;
|
|
7
7
|
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
8
8
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
9
|
+
var _resolvedAttributes = require("@atlaskit/link-analytics/resolved-attributes");
|
|
9
10
|
var _pluginKey = require("./pm-plugins/plugin-key");
|
|
10
11
|
var appearanceForNodeType = exports.appearanceForNodeType = function appearanceForNodeType(spec) {
|
|
11
12
|
if (spec.name === 'inlineCard') {
|
|
@@ -63,4 +64,15 @@ var isEmbedSupportedAtPosition = exports.isEmbedSupportedAtPosition = function i
|
|
|
63
64
|
};
|
|
64
65
|
var isBlockSupportedAtPosition = exports.isBlockSupportedAtPosition = function isBlockSupportedAtPosition(currentNodePosition, editorState, currentAppearance) {
|
|
65
66
|
return isAppearanceSupportedInParent(currentNodePosition, editorState, _model.Fragment.from(editorState.schema.nodes.blockCard.createChecked({})), currentAppearance);
|
|
67
|
+
};
|
|
68
|
+
var getResolvedAttributesFromStore = exports.getResolvedAttributesFromStore = function getResolvedAttributesFromStore(url, display, store) {
|
|
69
|
+
if (!store) {
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
var urlState = store === null || store === void 0 ? void 0 : store.getState()[url];
|
|
73
|
+
var displayCategory = display === 'url' ? 'link' : undefined;
|
|
74
|
+
return (0, _resolvedAttributes.getResolvedAttributes)({
|
|
75
|
+
url: url,
|
|
76
|
+
displayCategory: displayCategory
|
|
77
|
+
}, urlState === null || urlState === void 0 ? void 0 : urlState.details);
|
|
66
78
|
};
|
|
@@ -8,8 +8,12 @@ const useLinkUpgradeDiscoverability = ({
|
|
|
8
8
|
isPulseEnabled,
|
|
9
9
|
isOverlayEnabled
|
|
10
10
|
}) => {
|
|
11
|
-
var _cardContext$store, _pluginInjectionApi$
|
|
11
|
+
var _cardContext$store, _pluginInjectionApi$c, _pluginInjectionApi$c2;
|
|
12
12
|
const [urlState, setUrlState] = useState(cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$store = cardContext.store) === null || _cardContext$store === void 0 ? void 0 : _cardContext$store.getState()[url]);
|
|
13
|
+
const {
|
|
14
|
+
overlayCandidatePosition,
|
|
15
|
+
inlineCardAwarenessCandidatePosition
|
|
16
|
+
} = (pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : (_pluginInjectionApi$c2 = _pluginInjectionApi$c.sharedState) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.currentState()) || {};
|
|
13
17
|
useEffect(() => {
|
|
14
18
|
var _cardContext$store2;
|
|
15
19
|
const unsubscribe = cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$store2 = cardContext.store) === null || _cardContext$store2 === void 0 ? void 0 : _cardContext$store2.subscribe(() => {
|
|
@@ -28,13 +32,10 @@ const useLinkUpgradeDiscoverability = ({
|
|
|
28
32
|
return isResolved && !!(cardContext !== null && cardContext !== void 0 && (_cardContext$extracto = cardContext.extractors) !== null && _cardContext$extracto !== void 0 && _cardContext$extracto.getPreview(url, 'web'));
|
|
29
33
|
}, [cardContext === null || cardContext === void 0 ? void 0 : cardContext.extractors, url, urlState === null || urlState === void 0 ? void 0 : urlState.status]);
|
|
30
34
|
const shouldShowLinkPulse = useMemo(() => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return isPulseEnabled && linkPosition === awarenessCandidatePosition && canBeUpgradedToEmbed;
|
|
34
|
-
}, [canBeUpgradedToEmbed, isPulseEnabled, linkPosition, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c4 = pluginInjectionApi.card) === null || _pluginInjectionApi$c4 === void 0 ? void 0 : _pluginInjectionApi$c4.sharedState]);
|
|
35
|
+
return isPulseEnabled && linkPosition === inlineCardAwarenessCandidatePosition && canBeUpgradedToEmbed;
|
|
36
|
+
}, [canBeUpgradedToEmbed, isPulseEnabled, linkPosition, inlineCardAwarenessCandidatePosition]);
|
|
35
37
|
const shouldShowLinkOverlay = (urlState === null || urlState === void 0 ? void 0 : urlState.status) === 'resolved' && isOverlayEnabled;
|
|
36
|
-
const
|
|
37
|
-
const isLinkMostRecentlyInserted = overlayCandidatePos === linkPosition;
|
|
38
|
+
const isLinkMostRecentlyInserted = overlayCandidatePosition === linkPosition;
|
|
38
39
|
const shouldShowToolbarPulse = useMemo(() => isPulseEnabled && !isLocalStorageKeyDiscovered(LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR) && canBeUpgradedToEmbed, [canBeUpgradedToEmbed, isPulseEnabled]);
|
|
39
40
|
return {
|
|
40
41
|
shouldShowToolbarPulse,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React, { useCallback } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect } from 'react';
|
|
2
|
+
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
2
3
|
import { Pulse } from '@atlaskit/linking-common';
|
|
3
4
|
import { isLocalStorageKeyDiscovered, markLocalStorageKeyDiscovered } from '../local-storage';
|
|
4
5
|
export const DiscoveryPulse = ({
|
|
@@ -9,6 +10,21 @@ export const DiscoveryPulse = ({
|
|
|
9
10
|
discoveryMode = 'iteration'
|
|
10
11
|
}) => {
|
|
11
12
|
const discovered = isDiscovered || isLocalStorageKeyDiscovered(localStorageKey);
|
|
13
|
+
const {
|
|
14
|
+
createAnalyticsEvent
|
|
15
|
+
} = useAnalyticsEvents();
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (!discovered) {
|
|
18
|
+
createAnalyticsEvent({
|
|
19
|
+
action: 'viewed',
|
|
20
|
+
actionSubject: 'pulse',
|
|
21
|
+
eventType: 'ui',
|
|
22
|
+
attributes: {
|
|
23
|
+
pulseIdentifier: localStorageKey
|
|
24
|
+
}
|
|
25
|
+
}).fire('media');
|
|
26
|
+
}
|
|
27
|
+
}, [createAnalyticsEvent, discovered, localStorageKey]);
|
|
12
28
|
const onDiscovery = useCallback(() => {
|
|
13
29
|
if (!discovered) {
|
|
14
30
|
markLocalStorageKeyDiscovered(localStorageKey, localStorageKeyExpirationInMs);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { memo, useCallback, useMemo, useState } from 'react';
|
|
3
3
|
import { css, jsx } from '@emotion/react';
|
|
4
4
|
import rafSchedule from 'raf-schd';
|
|
5
|
+
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
5
6
|
import { findOverflowScrollParent } from '@atlaskit/editor-common/ui';
|
|
6
7
|
import { Card as SmartCard } from '@atlaskit/smart-card';
|
|
7
8
|
import useLinkUpgradeDiscoverability from '../common/hooks/useLinkUpgradeDiscoverability';
|
|
@@ -9,6 +10,7 @@ import { isLocalStorageKeyDiscovered, LOCAL_STORAGE_DISCOVERY_KEY_SMART_LINK, LO
|
|
|
9
10
|
import { DiscoveryPulse } from '../common/pulse';
|
|
10
11
|
import { registerCard, registerRemoveOverlay } from '../pm-plugins/actions';
|
|
11
12
|
import InlineCardOverlay from '../ui/InlineCardOverlay';
|
|
13
|
+
import { getResolvedAttributesFromStore } from '../utils';
|
|
12
14
|
// editor adds a standard line-height that is bigger than an inline smart link
|
|
13
15
|
// due to that the link has a bit of white space around it, which doesn't look right when there is pulse around it
|
|
14
16
|
const loaderWrapperStyles = css({
|
|
@@ -29,6 +31,7 @@ const InlineCard = ({
|
|
|
29
31
|
pluginInjectionApi,
|
|
30
32
|
isSelected = false
|
|
31
33
|
}) => {
|
|
34
|
+
var _cardContext$value2;
|
|
32
35
|
const {
|
|
33
36
|
url,
|
|
34
37
|
data
|
|
@@ -126,14 +129,21 @@ const InlineCard = ({
|
|
|
126
129
|
onMouseLeave: () => setIsHovered(false),
|
|
127
130
|
url: url
|
|
128
131
|
}, innerCard) : innerCard, [innerCard, isHovered, isSelected, isInserted, shouldShowLinkOverlay, url]);
|
|
129
|
-
const card = useMemo(() =>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
132
|
+
const card = useMemo(() => {
|
|
133
|
+
var _cardContext$value;
|
|
134
|
+
return jsx("span", {
|
|
135
|
+
css: shouldShowLinkPulse && loaderWrapperStyles,
|
|
136
|
+
className: "card"
|
|
137
|
+
}, shouldShowLinkPulse ? jsx(AnalyticsContext, {
|
|
138
|
+
data: {
|
|
139
|
+
attributes: getResolvedAttributesFromStore(url, 'inline', cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$value = cardContext.value) === null || _cardContext$value === void 0 ? void 0 : _cardContext$value.store)
|
|
140
|
+
}
|
|
141
|
+
}, jsx(DiscoveryPulse, {
|
|
142
|
+
localStorageKey: LOCAL_STORAGE_DISCOVERY_KEY_SMART_LINK,
|
|
143
|
+
localStorageKeyExpirationInMs: ONE_DAY_IN_MILLISECONDS,
|
|
144
|
+
discoveryMode: "start"
|
|
145
|
+
}, cardWithOverlay)) : cardWithOverlay);
|
|
146
|
+
}, [shouldShowLinkPulse, cardWithOverlay, url, cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$value2 = cardContext.value) === null || _cardContext$value2 === void 0 ? void 0 : _cardContext$value2.store]);
|
|
137
147
|
// END: Awareness
|
|
138
148
|
|
|
139
149
|
// [WS-2307]: we only render card wrapped into a Provider when the value is ready,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
|
+
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
4
5
|
import { ACTION, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
5
6
|
import { commandWithMetadata, getButtonGroupOption, LinkToolbarButtonGroup } from '@atlaskit/editor-common/card';
|
|
6
7
|
import nodeNames, { cardMessages as messages } from '@atlaskit/editor-common/messages';
|
|
@@ -9,6 +10,7 @@ import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
|
9
10
|
import { LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR } from '../common/local-storage';
|
|
10
11
|
import { DiscoveryPulse } from '../common/pulse';
|
|
11
12
|
import { shouldRenderToolbarPulse } from '../toolbar';
|
|
13
|
+
import { getResolvedAttributesFromStore } from '../utils';
|
|
12
14
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
13
15
|
export class LinkToolbarAppearance extends React.Component {
|
|
14
16
|
constructor(...args) {
|
|
@@ -96,9 +98,16 @@ export class LinkToolbarAppearance extends React.Component {
|
|
|
96
98
|
const status = url ? cardContext === null || cardContext === void 0 ? void 0 : (_cardContext$store2 = cardContext.store) === null || _cardContext$store2 === void 0 ? void 0 : (_cardContext$store2$g = _cardContext$store2.getState()[url]) === null || _cardContext$store2$g === void 0 ? void 0 : _cardContext$store2$g.status : '';
|
|
97
99
|
const embedEnabled = embedOption ? !embedOption.disabled : false;
|
|
98
100
|
if (shouldRenderToolbarPulse(embedEnabled, currentAppearance !== null && currentAppearance !== void 0 ? currentAppearance : '', status !== null && status !== void 0 ? status : '', showUpgradeDiscoverability)) {
|
|
99
|
-
|
|
101
|
+
const resolvedAnalyticsAttributes = getResolvedAttributesFromStore(url || '', currentAppearance || null, cardContext === null || cardContext === void 0 ? void 0 : cardContext.store);
|
|
102
|
+
return /*#__PURE__*/React.createElement(AnalyticsContext, {
|
|
103
|
+
data: {
|
|
104
|
+
attributes: {
|
|
105
|
+
...resolvedAnalyticsAttributes
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}, /*#__PURE__*/React.createElement(DiscoveryPulse, {
|
|
100
109
|
localStorageKey: LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR
|
|
101
|
-
}, LinkToolbarButtons);
|
|
110
|
+
}, LinkToolbarButtons));
|
|
102
111
|
}
|
|
103
112
|
return LinkToolbarButtons;
|
|
104
113
|
});
|
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
import React, { useEffect } from 'react';
|
|
2
2
|
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
3
|
-
import {
|
|
3
|
+
import { getResolvedAttributesFromStore } from '../utils';
|
|
4
4
|
import { CardContextProvider } from './CardContextProvider';
|
|
5
5
|
import { EditorAnalyticsContext } from './EditorAnalyticsContext';
|
|
6
|
-
const getResolvedAttributesFromStore = (url, display, store) => {
|
|
7
|
-
if (!store) {
|
|
8
|
-
return {};
|
|
9
|
-
}
|
|
10
|
-
const urlState = store.getState()[url];
|
|
11
|
-
const displayCategory = display === 'url' ? 'link' : undefined;
|
|
12
|
-
return getResolvedAttributes({
|
|
13
|
-
url,
|
|
14
|
-
displayCategory
|
|
15
|
-
}, urlState === null || urlState === void 0 ? void 0 : urlState.details);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
6
|
/**
|
|
19
7
|
* Handles firing the toolbar viewed event
|
|
20
8
|
*/
|
package/dist/es2019/utils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
2
2
|
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
|
|
3
|
+
import { getResolvedAttributes } from '@atlaskit/link-analytics/resolved-attributes';
|
|
3
4
|
import { pluginKey } from './pm-plugins/plugin-key';
|
|
4
5
|
export const appearanceForNodeType = spec => {
|
|
5
6
|
if (spec.name === 'inlineCard') {
|
|
@@ -51,4 +52,15 @@ const isAppearanceSupportedInParent = (currentNodePosition, editorState, fragmen
|
|
|
51
52
|
return parent && parent.type.validContent(fragment);
|
|
52
53
|
};
|
|
53
54
|
export const isEmbedSupportedAtPosition = (currentNodePosition, editorState, currentAppearance) => isAppearanceSupportedInParent(currentNodePosition, editorState, Fragment.from(editorState.schema.nodes.embedCard.createChecked({})), currentAppearance);
|
|
54
|
-
export const isBlockSupportedAtPosition = (currentNodePosition, editorState, currentAppearance) => isAppearanceSupportedInParent(currentNodePosition, editorState, Fragment.from(editorState.schema.nodes.blockCard.createChecked({})), currentAppearance);
|
|
55
|
+
export const isBlockSupportedAtPosition = (currentNodePosition, editorState, currentAppearance) => isAppearanceSupportedInParent(currentNodePosition, editorState, Fragment.from(editorState.schema.nodes.blockCard.createChecked({})), currentAppearance);
|
|
56
|
+
export const getResolvedAttributesFromStore = (url, display, store) => {
|
|
57
|
+
if (!store) {
|
|
58
|
+
return {};
|
|
59
|
+
}
|
|
60
|
+
const urlState = store === null || store === void 0 ? void 0 : store.getState()[url];
|
|
61
|
+
const displayCategory = display === 'url' ? 'link' : undefined;
|
|
62
|
+
return getResolvedAttributes({
|
|
63
|
+
url,
|
|
64
|
+
displayCategory
|
|
65
|
+
}, urlState === null || urlState === void 0 ? void 0 : urlState.details);
|
|
66
|
+
};
|
|
@@ -2,7 +2,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
2
2
|
import { useEffect, useMemo, useState } from 'react';
|
|
3
3
|
import { isLocalStorageKeyDiscovered, LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR } from '../local-storage';
|
|
4
4
|
var useLinkUpgradeDiscoverability = function useLinkUpgradeDiscoverability(_ref) {
|
|
5
|
-
var _cardContext$store, _pluginInjectionApi$
|
|
5
|
+
var _cardContext$store, _pluginInjectionApi$c;
|
|
6
6
|
var url = _ref.url,
|
|
7
7
|
linkPosition = _ref.linkPosition,
|
|
8
8
|
cardContext = _ref.cardContext,
|
|
@@ -13,6 +13,9 @@ var useLinkUpgradeDiscoverability = function useLinkUpgradeDiscoverability(_ref)
|
|
|
13
13
|
_useState2 = _slicedToArray(_useState, 2),
|
|
14
14
|
urlState = _useState2[0],
|
|
15
15
|
setUrlState = _useState2[1];
|
|
16
|
+
var _ref2 = (pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 || (_pluginInjectionApi$c = _pluginInjectionApi$c.sharedState) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.currentState()) || {},
|
|
17
|
+
overlayCandidatePosition = _ref2.overlayCandidatePosition,
|
|
18
|
+
inlineCardAwarenessCandidatePosition = _ref2.inlineCardAwarenessCandidatePosition;
|
|
16
19
|
useEffect(function () {
|
|
17
20
|
var _cardContext$store2;
|
|
18
21
|
var unsubscribe = cardContext === null || cardContext === void 0 || (_cardContext$store2 = cardContext.store) === null || _cardContext$store2 === void 0 ? void 0 : _cardContext$store2.subscribe(function () {
|
|
@@ -31,13 +34,10 @@ var useLinkUpgradeDiscoverability = function useLinkUpgradeDiscoverability(_ref)
|
|
|
31
34
|
return isResolved && !!(cardContext !== null && cardContext !== void 0 && (_cardContext$extracto = cardContext.extractors) !== null && _cardContext$extracto !== void 0 && _cardContext$extracto.getPreview(url, 'web'));
|
|
32
35
|
}, [cardContext === null || cardContext === void 0 ? void 0 : cardContext.extractors, url, urlState === null || urlState === void 0 ? void 0 : urlState.status]);
|
|
33
36
|
var shouldShowLinkPulse = useMemo(function () {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return isPulseEnabled && linkPosition === awarenessCandidatePosition && canBeUpgradedToEmbed;
|
|
37
|
-
}, [canBeUpgradedToEmbed, isPulseEnabled, linkPosition, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.sharedState]);
|
|
37
|
+
return isPulseEnabled && linkPosition === inlineCardAwarenessCandidatePosition && canBeUpgradedToEmbed;
|
|
38
|
+
}, [canBeUpgradedToEmbed, isPulseEnabled, linkPosition, inlineCardAwarenessCandidatePosition]);
|
|
38
39
|
var shouldShowLinkOverlay = (urlState === null || urlState === void 0 ? void 0 : urlState.status) === 'resolved' && isOverlayEnabled;
|
|
39
|
-
var
|
|
40
|
-
var isLinkMostRecentlyInserted = overlayCandidatePos === linkPosition;
|
|
40
|
+
var isLinkMostRecentlyInserted = overlayCandidatePosition === linkPosition;
|
|
41
41
|
var shouldShowToolbarPulse = useMemo(function () {
|
|
42
42
|
return isPulseEnabled && !isLocalStorageKeyDiscovered(LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR) && canBeUpgradedToEmbed;
|
|
43
43
|
}, [canBeUpgradedToEmbed, isPulseEnabled]);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import React, { useCallback } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect } from 'react';
|
|
2
|
+
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
2
3
|
import { Pulse } from '@atlaskit/linking-common';
|
|
3
4
|
import { isLocalStorageKeyDiscovered, markLocalStorageKeyDiscovered } from '../local-storage';
|
|
4
5
|
export var DiscoveryPulse = function DiscoveryPulse(_ref) {
|
|
@@ -9,6 +10,20 @@ export var DiscoveryPulse = function DiscoveryPulse(_ref) {
|
|
|
9
10
|
_ref$discoveryMode = _ref.discoveryMode,
|
|
10
11
|
discoveryMode = _ref$discoveryMode === void 0 ? 'iteration' : _ref$discoveryMode;
|
|
11
12
|
var discovered = isDiscovered || isLocalStorageKeyDiscovered(localStorageKey);
|
|
13
|
+
var _useAnalyticsEvents = useAnalyticsEvents(),
|
|
14
|
+
createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
|
|
15
|
+
useEffect(function () {
|
|
16
|
+
if (!discovered) {
|
|
17
|
+
createAnalyticsEvent({
|
|
18
|
+
action: 'viewed',
|
|
19
|
+
actionSubject: 'pulse',
|
|
20
|
+
eventType: 'ui',
|
|
21
|
+
attributes: {
|
|
22
|
+
pulseIdentifier: localStorageKey
|
|
23
|
+
}
|
|
24
|
+
}).fire('media');
|
|
25
|
+
}
|
|
26
|
+
}, [createAnalyticsEvent, discovered, localStorageKey]);
|
|
12
27
|
var onDiscovery = useCallback(function () {
|
|
13
28
|
if (!discovered) {
|
|
14
29
|
markLocalStorageKeyDiscovered(localStorageKey, localStorageKeyExpirationInMs);
|
|
@@ -3,6 +3,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
3
3
|
import { memo, useCallback, useMemo, useState } from 'react';
|
|
4
4
|
import { css, jsx } from '@emotion/react';
|
|
5
5
|
import rafSchedule from 'raf-schd';
|
|
6
|
+
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
6
7
|
import { findOverflowScrollParent } from '@atlaskit/editor-common/ui';
|
|
7
8
|
import { Card as SmartCard } from '@atlaskit/smart-card';
|
|
8
9
|
import useLinkUpgradeDiscoverability from '../common/hooks/useLinkUpgradeDiscoverability';
|
|
@@ -10,6 +11,7 @@ import { isLocalStorageKeyDiscovered, LOCAL_STORAGE_DISCOVERY_KEY_SMART_LINK, LO
|
|
|
10
11
|
import { DiscoveryPulse } from '../common/pulse';
|
|
11
12
|
import { registerCard, registerRemoveOverlay } from '../pm-plugins/actions';
|
|
12
13
|
import InlineCardOverlay from '../ui/InlineCardOverlay';
|
|
14
|
+
import { getResolvedAttributesFromStore } from '../utils';
|
|
13
15
|
// editor adds a standard line-height that is bigger than an inline smart link
|
|
14
16
|
// due to that the link has a bit of white space around it, which doesn't look right when there is pulse around it
|
|
15
17
|
var loaderWrapperStyles = css({
|
|
@@ -19,6 +21,7 @@ var loaderWrapperStyles = css({
|
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
var InlineCard = function InlineCard(_ref) {
|
|
24
|
+
var _cardContext$value2;
|
|
22
25
|
var node = _ref.node,
|
|
23
26
|
cardContext = _ref.cardContext,
|
|
24
27
|
showServerActions = _ref.showServerActions,
|
|
@@ -140,15 +143,20 @@ var InlineCard = function InlineCard(_ref) {
|
|
|
140
143
|
}, innerCard) : innerCard;
|
|
141
144
|
}, [innerCard, isHovered, isSelected, isInserted, shouldShowLinkOverlay, url]);
|
|
142
145
|
var card = useMemo(function () {
|
|
146
|
+
var _cardContext$value;
|
|
143
147
|
return jsx("span", {
|
|
144
148
|
css: shouldShowLinkPulse && loaderWrapperStyles,
|
|
145
149
|
className: "card"
|
|
146
|
-
}, shouldShowLinkPulse ? jsx(
|
|
150
|
+
}, shouldShowLinkPulse ? jsx(AnalyticsContext, {
|
|
151
|
+
data: {
|
|
152
|
+
attributes: getResolvedAttributesFromStore(url, 'inline', cardContext === null || cardContext === void 0 || (_cardContext$value = cardContext.value) === null || _cardContext$value === void 0 ? void 0 : _cardContext$value.store)
|
|
153
|
+
}
|
|
154
|
+
}, jsx(DiscoveryPulse, {
|
|
147
155
|
localStorageKey: LOCAL_STORAGE_DISCOVERY_KEY_SMART_LINK,
|
|
148
156
|
localStorageKeyExpirationInMs: ONE_DAY_IN_MILLISECONDS,
|
|
149
157
|
discoveryMode: "start"
|
|
150
|
-
}, cardWithOverlay) : cardWithOverlay);
|
|
151
|
-
}, [shouldShowLinkPulse, cardWithOverlay]);
|
|
158
|
+
}, cardWithOverlay)) : cardWithOverlay);
|
|
159
|
+
}, [shouldShowLinkPulse, cardWithOverlay, url, cardContext === null || cardContext === void 0 || (_cardContext$value2 = cardContext.value) === null || _cardContext$value2 === void 0 ? void 0 : _cardContext$value2.store]);
|
|
152
160
|
// END: Awareness
|
|
153
161
|
|
|
154
162
|
// [WS-2307]: we only render card wrapped into a Provider when the value is ready,
|
|
@@ -11,6 +11,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
11
11
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
12
12
|
import React from 'react';
|
|
13
13
|
import PropTypes from 'prop-types';
|
|
14
|
+
import { AnalyticsContext } from '@atlaskit/analytics-next';
|
|
14
15
|
import { ACTION, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
15
16
|
import { commandWithMetadata, getButtonGroupOption, LinkToolbarButtonGroup } from '@atlaskit/editor-common/card';
|
|
16
17
|
import nodeNames, { cardMessages as messages } from '@atlaskit/editor-common/messages';
|
|
@@ -19,6 +20,7 @@ import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
|
19
20
|
import { LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR } from '../common/local-storage';
|
|
20
21
|
import { DiscoveryPulse } from '../common/pulse';
|
|
21
22
|
import { shouldRenderToolbarPulse } from '../toolbar';
|
|
23
|
+
import { getResolvedAttributesFromStore } from '../utils';
|
|
22
24
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
23
25
|
export var LinkToolbarAppearance = /*#__PURE__*/function (_React$Component) {
|
|
24
26
|
_inherits(LinkToolbarAppearance, _React$Component);
|
|
@@ -117,9 +119,14 @@ export var LinkToolbarAppearance = /*#__PURE__*/function (_React$Component) {
|
|
|
117
119
|
var status = url ? cardContext === null || cardContext === void 0 || (_cardContext$store2 = cardContext.store) === null || _cardContext$store2 === void 0 || (_cardContext$store2 = _cardContext$store2.getState()[url]) === null || _cardContext$store2 === void 0 ? void 0 : _cardContext$store2.status : '';
|
|
118
120
|
var embedEnabled = embedOption ? !embedOption.disabled : false;
|
|
119
121
|
if (shouldRenderToolbarPulse(embedEnabled, currentAppearance !== null && currentAppearance !== void 0 ? currentAppearance : '', status !== null && status !== void 0 ? status : '', showUpgradeDiscoverability)) {
|
|
120
|
-
|
|
122
|
+
var resolvedAnalyticsAttributes = getResolvedAttributesFromStore(url || '', currentAppearance || null, cardContext === null || cardContext === void 0 ? void 0 : cardContext.store);
|
|
123
|
+
return /*#__PURE__*/React.createElement(AnalyticsContext, {
|
|
124
|
+
data: {
|
|
125
|
+
attributes: _objectSpread({}, resolvedAnalyticsAttributes)
|
|
126
|
+
}
|
|
127
|
+
}, /*#__PURE__*/React.createElement(DiscoveryPulse, {
|
|
121
128
|
localStorageKey: LOCAL_STORAGE_DISCOVERY_KEY_TOOLBAR
|
|
122
|
-
}, LinkToolbarButtons);
|
|
129
|
+
}, LinkToolbarButtons));
|
|
123
130
|
}
|
|
124
131
|
return LinkToolbarButtons;
|
|
125
132
|
});
|
|
@@ -3,21 +3,9 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
3
3
|
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; }
|
|
4
4
|
import React, { useEffect } from 'react';
|
|
5
5
|
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
6
|
-
import {
|
|
6
|
+
import { getResolvedAttributesFromStore } from '../utils';
|
|
7
7
|
import { CardContextProvider } from './CardContextProvider';
|
|
8
8
|
import { EditorAnalyticsContext } from './EditorAnalyticsContext';
|
|
9
|
-
var getResolvedAttributesFromStore = function getResolvedAttributesFromStore(url, display, store) {
|
|
10
|
-
if (!store) {
|
|
11
|
-
return {};
|
|
12
|
-
}
|
|
13
|
-
var urlState = store.getState()[url];
|
|
14
|
-
var displayCategory = display === 'url' ? 'link' : undefined;
|
|
15
|
-
return getResolvedAttributes({
|
|
16
|
-
url: url,
|
|
17
|
-
displayCategory: displayCategory
|
|
18
|
-
}, urlState === null || urlState === void 0 ? void 0 : urlState.details);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
9
|
/**
|
|
22
10
|
* Handles firing the toolbar viewed event
|
|
23
11
|
*/
|
package/dist/esm/utils.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
2
2
|
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
|
|
3
|
+
import { getResolvedAttributes } from '@atlaskit/link-analytics/resolved-attributes';
|
|
3
4
|
import { pluginKey } from './pm-plugins/plugin-key';
|
|
4
5
|
export var appearanceForNodeType = function appearanceForNodeType(spec) {
|
|
5
6
|
if (spec.name === 'inlineCard') {
|
|
@@ -57,4 +58,15 @@ export var isEmbedSupportedAtPosition = function isEmbedSupportedAtPosition(curr
|
|
|
57
58
|
};
|
|
58
59
|
export var isBlockSupportedAtPosition = function isBlockSupportedAtPosition(currentNodePosition, editorState, currentAppearance) {
|
|
59
60
|
return isAppearanceSupportedInParent(currentNodePosition, editorState, Fragment.from(editorState.schema.nodes.blockCard.createChecked({})), currentAppearance);
|
|
61
|
+
};
|
|
62
|
+
export var getResolvedAttributesFromStore = function getResolvedAttributesFromStore(url, display, store) {
|
|
63
|
+
if (!store) {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
var urlState = store === null || store === void 0 ? void 0 : store.getState()[url];
|
|
67
|
+
var displayCategory = display === 'url' ? 'link' : undefined;
|
|
68
|
+
return getResolvedAttributes({
|
|
69
|
+
url: url,
|
|
70
|
+
displayCategory: displayCategory
|
|
71
|
+
}, urlState === null || urlState === void 0 ? void 0 : urlState.details);
|
|
60
72
|
};
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CardAppearance } from '@atlaskit/editor-common/provider-factory';
|
|
2
2
|
import type { Node, NodeType } from '@atlaskit/editor-prosemirror/model';
|
|
3
3
|
import type { EditorState } from '@atlaskit/editor-prosemirror/state';
|
|
4
|
+
import type { CardContext } from '@atlaskit/link-provider';
|
|
4
5
|
import type { CardInfo } from './types';
|
|
5
6
|
export declare const appearanceForNodeType: (spec: NodeType) => CardAppearance | undefined;
|
|
6
7
|
export declare const selectedCardAppearance: (state: EditorState) => CardAppearance | undefined;
|
|
@@ -19,3 +20,4 @@ export declare const displayInfoForCard: (node: Node, info?: CardInfo) => TitleU
|
|
|
19
20
|
export declare const findCardInfo: (state: EditorState) => CardInfo | undefined;
|
|
20
21
|
export declare const isEmbedSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
|
|
21
22
|
export declare const isBlockSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
|
|
23
|
+
export declare const getResolvedAttributesFromStore: (url: string, display: string | null, store?: CardContext['store']) => {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CardAppearance } from '@atlaskit/editor-common/provider-factory';
|
|
2
2
|
import type { Node, NodeType } from '@atlaskit/editor-prosemirror/model';
|
|
3
3
|
import type { EditorState } from '@atlaskit/editor-prosemirror/state';
|
|
4
|
+
import type { CardContext } from '@atlaskit/link-provider';
|
|
4
5
|
import type { CardInfo } from './types';
|
|
5
6
|
export declare const appearanceForNodeType: (spec: NodeType) => CardAppearance | undefined;
|
|
6
7
|
export declare const selectedCardAppearance: (state: EditorState) => CardAppearance | undefined;
|
|
@@ -19,3 +20,4 @@ export declare const displayInfoForCard: (node: Node, info?: CardInfo) => TitleU
|
|
|
19
20
|
export declare const findCardInfo: (state: EditorState) => CardInfo | undefined;
|
|
20
21
|
export declare const isEmbedSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
|
|
21
22
|
export declare const isBlockSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
|
|
23
|
+
export declare const getResolvedAttributesFromStore: (url: string, display: string | null, store?: CardContext['store']) => {};
|