@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.
Files changed (99) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/analytics/create-events-queue.js +55 -0
  3. package/dist/cjs/{pm-plugins/analytics → analytics}/events-from-tr.js +90 -81
  4. package/dist/cjs/{pm-plugins/analytics → analytics}/index.js +3 -3
  5. package/dist/cjs/analytics/types.js +24 -0
  6. package/dist/cjs/analytics/utils.js +134 -0
  7. package/dist/cjs/plugin.js +7 -4
  8. package/dist/cjs/pm-plugins/actions.js +1 -10
  9. package/dist/cjs/pm-plugins/doc.js +3 -0
  10. package/dist/cjs/pm-plugins/main.js +15 -13
  11. package/dist/cjs/pm-plugins/reducers.js +0 -7
  12. package/dist/cjs/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.js +52 -0
  13. package/dist/cjs/ui/EditorLinkingPlatformAnalytics/LinkEvents.js +132 -0
  14. package/dist/cjs/ui/EditorLinkingPlatformAnalytics/common.js +65 -0
  15. package/dist/cjs/ui/EditorLinkingPlatformAnalytics/index.js +54 -0
  16. package/dist/cjs/version.json +1 -1
  17. package/dist/es2019/analytics/create-events-queue.js +43 -0
  18. package/dist/es2019/{pm-plugins/analytics → analytics}/events-from-tr.js +82 -72
  19. package/dist/es2019/analytics/index.js +2 -0
  20. package/dist/es2019/analytics/types.js +17 -0
  21. package/dist/es2019/analytics/utils.js +118 -0
  22. package/dist/es2019/plugin.js +7 -6
  23. package/dist/es2019/pm-plugins/actions.js +0 -4
  24. package/dist/es2019/pm-plugins/doc.js +3 -0
  25. package/dist/es2019/pm-plugins/main.js +15 -15
  26. package/dist/es2019/pm-plugins/reducers.js +0 -8
  27. package/dist/es2019/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.js +46 -0
  28. package/dist/es2019/ui/EditorLinkingPlatformAnalytics/LinkEvents.js +127 -0
  29. package/dist/es2019/ui/EditorLinkingPlatformAnalytics/common.js +60 -0
  30. package/dist/es2019/ui/EditorLinkingPlatformAnalytics/index.js +30 -0
  31. package/dist/es2019/version.json +1 -1
  32. package/dist/esm/analytics/create-events-queue.js +48 -0
  33. package/dist/esm/{pm-plugins/analytics → analytics}/events-from-tr.js +90 -80
  34. package/dist/esm/analytics/index.js +2 -0
  35. package/dist/esm/analytics/types.js +17 -0
  36. package/dist/esm/analytics/utils.js +118 -0
  37. package/dist/esm/plugin.js +7 -4
  38. package/dist/esm/pm-plugins/actions.js +0 -8
  39. package/dist/esm/pm-plugins/doc.js +3 -0
  40. package/dist/esm/pm-plugins/main.js +15 -13
  41. package/dist/esm/pm-plugins/reducers.js +0 -7
  42. package/dist/esm/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.js +44 -0
  43. package/dist/esm/ui/EditorLinkingPlatformAnalytics/LinkEvents.js +125 -0
  44. package/dist/esm/ui/EditorLinkingPlatformAnalytics/common.js +55 -0
  45. package/dist/esm/ui/EditorLinkingPlatformAnalytics/index.js +47 -0
  46. package/dist/esm/version.json +1 -1
  47. package/dist/types/analytics/create-events-queue.d.ts +21 -0
  48. package/dist/types/analytics/events-from-tr.d.ts +19 -0
  49. package/dist/types/analytics/index.d.ts +2 -0
  50. package/dist/types/analytics/types.d.ts +66 -0
  51. package/dist/types/analytics/utils.d.ts +22 -0
  52. package/dist/types/pm-plugins/actions.d.ts +1 -2
  53. package/dist/types/pm-plugins/util/state.d.ts +0 -1
  54. package/dist/types/types.d.ts +4 -34
  55. package/dist/types/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.d.ts +6 -0
  56. package/dist/types/ui/EditorLinkingPlatformAnalytics/LinkEvents.d.ts +6 -0
  57. package/dist/types/ui/EditorLinkingPlatformAnalytics/common.d.ts +20 -0
  58. package/dist/types/ui/EditorLinkingPlatformAnalytics/index.d.ts +9 -0
  59. package/dist/types-ts4.5/analytics/create-events-queue.d.ts +21 -0
  60. package/dist/types-ts4.5/analytics/events-from-tr.d.ts +19 -0
  61. package/dist/types-ts4.5/analytics/index.d.ts +2 -0
  62. package/dist/types-ts4.5/analytics/types.d.ts +66 -0
  63. package/dist/types-ts4.5/analytics/utils.d.ts +22 -0
  64. package/dist/types-ts4.5/pm-plugins/actions.d.ts +1 -2
  65. package/dist/types-ts4.5/pm-plugins/util/state.d.ts +0 -1
  66. package/dist/types-ts4.5/types.d.ts +4 -34
  67. package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/DatasourceEvents.d.ts +6 -0
  68. package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/LinkEvents.d.ts +6 -0
  69. package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/common.d.ts +20 -0
  70. package/dist/types-ts4.5/ui/EditorLinkingPlatformAnalytics/index.d.ts +9 -0
  71. package/package.json +3 -3
  72. package/report.api.md +84 -8
  73. package/tmp/api-report-tmp.d.ts +81 -8
  74. package/dist/cjs/pm-plugins/analytics/create-analytics-queue.js +0 -48
  75. package/dist/cjs/pm-plugins/analytics/types.js +0 -5
  76. package/dist/cjs/pm-plugins/analytics/utils.js +0 -178
  77. package/dist/cjs/ui/EditorSmartCardEventsNext.js +0 -204
  78. package/dist/es2019/pm-plugins/analytics/create-analytics-queue.js +0 -38
  79. package/dist/es2019/pm-plugins/analytics/index.js +0 -2
  80. package/dist/es2019/pm-plugins/analytics/types.js +0 -1
  81. package/dist/es2019/pm-plugins/analytics/utils.js +0 -160
  82. package/dist/es2019/ui/EditorSmartCardEventsNext.js +0 -188
  83. package/dist/esm/pm-plugins/analytics/create-analytics-queue.js +0 -41
  84. package/dist/esm/pm-plugins/analytics/index.js +0 -2
  85. package/dist/esm/pm-plugins/analytics/types.js +0 -1
  86. package/dist/esm/pm-plugins/analytics/utils.js +0 -160
  87. package/dist/esm/ui/EditorSmartCardEventsNext.js +0 -192
  88. package/dist/types/pm-plugins/analytics/create-analytics-queue.d.ts +0 -10
  89. package/dist/types/pm-plugins/analytics/events-from-tr.d.ts +0 -17
  90. package/dist/types/pm-plugins/analytics/index.d.ts +0 -2
  91. package/dist/types/pm-plugins/analytics/types.d.ts +0 -12
  92. package/dist/types/pm-plugins/analytics/utils.d.ts +0 -32
  93. package/dist/types/ui/EditorSmartCardEventsNext.d.ts +0 -18
  94. package/dist/types-ts4.5/pm-plugins/analytics/create-analytics-queue.d.ts +0 -10
  95. package/dist/types-ts4.5/pm-plugins/analytics/events-from-tr.d.ts +0 -17
  96. package/dist/types-ts4.5/pm-plugins/analytics/index.d.ts +0 -2
  97. package/dist/types-ts4.5/pm-plugins/analytics/types.d.ts +0 -12
  98. package/dist/types-ts4.5/pm-plugins/analytics/utils.d.ts +0 -32
  99. 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
- var events = (0, _analytics.eventsFromTransaction)(tr, prevEditorState);
75
- analyticsQueue.push.apply(analyticsQueue, (0, _toConsumableArray2.default)(events));
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
- var nextState = (0, _reducers.default)(pluginStateWithUpdatedPos, meta);
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
- analyticsQueue.flush();
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
+ });
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-card",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "sideEffects": false
5
5
  }
@@ -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
+ };