@atlaskit/editor-plugin-card 0.3.3 → 0.3.5
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 +13 -0
- package/dist/cjs/analytics/create-events-queue.js +55 -0
- package/dist/cjs/{pm-plugins/analytics → analytics}/events-from-tr.js +90 -81
- package/dist/cjs/{pm-plugins/analytics → analytics}/index.js +3 -3
- package/dist/cjs/analytics/types.js +24 -0
- package/dist/cjs/analytics/utils.js +134 -0
- package/dist/cjs/plugin.js +7 -4
- package/dist/cjs/pm-plugins/actions.js +1 -10
- package/dist/cjs/pm-plugins/doc.js +3 -0
- package/dist/cjs/pm-plugins/main.js +15 -13
- package/dist/cjs/pm-plugins/reducers.js +0 -7
- package/dist/cjs/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.js +52 -0
- package/dist/cjs/ui/EditorLinkingPlatformAnalytics/LinkEvents.js +132 -0
- package/dist/cjs/ui/EditorLinkingPlatformAnalytics/common.js +65 -0
- package/dist/cjs/ui/EditorLinkingPlatformAnalytics/index.js +54 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/create-events-queue.js +43 -0
- package/dist/es2019/{pm-plugins/analytics → analytics}/events-from-tr.js +82 -72
- package/dist/es2019/analytics/index.js +2 -0
- package/dist/es2019/analytics/types.js +17 -0
- package/dist/es2019/analytics/utils.js +118 -0
- package/dist/es2019/plugin.js +7 -6
- package/dist/es2019/pm-plugins/actions.js +0 -4
- package/dist/es2019/pm-plugins/doc.js +3 -0
- package/dist/es2019/pm-plugins/main.js +15 -15
- package/dist/es2019/pm-plugins/reducers.js +0 -8
- package/dist/es2019/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.js +46 -0
- package/dist/es2019/ui/EditorLinkingPlatformAnalytics/LinkEvents.js +127 -0
- package/dist/es2019/ui/EditorLinkingPlatformAnalytics/common.js +60 -0
- package/dist/es2019/ui/EditorLinkingPlatformAnalytics/index.js +30 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/create-events-queue.js +48 -0
- package/dist/esm/{pm-plugins/analytics → analytics}/events-from-tr.js +90 -80
- package/dist/esm/analytics/index.js +2 -0
- package/dist/esm/analytics/types.js +17 -0
- package/dist/esm/analytics/utils.js +118 -0
- package/dist/esm/plugin.js +7 -4
- package/dist/esm/pm-plugins/actions.js +0 -8
- package/dist/esm/pm-plugins/doc.js +3 -0
- package/dist/esm/pm-plugins/main.js +15 -13
- package/dist/esm/pm-plugins/reducers.js +0 -7
- package/dist/esm/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.js +44 -0
- package/dist/esm/ui/EditorLinkingPlatformAnalytics/LinkEvents.js +125 -0
- package/dist/esm/ui/EditorLinkingPlatformAnalytics/common.js +55 -0
- package/dist/esm/ui/EditorLinkingPlatformAnalytics/index.js +47 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/create-events-queue.d.ts +21 -0
- package/dist/types/analytics/events-from-tr.d.ts +19 -0
- package/dist/types/analytics/index.d.ts +2 -0
- package/dist/types/analytics/types.d.ts +66 -0
- package/dist/types/analytics/utils.d.ts +22 -0
- package/dist/types/pm-plugins/actions.d.ts +1 -2
- package/dist/types/pm-plugins/util/state.d.ts +0 -1
- package/dist/types/types.d.ts +4 -34
- package/dist/types/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.d.ts +6 -0
- package/dist/types/ui/EditorLinkingPlatformAnalytics/LinkEvents.d.ts +6 -0
- package/dist/types/ui/EditorLinkingPlatformAnalytics/common.d.ts +20 -0
- package/dist/types/ui/EditorLinkingPlatformAnalytics/index.d.ts +9 -0
- package/dist/types-ts4.5/analytics/create-events-queue.d.ts +21 -0
- package/dist/types-ts4.5/analytics/events-from-tr.d.ts +19 -0
- package/dist/types-ts4.5/analytics/index.d.ts +2 -0
- package/dist/types-ts4.5/analytics/types.d.ts +66 -0
- package/dist/types-ts4.5/analytics/utils.d.ts +22 -0
- package/dist/types-ts4.5/pm-plugins/actions.d.ts +1 -2
- package/dist/types-ts4.5/pm-plugins/util/state.d.ts +0 -1
- package/dist/types-ts4.5/types.d.ts +4 -34
- package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.d.ts +6 -0
- package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/LinkEvents.d.ts +6 -0
- package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/common.d.ts +20 -0
- package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/index.d.ts +9 -0
- package/package.json +3 -3
- package/report.api.md +84 -8
- package/tmp/api-report-tmp.d.ts +81 -8
- package/dist/cjs/pm-plugins/analytics/create-analytics-queue.js +0 -48
- package/dist/cjs/pm-plugins/analytics/types.js +0 -5
- package/dist/cjs/pm-plugins/analytics/utils.js +0 -178
- package/dist/cjs/ui/EditorSmartCardEventsNext.js +0 -204
- package/dist/es2019/pm-plugins/analytics/create-analytics-queue.js +0 -38
- package/dist/es2019/pm-plugins/analytics/index.js +0 -2
- package/dist/es2019/pm-plugins/analytics/types.js +0 -1
- package/dist/es2019/pm-plugins/analytics/utils.js +0 -160
- package/dist/es2019/ui/EditorSmartCardEventsNext.js +0 -188
- package/dist/esm/pm-plugins/analytics/create-analytics-queue.js +0 -41
- package/dist/esm/pm-plugins/analytics/index.js +0 -2
- package/dist/esm/pm-plugins/analytics/types.js +0 -1
- package/dist/esm/pm-plugins/analytics/utils.js +0 -160
- package/dist/esm/ui/EditorSmartCardEventsNext.js +0 -192
- package/dist/types/pm-plugins/analytics/create-analytics-queue.d.ts +0 -10
- package/dist/types/pm-plugins/analytics/events-from-tr.d.ts +0 -17
- package/dist/types/pm-plugins/analytics/index.d.ts +0 -2
- package/dist/types/pm-plugins/analytics/types.d.ts +0 -12
- package/dist/types/pm-plugins/analytics/utils.d.ts +0 -32
- package/dist/types/ui/EditorSmartCardEventsNext.d.ts +0 -18
- package/dist/types-ts4.5/pm-plugins/analytics/create-analytics-queue.d.ts +0 -10
- package/dist/types-ts4.5/pm-plugins/analytics/events-from-tr.d.ts +0 -17
- package/dist/types-ts4.5/pm-plugins/analytics/index.d.ts +0 -2
- package/dist/types-ts4.5/pm-plugins/analytics/types.d.ts +0 -12
- package/dist/types-ts4.5/pm-plugins/analytics/utils.d.ts +0 -32
- package/dist/types-ts4.5/ui/EditorSmartCardEventsNext.d.ts +0 -18
|
@@ -19,26 +19,25 @@ var _styles = require("@atlaskit/editor-common/styles");
|
|
|
19
19
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
20
20
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
21
21
|
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
22
|
+
var _eventsFromTr = require("../analytics/events-from-tr");
|
|
22
23
|
var _blockCard = require("../nodeviews/blockCard");
|
|
23
24
|
var _datasource = require("../nodeviews/datasource");
|
|
24
25
|
var _embedCard = require("../nodeviews/embedCard");
|
|
25
26
|
var _inlineCard = require("../nodeviews/inlineCard");
|
|
26
27
|
var _actions = require("./actions");
|
|
27
|
-
var _analytics = require("./analytics");
|
|
28
28
|
var _pluginKey = require("./plugin-key");
|
|
29
29
|
var _reducers = _interopRequireDefault(require("./reducers"));
|
|
30
30
|
var _resolve = require("./util/resolve");
|
|
31
31
|
var _state2 = require("./util/state");
|
|
32
32
|
var createPlugin = function createPlugin(options, pluginInjectionApi) {
|
|
33
33
|
return function (pmPluginFactoryParams) {
|
|
34
|
-
var lpAnalyticsEventsNext = pmPluginFactoryParams.featureFlags.lpAnalyticsEventsNext;
|
|
35
|
-
var analyticsQueue = (0, _analytics.createAnalyticsQueue)(!!lpAnalyticsEventsNext);
|
|
36
34
|
var editorAppearance = options.editorAppearance,
|
|
37
35
|
platform = options.platform,
|
|
38
36
|
allowResizing = options.allowResizing,
|
|
39
37
|
useAlternativePreloader = options.useAlternativePreloader,
|
|
40
38
|
fullWidthMode = options.fullWidthMode,
|
|
41
|
-
showServerActions = options.showServerActions
|
|
39
|
+
showServerActions = options.showServerActions,
|
|
40
|
+
cardPluginEvents = options.cardPluginEvents;
|
|
42
41
|
var inlineCardViewProducer = (0, _reactNodeView.getInlineNodeViewProducer)({
|
|
43
42
|
pmPluginFactoryParams: pmPluginFactoryParams,
|
|
44
43
|
Component: _inlineCard.InlineCardNodeView,
|
|
@@ -56,7 +55,6 @@ var createPlugin = function createPlugin(options, pluginInjectionApi) {
|
|
|
56
55
|
cards: [],
|
|
57
56
|
showLinkingToolbar: false,
|
|
58
57
|
smartLinkEvents: undefined,
|
|
59
|
-
smartLinkEventsNext: undefined,
|
|
60
58
|
editorAppearance: editorAppearance,
|
|
61
59
|
showDatasourceModal: false,
|
|
62
60
|
datasourceModalType: undefined,
|
|
@@ -71,14 +69,12 @@ var createPlugin = function createPlugin(options, pluginInjectionApi) {
|
|
|
71
69
|
|
|
72
70
|
// apply any actions
|
|
73
71
|
var meta = tr.getMeta(_pluginKey.pluginKey);
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
if (cardPluginEvents) {
|
|
73
|
+
var events = (0, _eventsFromTr.eventsFromTransaction)(tr, prevEditorState);
|
|
74
|
+
cardPluginEvents.push.apply(cardPluginEvents, (0, _toConsumableArray2.default)(events));
|
|
75
|
+
}
|
|
76
76
|
if (meta) {
|
|
77
|
-
|
|
78
|
-
if (!pluginState.smartLinkEventsNext && nextState.smartLinkEventsNext) {
|
|
79
|
-
analyticsQueue.setCallbacks(nextState.smartLinkEventsNext);
|
|
80
|
-
}
|
|
81
|
-
return nextState;
|
|
77
|
+
return (0, _reducers.default)(pluginStateWithUpdatedPos, meta);
|
|
82
78
|
}
|
|
83
79
|
return pluginStateWithUpdatedPos;
|
|
84
80
|
}
|
|
@@ -146,7 +142,13 @@ var createPlugin = function createPlugin(options, pluginInjectionApi) {
|
|
|
146
142
|
invoke();
|
|
147
143
|
});
|
|
148
144
|
}
|
|
149
|
-
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* If there have been any events queued, flush them
|
|
148
|
+
* so subscribers can now be notified and dispatch
|
|
149
|
+
* analytics events
|
|
150
|
+
*/
|
|
151
|
+
cardPluginEvents === null || cardPluginEvents === void 0 ? void 0 : cardPluginEvents.flush();
|
|
150
152
|
},
|
|
151
153
|
destroy: function destroy() {
|
|
152
154
|
// Cancel any outstanding raf callbacks.
|
|
@@ -57,11 +57,6 @@ var registerEvents = function registerEvents(state, action) {
|
|
|
57
57
|
smartLinkEvents: action.smartLinkEvents
|
|
58
58
|
});
|
|
59
59
|
};
|
|
60
|
-
var registerEventsNext = function registerEventsNext(state, action) {
|
|
61
|
-
return _objectSpread(_objectSpread({}, state), {}, {
|
|
62
|
-
smartLinkEventsNext: action.smartLinkEvents
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
60
|
var setLinkToolbar = function setLinkToolbar(state, action) {
|
|
66
61
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
67
62
|
showLinkingToolbar: action.type === 'SHOW_LINK_TOOLBAR'
|
|
@@ -91,8 +86,6 @@ var _default = function _default(state, action) {
|
|
|
91
86
|
return register(state, action);
|
|
92
87
|
case 'REGISTER_EVENTS':
|
|
93
88
|
return registerEvents(state, action);
|
|
94
|
-
case 'REGISTER_EVENTS_NEXT':
|
|
95
|
-
return registerEventsNext(state, action);
|
|
96
89
|
case 'SET_DATASOURCE_TABLE_REF':
|
|
97
90
|
return setDatasourceTableRef(state, action);
|
|
98
91
|
case 'SET_CARD_LAYOUT':
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.DatasourceEventsBinding = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _types = require("../../analytics/types");
|
|
11
|
+
/**
|
|
12
|
+
* Subscribes to the events occuring in the card
|
|
13
|
+
* plugin and fires analytics events accordingly
|
|
14
|
+
*/
|
|
15
|
+
var DatasourceEventsBinding = function DatasourceEventsBinding(_ref) {
|
|
16
|
+
var cardPluginEvents = _ref.cardPluginEvents;
|
|
17
|
+
var eventHandlers = (0, _react.useMemo)(function () {
|
|
18
|
+
var _ref2;
|
|
19
|
+
return _ref2 = {}, (0, _defineProperty2.default)(_ref2, _types.EVENT.CREATED, function (metadata) {
|
|
20
|
+
// TODO Impl as part of https://product-fabric.atlassian.net/browse/EDM-7072
|
|
21
|
+
// eslint-disable-next-line no-console
|
|
22
|
+
console.log('CREATED', metadata.node, metadata.nodeContext);
|
|
23
|
+
}), (0, _defineProperty2.default)(_ref2, _types.EVENT.UPDATED, function (metadata) {
|
|
24
|
+
// TODO Impl as part of https://product-fabric.atlassian.net/browse/EDM-7072
|
|
25
|
+
// eslint-disable-next-line no-console
|
|
26
|
+
console.log('UPDATED', metadata.node, metadata.nodeContext);
|
|
27
|
+
}), (0, _defineProperty2.default)(_ref2, _types.EVENT.DELETED, function (metadata) {
|
|
28
|
+
// TODO Impl as part of https://product-fabric.atlassian.net/browse/EDM-7072
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.log('DELETED', metadata.node, metadata.nodeContext);
|
|
31
|
+
}), _ref2;
|
|
32
|
+
}, []);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Subscribe to datasource events
|
|
36
|
+
*/
|
|
37
|
+
(0, _react.useEffect)(function () {
|
|
38
|
+
var unsubscribe = cardPluginEvents.subscribe(function (_ref3) {
|
|
39
|
+
var event = _ref3.event,
|
|
40
|
+
subject = _ref3.subject,
|
|
41
|
+
data = _ref3.data;
|
|
42
|
+
if (subject === _types.EVENT_SUBJECT.DATASOURCE) {
|
|
43
|
+
eventHandlers[event](data);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return function () {
|
|
47
|
+
return unsubscribe();
|
|
48
|
+
};
|
|
49
|
+
}, [eventHandlers, cardPluginEvents]);
|
|
50
|
+
return null;
|
|
51
|
+
};
|
|
52
|
+
exports.DatasourceEventsBinding = DatasourceEventsBinding;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.LinkEventsBinding = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _linkAnalytics = require("@atlaskit/link-analytics");
|
|
12
|
+
var _types = require("../../analytics/types");
|
|
13
|
+
var _utils = require("../../analytics/utils");
|
|
14
|
+
var _common = require("./common");
|
|
15
|
+
var _excluded = ["node", "nodeContext"],
|
|
16
|
+
_excluded2 = ["node", "nodeContext", "previousDisplay"],
|
|
17
|
+
_excluded3 = ["node", "nodeContext"];
|
|
18
|
+
/**
|
|
19
|
+
* Set display category as `link` if not displaying the link as a smart card
|
|
20
|
+
*/
|
|
21
|
+
var displayCategoryFromDisplay = function displayCategoryFromDisplay(display) {
|
|
22
|
+
if (display === 'url') {
|
|
23
|
+
return 'link';
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Subscribes to the events occuring in the card
|
|
28
|
+
* plugin and fires analytics events accordingly
|
|
29
|
+
*/
|
|
30
|
+
var LinkEventsBinding = function LinkEventsBinding(_ref) {
|
|
31
|
+
var cardPluginEvents = _ref.cardPluginEvents;
|
|
32
|
+
/**
|
|
33
|
+
* These callbacks internally use window.requestIdleCallback/requestAnimationFrame
|
|
34
|
+
* to defer any heavy operations involving network
|
|
35
|
+
*
|
|
36
|
+
* The callbacks themselves should not be deferred, they should be called syncronously the moment
|
|
37
|
+
* the events take place.
|
|
38
|
+
*/
|
|
39
|
+
var _useSmartLinkLifecycl = (0, _linkAnalytics.useSmartLinkLifecycleAnalytics)(),
|
|
40
|
+
linkCreated = _useSmartLinkLifecycl.linkCreated,
|
|
41
|
+
linkUpdated = _useSmartLinkLifecycl.linkUpdated,
|
|
42
|
+
linkDeleted = _useSmartLinkLifecycl.linkDeleted;
|
|
43
|
+
var linkEvents = (0, _react.useMemo)(function () {
|
|
44
|
+
var _ref5;
|
|
45
|
+
return _ref5 = {}, (0, _defineProperty2.default)(_ref5, _types.EVENT.CREATED, function (_ref2) {
|
|
46
|
+
var node = _ref2.node,
|
|
47
|
+
nodeContext = _ref2.nodeContext,
|
|
48
|
+
metadata = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
|
|
49
|
+
var url = (0, _utils.getUrl)(node);
|
|
50
|
+
if (!url) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
var display = (0, _utils.appearanceForLink)(node);
|
|
54
|
+
var displayCategory = displayCategoryFromDisplay(display);
|
|
55
|
+
var sourceEvent = (0, _common.getSourceEventFromMetadata)(metadata);
|
|
56
|
+
var creationMethod = (0, _common.getMethod)(metadata);
|
|
57
|
+
linkCreated({
|
|
58
|
+
url: url,
|
|
59
|
+
displayCategory: displayCategory
|
|
60
|
+
}, sourceEvent, {
|
|
61
|
+
display: display,
|
|
62
|
+
nodeContext: nodeContext,
|
|
63
|
+
creationMethod: creationMethod
|
|
64
|
+
});
|
|
65
|
+
}), (0, _defineProperty2.default)(_ref5, _types.EVENT.UPDATED, function (_ref3) {
|
|
66
|
+
var node = _ref3.node,
|
|
67
|
+
nodeContext = _ref3.nodeContext,
|
|
68
|
+
previousDisplay = _ref3.previousDisplay,
|
|
69
|
+
metadata = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
|
|
70
|
+
var url = (0, _utils.getUrl)(node);
|
|
71
|
+
if (!url) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
var display = (0, _utils.appearanceForLink)(node);
|
|
75
|
+
var displayCategory = displayCategoryFromDisplay(display);
|
|
76
|
+
var sourceEvent = (0, _common.getSourceEventFromMetadata)(metadata);
|
|
77
|
+
var updateMethod = (0, _common.getMethod)(metadata);
|
|
78
|
+
var updateType = (0, _common.getUpdateType)(metadata);
|
|
79
|
+
linkUpdated({
|
|
80
|
+
url: url,
|
|
81
|
+
displayCategory: displayCategory
|
|
82
|
+
}, sourceEvent, {
|
|
83
|
+
display: display,
|
|
84
|
+
previousDisplay: previousDisplay,
|
|
85
|
+
nodeContext: nodeContext,
|
|
86
|
+
updateMethod: updateMethod,
|
|
87
|
+
updateType: updateType
|
|
88
|
+
});
|
|
89
|
+
}), (0, _defineProperty2.default)(_ref5, _types.EVENT.DELETED, function (_ref4) {
|
|
90
|
+
var node = _ref4.node,
|
|
91
|
+
nodeContext = _ref4.nodeContext,
|
|
92
|
+
metadata = (0, _objectWithoutProperties2.default)(_ref4, _excluded3);
|
|
93
|
+
var url = (0, _utils.getUrl)(node);
|
|
94
|
+
if (!url) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
var display = (0, _utils.appearanceForLink)(node);
|
|
98
|
+
var displayCategory = displayCategoryFromDisplay(display);
|
|
99
|
+
var sourceEvent = (0, _common.getSourceEventFromMetadata)(metadata);
|
|
100
|
+
var deleteMethod = (0, _common.getMethod)(metadata);
|
|
101
|
+
var deleteType = (0, _common.getDeleteType)(metadata);
|
|
102
|
+
linkDeleted({
|
|
103
|
+
url: url,
|
|
104
|
+
displayCategory: displayCategory
|
|
105
|
+
}, sourceEvent, {
|
|
106
|
+
display: display,
|
|
107
|
+
nodeContext: nodeContext,
|
|
108
|
+
deleteMethod: deleteMethod,
|
|
109
|
+
deleteType: deleteType
|
|
110
|
+
});
|
|
111
|
+
}), _ref5;
|
|
112
|
+
}, [linkCreated, linkUpdated, linkDeleted]);
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Subscribe to link events
|
|
116
|
+
*/
|
|
117
|
+
(0, _react.useEffect)(function () {
|
|
118
|
+
var unsubscribe = cardPluginEvents.subscribe(function (_ref6) {
|
|
119
|
+
var event = _ref6.event,
|
|
120
|
+
subject = _ref6.subject,
|
|
121
|
+
data = _ref6.data;
|
|
122
|
+
if (subject === _types.EVENT_SUBJECT.LINK) {
|
|
123
|
+
linkEvents[event](data);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
return function () {
|
|
127
|
+
return unsubscribe();
|
|
128
|
+
};
|
|
129
|
+
}, [linkEvents, cardPluginEvents]);
|
|
130
|
+
return null;
|
|
131
|
+
};
|
|
132
|
+
exports.LinkEventsBinding = LinkEventsBinding;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getUpdateType = exports.getSourceEventFromMetadata = exports.getMethod = exports.getDeleteType = void 0;
|
|
7
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
8
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
9
|
+
/**
|
|
10
|
+
* If the metadata is for a history event,
|
|
11
|
+
* returns undo/redo instead of instead of what fn(metadata) would have otherwise
|
|
12
|
+
* returned
|
|
13
|
+
*/
|
|
14
|
+
var withHistoryMethod = function withHistoryMethod(fn) {
|
|
15
|
+
return function (metadata) {
|
|
16
|
+
var isUndo = metadata.isUndo,
|
|
17
|
+
isRedo = metadata.isRedo;
|
|
18
|
+
if (isUndo) {
|
|
19
|
+
return 'undo';
|
|
20
|
+
}
|
|
21
|
+
if (isRedo) {
|
|
22
|
+
return 'redo';
|
|
23
|
+
}
|
|
24
|
+
return fn(metadata);
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
var getMethod = withHistoryMethod(function (_ref) {
|
|
28
|
+
var inputMethod = _ref.inputMethod;
|
|
29
|
+
switch (inputMethod) {
|
|
30
|
+
case _analytics.INPUT_METHOD.CLIPBOARD:
|
|
31
|
+
return 'editor_paste';
|
|
32
|
+
case _analytics.INPUT_METHOD.FLOATING_TB:
|
|
33
|
+
return 'editor_floatingToolbar';
|
|
34
|
+
case _analytics.INPUT_METHOD.AUTO_DETECT:
|
|
35
|
+
case _analytics.INPUT_METHOD.FORMATTING:
|
|
36
|
+
return 'editor_type';
|
|
37
|
+
default:
|
|
38
|
+
return 'unknown';
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
exports.getMethod = getMethod;
|
|
42
|
+
var getUpdateType = withHistoryMethod(function (_ref2) {
|
|
43
|
+
var action = _ref2.action;
|
|
44
|
+
switch (action) {
|
|
45
|
+
case _analytics.ACTION.CHANGED_TYPE:
|
|
46
|
+
return 'display_update';
|
|
47
|
+
case _analytics.ACTION.UPDATED:
|
|
48
|
+
return 'link_update';
|
|
49
|
+
default:
|
|
50
|
+
return 'unknown';
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
exports.getUpdateType = getUpdateType;
|
|
54
|
+
var getDeleteType = withHistoryMethod(function (_ref3) {
|
|
55
|
+
var action = _ref3.action;
|
|
56
|
+
if (action === _analytics.ACTION.UNLINK) {
|
|
57
|
+
return 'unlink';
|
|
58
|
+
}
|
|
59
|
+
return 'delete';
|
|
60
|
+
});
|
|
61
|
+
exports.getDeleteType = getDeleteType;
|
|
62
|
+
var getSourceEventFromMetadata = function getSourceEventFromMetadata(metadata) {
|
|
63
|
+
return metadata.sourceEvent instanceof _analyticsNext.UIAnalyticsEvent ? metadata.sourceEvent : null;
|
|
64
|
+
};
|
|
65
|
+
exports.getSourceEventFromMetadata = getSourceEventFromMetadata;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.EditorLinkingPlatformAnalytics = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
11
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
12
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
16
|
+
var _EditorAnalyticsContext = require("../EditorAnalyticsContext");
|
|
17
|
+
var _DatasourceEvents = require("./DatasourceEvents");
|
|
18
|
+
var _LinkEvents = require("./LinkEvents");
|
|
19
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
20
|
+
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; } }
|
|
21
|
+
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
22
|
+
var EditorLinkingPlatformAnalytics = /*#__PURE__*/function (_React$PureComponent) {
|
|
23
|
+
(0, _inherits2.default)(EditorLinkingPlatformAnalytics, _React$PureComponent);
|
|
24
|
+
var _super = _createSuper(EditorLinkingPlatformAnalytics);
|
|
25
|
+
function EditorLinkingPlatformAnalytics() {
|
|
26
|
+
(0, _classCallCheck2.default)(this, EditorLinkingPlatformAnalytics);
|
|
27
|
+
return _super.apply(this, arguments);
|
|
28
|
+
}
|
|
29
|
+
(0, _createClass2.default)(EditorLinkingPlatformAnalytics, [{
|
|
30
|
+
key: "render",
|
|
31
|
+
value: function render() {
|
|
32
|
+
var cardContext = this.context.contextAdapter.card;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The analytics hook needs to be able to communicate with the card context
|
|
36
|
+
* If we can't access it, don't mount the event bindings
|
|
37
|
+
* This effectively entirely disables all tracking behaviour
|
|
38
|
+
*/
|
|
39
|
+
if (!cardContext) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return /*#__PURE__*/_react.default.createElement(cardContext.Provider, {
|
|
43
|
+
value: cardContext.value
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_EditorAnalyticsContext.EditorAnalyticsContext, {
|
|
45
|
+
editorView: this.props.editorView
|
|
46
|
+
}, /*#__PURE__*/_react.default.createElement(_LinkEvents.LinkEventsBinding, this.props), /*#__PURE__*/_react.default.createElement(_DatasourceEvents.DatasourceEventsBinding, this.props)));
|
|
47
|
+
}
|
|
48
|
+
}]);
|
|
49
|
+
return EditorLinkingPlatformAnalytics;
|
|
50
|
+
}(_react.default.PureComponent);
|
|
51
|
+
exports.EditorLinkingPlatformAnalytics = EditorLinkingPlatformAnalytics;
|
|
52
|
+
(0, _defineProperty2.default)(EditorLinkingPlatformAnalytics, "contextTypes", {
|
|
53
|
+
contextAdapter: _propTypes.default.object
|
|
54
|
+
});
|
package/dist/cjs/version.json
CHANGED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple mechanism to defer event related callbacks
|
|
3
|
+
*
|
|
4
|
+
* Probably think twice whether your event should use this instead of
|
|
5
|
+
* editor's built-in `editor-plugin-analytics`
|
|
6
|
+
*
|
|
7
|
+
* Editor-Plugin-Analytics provides methods methods to dispatch events, and attach events into prosemiror transactions
|
|
8
|
+
* However we do not have access to the smart card context in prosemirror
|
|
9
|
+
*
|
|
10
|
+
* We are using this queue to relay events occurring in prosemirror (which does not have access to the react context)
|
|
11
|
+
* to be subscribed to elsewhere where the react context is available (contentComponent or otherwise) (smart card context)
|
|
12
|
+
* in order to be able to annotate events with additional attributes to events
|
|
13
|
+
*/
|
|
14
|
+
export const createEventsQueue = () => {
|
|
15
|
+
const queue = [];
|
|
16
|
+
const subscribers = new Set();
|
|
17
|
+
const subscribe = subscriber => {
|
|
18
|
+
subscribers.add(subscriber);
|
|
19
|
+
return () => {
|
|
20
|
+
subscribers.delete(subscriber);
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
const push = (...events) => {
|
|
24
|
+
queue.push(...events);
|
|
25
|
+
};
|
|
26
|
+
const flush = () => {
|
|
27
|
+
while (queue.length) {
|
|
28
|
+
const event = queue.shift();
|
|
29
|
+
if (event) {
|
|
30
|
+
subscribers.forEach(subscriber => {
|
|
31
|
+
subscriber(event);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const getSize = () => queue.length;
|
|
37
|
+
return {
|
|
38
|
+
push,
|
|
39
|
+
flush,
|
|
40
|
+
subscribe,
|
|
41
|
+
getSize
|
|
42
|
+
};
|
|
43
|
+
};
|