@atlaskit/editor-plugin-synced-block 5.3.11 → 5.3.12

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 (31) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/editor-commands/index.js +72 -7
  3. package/dist/cjs/pm-plugins/menu-and-toolbar-experiences.js +221 -81
  4. package/dist/cjs/syncedBlockPlugin.js +2 -2
  5. package/dist/cjs/types/index.js +5 -1
  6. package/dist/cjs/ui/CreateSyncedBlockDropdownItem.js +2 -1
  7. package/dist/cjs/ui/SyncedLocationDropdown.js +32 -6
  8. package/dist/cjs/ui/floating-toolbar.js +8 -4
  9. package/dist/es2019/editor-commands/index.js +72 -7
  10. package/dist/es2019/pm-plugins/menu-and-toolbar-experiences.js +206 -71
  11. package/dist/es2019/syncedBlockPlugin.js +1 -1
  12. package/dist/es2019/types/index.js +5 -1
  13. package/dist/es2019/ui/CreateSyncedBlockDropdownItem.js +2 -1
  14. package/dist/es2019/ui/SyncedLocationDropdown.js +30 -6
  15. package/dist/es2019/ui/floating-toolbar.js +7 -3
  16. package/dist/esm/editor-commands/index.js +72 -7
  17. package/dist/esm/pm-plugins/menu-and-toolbar-experiences.js +221 -81
  18. package/dist/esm/syncedBlockPlugin.js +2 -2
  19. package/dist/esm/types/index.js +5 -1
  20. package/dist/esm/ui/CreateSyncedBlockDropdownItem.js +2 -1
  21. package/dist/esm/ui/SyncedLocationDropdown.js +32 -6
  22. package/dist/esm/ui/floating-toolbar.js +8 -4
  23. package/dist/types/editor-commands/index.d.ts +3 -2
  24. package/dist/types/syncedBlockPluginType.d.ts +2 -1
  25. package/dist/types/types/index.d.ts +4 -0
  26. package/dist/types/ui/SyncedLocationDropdown.d.ts +4 -1
  27. package/dist/types-ts4.5/editor-commands/index.d.ts +3 -2
  28. package/dist/types-ts4.5/syncedBlockPluginType.d.ts +2 -1
  29. package/dist/types-ts4.5/types/index.d.ts +4 -0
  30. package/dist/types-ts4.5/ui/SyncedLocationDropdown.d.ts +4 -1
  31. package/package.json +7 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @atlaskit/editor-plugin-synced-block
2
2
 
3
+ ## 5.3.12
4
+
5
+ ### Patch Changes
6
+
7
+ - [`011b84236ffaa`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/011b84236ffaa) -
8
+ EDITOR-4175 add analytics events for the synced block toolbar buttons
9
+ - Updated dependencies
10
+
3
11
  ## 5.3.11
4
12
 
5
13
  ### Patch Changes
@@ -98,23 +98,36 @@ var createSyncedBlock = exports.createSyncedBlock = function createSyncedBlock(_
98
98
  // see filterTransaction for more details
99
99
  return tr;
100
100
  };
101
- var copySyncedBlockReferenceToClipboardEditorCommand = exports.copySyncedBlockReferenceToClipboardEditorCommand = function copySyncedBlockReferenceToClipboardEditorCommand(syncBlockStore, api) {
101
+ var copySyncedBlockReferenceToClipboardEditorCommand = exports.copySyncedBlockReferenceToClipboardEditorCommand = function copySyncedBlockReferenceToClipboardEditorCommand(syncBlockStore, inputMethod, api) {
102
102
  return function (_ref2) {
103
103
  var tr = _ref2.tr;
104
- if (copySyncedBlockReferenceToClipboardInternal(tr.doc.type.schema, tr.selection, syncBlockStore, api)) {
104
+ if (copySyncedBlockReferenceToClipboardInternal(tr.doc.type.schema, tr.selection, syncBlockStore, inputMethod, api)) {
105
105
  return tr;
106
106
  }
107
107
  return null;
108
108
  };
109
109
  };
110
- var copySyncedBlockReferenceToClipboard = exports.copySyncedBlockReferenceToClipboard = function copySyncedBlockReferenceToClipboard(syncBlockStore, api) {
110
+ var copySyncedBlockReferenceToClipboard = exports.copySyncedBlockReferenceToClipboard = function copySyncedBlockReferenceToClipboard(syncBlockStore, inputMethod, api) {
111
111
  return function (state, _dispatch, _view) {
112
- return copySyncedBlockReferenceToClipboardInternal(state.tr.doc.type.schema, state.tr.selection, syncBlockStore, api);
112
+ return copySyncedBlockReferenceToClipboardInternal(state.tr.doc.type.schema, state.tr.selection, syncBlockStore, inputMethod, api);
113
113
  };
114
114
  };
115
- var copySyncedBlockReferenceToClipboardInternal = function copySyncedBlockReferenceToClipboardInternal(schema, selection, syncBlockStore, api) {
115
+ var copySyncedBlockReferenceToClipboardInternal = function copySyncedBlockReferenceToClipboardInternal(schema, selection, syncBlockStore, inputMethod, api) {
116
116
  var syncBlockFindResult = (0, _utils2.findSyncBlockOrBodiedSyncBlock)(schema, selection);
117
117
  if (!syncBlockFindResult) {
118
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_1')) {
119
+ var _api$analytics;
120
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.fireAnalyticsEvent({
121
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL,
122
+ action: _analytics.ACTION.ERROR,
123
+ actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
124
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
125
+ attributes: {
126
+ error: 'No sync block found in selection',
127
+ inputMethod: inputMethod
128
+ }
129
+ });
130
+ }
118
131
  return false;
119
132
  }
120
133
  var isBodiedSyncBlock = (0, _utils2.isBodiedSyncBlockNode)(syncBlockFindResult.node, schema.nodes.bodiedSyncBlock);
@@ -127,12 +140,39 @@ var copySyncedBlockReferenceToClipboardInternal = function copySyncedBlockRefere
127
140
  resourceId: syncBlockStore.referenceManager.generateResourceIdForReference(syncBlockFindResult.node.attrs.resourceId)
128
141
  });
129
142
  if (!referenceSyncBlockNode) {
143
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_1')) {
144
+ var _api$analytics2;
145
+ api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.actions) === null || _api$analytics2 === void 0 || _api$analytics2.fireAnalyticsEvent({
146
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL,
147
+ action: _analytics.ACTION.ERROR,
148
+ actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
149
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
150
+ attributes: {
151
+ error: 'Failed to create reference sync block node',
152
+ resourceId: syncBlockFindResult.node.attrs.resourceId,
153
+ inputMethod: inputMethod
154
+ }
155
+ });
156
+ }
130
157
  return false;
131
158
  }
132
159
  } else {
133
160
  referenceSyncBlockNode = syncBlockFindResult.node;
134
161
  }
135
162
  if (!referenceSyncBlockNode) {
163
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_1')) {
164
+ var _api$analytics3;
165
+ api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 || (_api$analytics3 = _api$analytics3.actions) === null || _api$analytics3 === void 0 || _api$analytics3.fireAnalyticsEvent({
166
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL,
167
+ action: _analytics.ACTION.ERROR,
168
+ actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
169
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
170
+ attributes: {
171
+ error: 'No reference sync block node available',
172
+ inputMethod: inputMethod
173
+ }
174
+ });
175
+ }
136
176
  return false;
137
177
  }
138
178
  var domNode = (0, _copyButton.toDOM)(referenceSyncBlockNode, schema);
@@ -142,6 +182,19 @@ var copySyncedBlockReferenceToClipboardInternal = function copySyncedBlockRefere
142
182
  setTimeout(function () {
143
183
  api === null || api === void 0 || api.core.actions.execute(function (_ref3) {
144
184
  var tr = _ref3.tr;
185
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_1')) {
186
+ var _api$analytics4;
187
+ api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 || (_api$analytics4 = _api$analytics4.actions) === null || _api$analytics4 === void 0 || _api$analytics4.fireAnalyticsEvent({
188
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL,
189
+ action: _analytics.ACTION.COPIED,
190
+ actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
191
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
192
+ attributes: {
193
+ resourceId: referenceSyncBlockNode.attrs.resourceId,
194
+ inputMethod: inputMethod
195
+ }
196
+ });
197
+ }
145
198
  return tr.setMeta(_main.syncedBlockPluginKey, {
146
199
  activeFlag: {
147
200
  id: _types.FLAG_ID.SYNC_BLOCK_COPIED
@@ -161,11 +214,23 @@ var editSyncedBlockSource = exports.editSyncedBlockSource = function editSyncedB
161
214
  }
162
215
  var syncBlockURL = syncBlockStore.referenceManager.getSyncBlockURL(resourceId);
163
216
  if (syncBlockURL) {
217
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_1')) {
218
+ var _api$analytics5;
219
+ api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 || _api$analytics5.actions.fireAnalyticsEvent({
220
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL,
221
+ action: _analytics.ACTION.SYNCED_BLOCK_EDIT_SOURCE,
222
+ actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
223
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_SOURCE_URL,
224
+ attributes: {
225
+ resourceId: resourceId
226
+ }
227
+ });
228
+ }
164
229
  window.open(syncBlockURL, '_blank');
165
230
  } else {
166
- var _api$analytics;
231
+ var _api$analytics6;
167
232
  var tr = state.tr;
168
- api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent({
233
+ api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 || (_api$analytics6 = _api$analytics6.actions) === null || _api$analytics6 === void 0 || _api$analytics6.attachAnalyticsEvent({
169
234
  eventType: _analytics.EVENT_TYPE.OPERATIONAL,
170
235
  action: _analytics.ACTION.ERROR,
171
236
  actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
@@ -11,6 +11,7 @@ var _analytics = require("@atlaskit/editor-common/analytics");
11
11
  var _experiences = require("@atlaskit/editor-common/experiences");
12
12
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
13
13
  var _state = require("@atlaskit/editor-prosemirror/state");
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
15
  var _types = require("../types");
15
16
  var TIMEOUT_DURATION = 30000;
16
17
  var pluginKey = new _state.PluginKey('syncedBlockMenuAndToolbarExperience');
@@ -28,22 +29,76 @@ var getMenuAndToolbarExperiencesPlugin = exports.getMenuAndToolbarExperiencesPlu
28
29
  }
29
30
  return popupsTargetEl;
30
31
  };
31
- var createSourcePrimaryToolbarExperience = getCreateSourcePrimaryToolbarExperience({
32
- refs: refs,
33
- dispatchAnalyticsEvent: dispatchAnalyticsEvent
32
+ var createSourcePrimaryToolbarExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
33
+ action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
34
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.PRIMARY_TOOLBAR,
35
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
36
+ checks: [new _experiences.ExperienceCheckTimeout({
37
+ durationMs: TIMEOUT_DURATION
38
+ }), syncedBlockAddedToDomCheck(refs)]
34
39
  });
35
- var createSourceBlockMenuExperience = getCreateSourceBlockMenuExperience({
36
- refs: refs,
37
- dispatchAnalyticsEvent: dispatchAnalyticsEvent
40
+ var createSourceBlockMenuExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.MENU_ACTION, {
41
+ action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
42
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.BLOCK_MENU,
43
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
44
+ checks: [new _experiences.ExperienceCheckTimeout({
45
+ durationMs: TIMEOUT_DURATION
46
+ }), syncedBlockAddedToDomCheck(refs)]
38
47
  });
39
- var createSourceQuickInsertMenuExperience = getCreateSourceQuickInsertMenuExperience({
40
- refs: refs,
41
- dispatchAnalyticsEvent: dispatchAnalyticsEvent
48
+ var createSourceQuickInsertMenuExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.MENU_ACTION, {
49
+ action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
50
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.QUICK_INSERT,
51
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
52
+ checks: [new _experiences.ExperienceCheckTimeout({
53
+ durationMs: TIMEOUT_DURATION
54
+ }), syncedBlockAddedToDomCheck(refs)]
42
55
  });
43
- var deleteReferenceSyncedBlockExperience = getDeleteReferenceSyncedBlockToolbarExperience({
44
- refs: refs,
45
- dispatchAnalyticsEvent: dispatchAnalyticsEvent
56
+ var deleteReferenceSyncedBlockExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
57
+ action: _analytics.ACTION.REFERENCE_SYNCED_BLOCK_DELETE,
58
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
59
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
60
+ checks: [new _experiences.ExperienceCheckTimeout({
61
+ durationMs: TIMEOUT_DURATION
62
+ }), referenceSyncBlockRemovedFromDomCheck(refs)]
46
63
  });
64
+ var unsyncReferenceSyncedBlockExperience;
65
+ var unsyncSourceSyncedBlockExperience;
66
+ var deleteSourceSyncedBlockExperience;
67
+ var syncedLocationsExperience;
68
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_1')) {
69
+ unsyncReferenceSyncedBlockExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
70
+ action: _analytics.ACTION.REFERENCE_SYNCED_BLOCK_UNSYNC,
71
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
72
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
73
+ checks: [new _experiences.ExperienceCheckTimeout({
74
+ durationMs: TIMEOUT_DURATION
75
+ }), referenceSyncBlockRemovedFromDomCheck(refs)]
76
+ });
77
+ unsyncSourceSyncedBlockExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
78
+ action: _analytics.ACTION.SYNCED_BLOCK_UNSYNC,
79
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
80
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
81
+ checks: [new _experiences.ExperienceCheckTimeout({
82
+ durationMs: TIMEOUT_DURATION
83
+ }), syncBlockDeleteConfirmationModalAddedCheck(refs)]
84
+ });
85
+ deleteSourceSyncedBlockExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
86
+ action: _analytics.ACTION.SYNCED_BLOCK_DELETE,
87
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
88
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
89
+ checks: [new _experiences.ExperienceCheckTimeout({
90
+ durationMs: TIMEOUT_DURATION
91
+ }), syncBlockDeleteConfirmationModalAddedCheck(refs)]
92
+ });
93
+ syncedLocationsExperience = new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
94
+ action: _analytics.ACTION.SYNCED_BLOCK_VIEW_SYNCED_LOCATIONS,
95
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
96
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
97
+ checks: [new _experiences.ExperienceCheckTimeout({
98
+ durationMs: TIMEOUT_DURATION
99
+ }), syncedLocationsDropdownOpenedCheck(refs)]
100
+ });
101
+ }
47
102
  var unbindClickListener = (0, _bindEventListener.bind)(document, {
48
103
  type: 'click',
49
104
  listener: function listener(event) {
@@ -59,13 +114,24 @@ var getMenuAndToolbarExperiencesPlugin = exports.getMenuAndToolbarExperiencesPlu
59
114
  if (!isSyncedBlockButtonId(testId)) {
60
115
  return;
61
116
  }
117
+ if (button.disabled) {
118
+ return;
119
+ }
62
120
  handleButtonClick({
63
121
  testId: testId,
122
+ button: button,
64
123
  createSourcePrimaryToolbarExperience: createSourcePrimaryToolbarExperience,
65
124
  createSourceBlockMenuExperience: createSourceBlockMenuExperience,
66
125
  createSourceQuickInsertMenuExperience: createSourceQuickInsertMenuExperience,
67
- deleteReferenceSyncedBlockExperience: deleteReferenceSyncedBlockExperience
126
+ deleteReferenceSyncedBlockExperience: deleteReferenceSyncedBlockExperience,
127
+ unsyncReferenceSyncedBlockExperience: unsyncReferenceSyncedBlockExperience,
128
+ unsyncSourceSyncedBlockExperience: unsyncSourceSyncedBlockExperience,
129
+ deleteSourceSyncedBlockExperience: deleteSourceSyncedBlockExperience,
130
+ syncedLocationsExperience: syncedLocationsExperience
68
131
  });
132
+ },
133
+ options: {
134
+ capture: true
69
135
  }
70
136
  });
71
137
  var unbindKeydownListener = (0, _bindEventListener.bind)(document, {
@@ -96,6 +162,7 @@ var getMenuAndToolbarExperiencesPlugin = exports.getMenuAndToolbarExperiencesPlu
96
162
  editorViewEl = editorView.dom;
97
163
  return {
98
164
  destroy: function destroy() {
165
+ var _deleteSourceSyncedBl, _unsyncReferenceSynce, _unsyncSourceSyncedBl, _syncedLocationsExper;
99
166
  createSourcePrimaryToolbarExperience.abort({
100
167
  reason: 'editorDestroyed'
101
168
  });
@@ -108,6 +175,18 @@ var getMenuAndToolbarExperiencesPlugin = exports.getMenuAndToolbarExperiencesPlu
108
175
  deleteReferenceSyncedBlockExperience.abort({
109
176
  reason: 'editorDestroyed'
110
177
  });
178
+ (_deleteSourceSyncedBl = deleteSourceSyncedBlockExperience) === null || _deleteSourceSyncedBl === void 0 || _deleteSourceSyncedBl.abort({
179
+ reason: 'editorDestroyed'
180
+ });
181
+ (_unsyncReferenceSynce = unsyncReferenceSyncedBlockExperience) === null || _unsyncReferenceSynce === void 0 || _unsyncReferenceSynce.abort({
182
+ reason: 'editorDestroyed'
183
+ });
184
+ (_unsyncSourceSyncedBl = unsyncSourceSyncedBlockExperience) === null || _unsyncSourceSyncedBl === void 0 || _unsyncSourceSyncedBl.abort({
185
+ reason: 'editorDestroyed'
186
+ });
187
+ (_syncedLocationsExper = syncedLocationsExperience) === null || _syncedLocationsExper === void 0 || _syncedLocationsExper.abort({
188
+ reason: 'editorDestroyed'
189
+ });
111
190
  unbindClickListener();
112
191
  unbindKeydownListener();
113
192
  }
@@ -115,75 +194,63 @@ var getMenuAndToolbarExperiencesPlugin = exports.getMenuAndToolbarExperiencesPlu
115
194
  }
116
195
  });
117
196
  };
118
- var getCreateSourcePrimaryToolbarExperience = function getCreateSourcePrimaryToolbarExperience(_ref2) {
119
- var refs = _ref2.refs,
120
- dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent;
121
- return new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
122
- action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
123
- actionSubjectId: _analytics.ACTION_SUBJECT_ID.PRIMARY_TOOLBAR,
124
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
125
- checks: [new _experiences.ExperienceCheckTimeout({
126
- durationMs: TIMEOUT_DURATION
127
- }), syncedBlockAddedToDomCheck(refs)]
128
- });
129
- };
130
- var getCreateSourceBlockMenuExperience = function getCreateSourceBlockMenuExperience(_ref3) {
131
- var refs = _ref3.refs,
132
- dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent;
133
- return new _experiences.Experience(_experiences.EXPERIENCE_ID.MENU_ACTION, {
134
- action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
135
- actionSubjectId: _analytics.ACTION_SUBJECT_ID.BLOCK_MENU,
136
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
137
- checks: [new _experiences.ExperienceCheckTimeout({
138
- durationMs: TIMEOUT_DURATION
139
- }), syncedBlockAddedToDomCheck(refs)]
140
- });
141
- };
142
- var getCreateSourceQuickInsertMenuExperience = function getCreateSourceQuickInsertMenuExperience(_ref4) {
143
- var refs = _ref4.refs,
144
- dispatchAnalyticsEvent = _ref4.dispatchAnalyticsEvent;
145
- return new _experiences.Experience(_experiences.EXPERIENCE_ID.MENU_ACTION, {
146
- action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
147
- actionSubjectId: _analytics.ACTION_SUBJECT_ID.QUICK_INSERT,
148
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
149
- checks: [new _experiences.ExperienceCheckTimeout({
150
- durationMs: TIMEOUT_DURATION
151
- }), syncedBlockAddedToDomCheck(refs)]
152
- });
153
- };
154
- var getDeleteReferenceSyncedBlockToolbarExperience = function getDeleteReferenceSyncedBlockToolbarExperience(_ref5) {
155
- var refs = _ref5.refs,
156
- dispatchAnalyticsEvent = _ref5.dispatchAnalyticsEvent;
157
- return new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
158
- action: _analytics.ACTION.REFERENCE_SYNCED_BLOCK_DELETE,
159
- actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
160
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
161
- checks: [new _experiences.ExperienceCheckTimeout({
162
- durationMs: TIMEOUT_DURATION
163
- }), referenceSyncBlockRemovedFromDomCheck(refs)]
164
- });
165
- };
166
197
  var isSyncedBlockButtonId = function isSyncedBlockButtonId(value) {
167
198
  return !!value && syncedBlockButtonIds.has(value);
168
199
  };
169
- var handleButtonClick = function handleButtonClick(_ref6) {
170
- var testId = _ref6.testId,
171
- createSourcePrimaryToolbarExperience = _ref6.createSourcePrimaryToolbarExperience,
172
- createSourceBlockMenuExperience = _ref6.createSourceBlockMenuExperience,
173
- createSourceQuickInsertMenuExperience = _ref6.createSourceQuickInsertMenuExperience,
174
- deleteReferenceSyncedBlockExperience = _ref6.deleteReferenceSyncedBlockExperience;
200
+ var handleButtonClick = function handleButtonClick(_ref2) {
201
+ var testId = _ref2.testId,
202
+ button = _ref2.button,
203
+ createSourcePrimaryToolbarExperience = _ref2.createSourcePrimaryToolbarExperience,
204
+ createSourceBlockMenuExperience = _ref2.createSourceBlockMenuExperience,
205
+ createSourceQuickInsertMenuExperience = _ref2.createSourceQuickInsertMenuExperience,
206
+ deleteReferenceSyncedBlockExperience = _ref2.deleteReferenceSyncedBlockExperience,
207
+ unsyncReferenceSyncedBlockExperience = _ref2.unsyncReferenceSyncedBlockExperience,
208
+ unsyncSourceSyncedBlockExperience = _ref2.unsyncSourceSyncedBlockExperience,
209
+ deleteSourceSyncedBlockExperience = _ref2.deleteSourceSyncedBlockExperience,
210
+ syncedLocationsExperience = _ref2.syncedLocationsExperience;
175
211
  switch (testId) {
176
212
  case _types.SYNCED_BLOCK_BUTTON_TEST_ID.primaryToolbarCreate:
177
- createSourcePrimaryToolbarExperience.start();
213
+ createSourcePrimaryToolbarExperience.start({
214
+ forceRestart: true
215
+ });
178
216
  break;
179
217
  case _types.SYNCED_BLOCK_BUTTON_TEST_ID.blockMenuCreate:
180
- createSourceBlockMenuExperience.start();
218
+ createSourceBlockMenuExperience.start({
219
+ forceRestart: true
220
+ });
181
221
  break;
182
222
  case _types.SYNCED_BLOCK_BUTTON_TEST_ID.quickInsertCreate:
183
- createSourceQuickInsertMenuExperience.start();
223
+ createSourceQuickInsertMenuExperience.start({
224
+ forceRestart: true
225
+ });
184
226
  break;
185
227
  case _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceDelete:
186
- deleteReferenceSyncedBlockExperience.start();
228
+ deleteReferenceSyncedBlockExperience.start({
229
+ forceRestart: true
230
+ });
231
+ break;
232
+ case _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceUnsync:
233
+ unsyncReferenceSyncedBlockExperience === null || unsyncReferenceSyncedBlockExperience === void 0 || unsyncReferenceSyncedBlockExperience.start({
234
+ forceRestart: true
235
+ });
236
+ break;
237
+ case _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSourceUnsync:
238
+ unsyncSourceSyncedBlockExperience === null || unsyncSourceSyncedBlockExperience === void 0 || unsyncSourceSyncedBlockExperience.start({
239
+ forceRestart: true
240
+ });
241
+ break;
242
+ case _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSourceDelete:
243
+ deleteSourceSyncedBlockExperience === null || deleteSourceSyncedBlockExperience === void 0 || deleteSourceSyncedBlockExperience.start({
244
+ forceRestart: true
245
+ });
246
+ break;
247
+ case _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSyncedLocationsTrigger:
248
+ // Only track when opening the dropdown
249
+ if (button.getAttribute('aria-pressed') === 'false') {
250
+ syncedLocationsExperience === null || syncedLocationsExperience === void 0 || syncedLocationsExperience.start({
251
+ forceRestart: true
252
+ });
253
+ }
187
254
  break;
188
255
  default:
189
256
  {
@@ -209,8 +276,8 @@ var getTarget = function getTarget(containerElement) {
209
276
  };
210
277
  var syncedBlockAddedToDomCheck = function syncedBlockAddedToDomCheck(refs) {
211
278
  return new _experiences.ExperienceCheckDomMutation({
212
- onDomMutation: function onDomMutation(_ref7) {
213
- var mutations = _ref7.mutations;
279
+ onDomMutation: function onDomMutation(_ref3) {
280
+ var mutations = _ref3.mutations;
214
281
  if (mutations.some(isBodiedSyncBlockAddedInMutation)) {
215
282
  return {
216
283
  status: 'success'
@@ -228,9 +295,9 @@ var syncedBlockAddedToDomCheck = function syncedBlockAddedToDomCheck(refs) {
228
295
  }
229
296
  });
230
297
  };
231
- var isBodiedSyncBlockAddedInMutation = function isBodiedSyncBlockAddedInMutation(_ref8) {
232
- var type = _ref8.type,
233
- addedNodes = _ref8.addedNodes;
298
+ var isBodiedSyncBlockAddedInMutation = function isBodiedSyncBlockAddedInMutation(_ref4) {
299
+ var type = _ref4.type,
300
+ addedNodes = _ref4.addedNodes;
234
301
  return type === 'childList' && (0, _toConsumableArray2.default)(addedNodes).some(isBodiedSyncBlockWithinNode);
235
302
  };
236
303
  var isBodiedSyncBlockWithinNode = function isBodiedSyncBlockWithinNode(node) {
@@ -238,8 +305,8 @@ var isBodiedSyncBlockWithinNode = function isBodiedSyncBlockWithinNode(node) {
238
305
  };
239
306
  var referenceSyncBlockRemovedFromDomCheck = function referenceSyncBlockRemovedFromDomCheck(refs) {
240
307
  return new _experiences.ExperienceCheckDomMutation({
241
- onDomMutation: function onDomMutation(_ref9) {
242
- var mutations = _ref9.mutations;
308
+ onDomMutation: function onDomMutation(_ref5) {
309
+ var mutations = _ref5.mutations;
243
310
  if (mutations.some(isSyncBlockRemovedInMutation)) {
244
311
  return {
245
312
  status: 'success'
@@ -257,11 +324,84 @@ var referenceSyncBlockRemovedFromDomCheck = function referenceSyncBlockRemovedFr
257
324
  }
258
325
  });
259
326
  };
260
- var isSyncBlockRemovedInMutation = function isSyncBlockRemovedInMutation(_ref0) {
261
- var type = _ref0.type,
262
- removedNodes = _ref0.removedNodes;
327
+ var isSyncBlockRemovedInMutation = function isSyncBlockRemovedInMutation(_ref6) {
328
+ var type = _ref6.type,
329
+ removedNodes = _ref6.removedNodes;
263
330
  return type === 'childList' && (0, _toConsumableArray2.default)(removedNodes).some(isSyncBlockWithinNode);
264
331
  };
265
332
  var isSyncBlockWithinNode = function isSyncBlockWithinNode(node) {
266
333
  return (0, _experiences.getNodeQuery)('[data-prosemirror-node-name="syncBlock"]')(node);
334
+ };
335
+ var syncBlockDeleteConfirmationModalAddedCheck = function syncBlockDeleteConfirmationModalAddedCheck(refs) {
336
+ return new _experiences.ExperienceCheckDomMutation({
337
+ onDomMutation: function onDomMutation(_ref7) {
338
+ var mutations = _ref7.mutations;
339
+ if (mutations.some(isDeleteConfirmationModalAddedInMutation)) {
340
+ return {
341
+ status: 'success'
342
+ };
343
+ }
344
+ return undefined;
345
+ },
346
+ observeConfig: function observeConfig() {
347
+ return {
348
+ target: document.body,
349
+ options: {
350
+ childList: true,
351
+ subtree: true
352
+ }
353
+ };
354
+ }
355
+ });
356
+ };
357
+ var isDeleteConfirmationModalAddedInMutation = function isDeleteConfirmationModalAddedInMutation(_ref8) {
358
+ var type = _ref8.type,
359
+ addedNodes = _ref8.addedNodes;
360
+ return type === 'childList' && (0, _toConsumableArray2.default)(addedNodes).some(isDeleteConfirmationModalWithinNode);
361
+ };
362
+ var isDeleteConfirmationModalWithinNode = function isDeleteConfirmationModalWithinNode(node) {
363
+ return (0, _experiences.getNodeQuery)('[data-testid="sync-block-delete-confirmation"]')(node);
364
+ };
365
+ var syncedLocationsDropdownOpenedCheck = function syncedLocationsDropdownOpenedCheck(refs) {
366
+ return new _experiences.ExperienceCheckDomMutation({
367
+ onDomMutation: function onDomMutation(_ref9) {
368
+ var mutations = _ref9.mutations;
369
+ if (mutations.some(isSyncedLocationsDropdownErrorInMutation)) {
370
+ return {
371
+ status: 'failure'
372
+ };
373
+ }
374
+ if (mutations.some(isSyncedLocationsDropdownAddedInMutation)) {
375
+ return {
376
+ status: 'success'
377
+ };
378
+ }
379
+ return undefined;
380
+ },
381
+ observeConfig: function observeConfig() {
382
+ return {
383
+ target: document.body,
384
+ options: {
385
+ childList: true,
386
+ subtree: true
387
+ }
388
+ };
389
+ }
390
+ });
391
+ };
392
+ var isSyncedLocationsDropdownAddedInMutation = function isSyncedLocationsDropdownAddedInMutation(_ref0) {
393
+ var type = _ref0.type,
394
+ addedNodes = _ref0.addedNodes;
395
+ return type === 'childList' && (0, _toConsumableArray2.default)(addedNodes).some(isSyncedLocationsDropdownWithinNode);
396
+ };
397
+ var isSyncedLocationsDropdownErrorInMutation = function isSyncedLocationsDropdownErrorInMutation(_ref1) {
398
+ var type = _ref1.type,
399
+ addedNodes = _ref1.addedNodes;
400
+ return type === 'childList' && (0, _toConsumableArray2.default)(addedNodes).some(isSyncedLocationsDropdownErrorWithinNode);
401
+ };
402
+ var isSyncedLocationsDropdownWithinNode = function isSyncedLocationsDropdownWithinNode(node) {
403
+ return !!((0, _experiences.getNodeQuery)('[data-testid="synced-locations-dropdown-content"]')(node) || (0, _experiences.getNodeQuery)('[data-testid="synced-locations-dropdown-content-no-results"]')(node));
404
+ };
405
+ var isSyncedLocationsDropdownErrorWithinNode = function isSyncedLocationsDropdownErrorWithinNode(node) {
406
+ return !!(0, _experiences.getNodeQuery)('[data-testid="synced-locations-dropdown-content-error"]')(node);
267
407
  };
@@ -64,8 +64,8 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
64
64
  }] : []));
65
65
  },
66
66
  commands: {
67
- copySyncedBlockReferenceToClipboard: function copySyncedBlockReferenceToClipboard() {
68
- return (0, _editorCommands.copySyncedBlockReferenceToClipboardEditorCommand)(syncBlockStore, api);
67
+ copySyncedBlockReferenceToClipboard: function copySyncedBlockReferenceToClipboard(inputMethod) {
68
+ return (0, _editorCommands.copySyncedBlockReferenceToClipboardEditorCommand)(syncBlockStore, inputMethod, api);
69
69
  },
70
70
  insertSyncedBlock: function insertSyncedBlock() {
71
71
  return function (_ref2) {
@@ -17,5 +17,9 @@ var SYNCED_BLOCK_BUTTON_TEST_ID = exports.SYNCED_BLOCK_BUTTON_TEST_ID = {
17
17
  primaryToolbarCreate: 'create-synced-block-toolbar-btn',
18
18
  blockMenuCreate: 'create-synced-block-block-menu-btn',
19
19
  quickInsertCreate: 'create-synced-block-quick-insert-btn',
20
- syncedBlockToolbarReferenceDelete: 'reference-synced-block-delete-btn'
20
+ syncedBlockToolbarReferenceDelete: 'reference-synced-block-delete-btn',
21
+ syncedBlockToolbarSourceDelete: 'source-synced-block-delete-btn',
22
+ syncedBlockToolbarReferenceUnsync: 'reference-synced-block-unsync-btn',
23
+ syncedBlockToolbarSourceUnsync: 'source-synced-block-unsync-btn',
24
+ syncedBlockToolbarSyncedLocationsTrigger: 'synced-block-synced-locations-dropdown--trigger'
21
25
  };
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.CreateOrCopySyncedBlockDropdownItem = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactIntlNext = require("react-intl-next");
11
+ var _analytics = require("@atlaskit/editor-common/analytics");
11
12
  var _hooks = require("@atlaskit/editor-common/hooks");
12
13
  var _messages = require("@atlaskit/editor-common/messages");
13
14
  var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
@@ -71,7 +72,7 @@ var CopySyncedBlockDropdownItem = function CopySyncedBlockDropdownItem(_ref2) {
71
72
  mode = _useSharedPluginState2.mode;
72
73
  var onClick = function onClick() {
73
74
  var _api$core3, _api$core4, _api$blockControls2;
74
- api === null || api === void 0 || (_api$core3 = api.core) === null || _api$core3 === void 0 || _api$core3.actions.execute(api === null || api === void 0 ? void 0 : api.syncedBlock.commands.copySyncedBlockReferenceToClipboard());
75
+ api === null || api === void 0 || (_api$core3 = api.core) === null || _api$core3 === void 0 || _api$core3.actions.execute(api === null || api === void 0 ? void 0 : api.syncedBlock.commands.copySyncedBlockReferenceToClipboard(_analytics.INPUT_METHOD.BLOCK_MENU));
75
76
  api === null || api === void 0 || (_api$core4 = api.core) === null || _api$core4 === void 0 || _api$core4.actions.execute(api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || (_api$blockControls2 = _api$blockControls2.commands) === null || _api$blockControls2 === void 0 ? void 0 : _api$blockControls2.toggleBlockMenu({
76
77
  closeMenu: true
77
78
  }));