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

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 (62) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/afm-cc/tsconfig.json +0 -3
  3. package/afm-jira/tsconfig.json +0 -3
  4. package/afm-products/tsconfig.json +0 -3
  5. package/dist/cjs/editor-commands/index.js +99 -40
  6. package/dist/cjs/nodeviews/bodiedSyncedBlock.js +2 -7
  7. package/dist/cjs/nodeviews/syncedBlock.js +4 -18
  8. package/dist/cjs/pm-plugins/main.js +34 -43
  9. package/dist/cjs/pm-plugins/menu-and-toolbar-experiences.js +221 -81
  10. package/dist/cjs/pm-plugins/utils/track-sync-blocks.js +1 -2
  11. package/dist/cjs/pm-plugins/utils/utils.js +1 -46
  12. package/dist/cjs/syncedBlockPlugin.js +5 -7
  13. package/dist/cjs/types/index.js +5 -1
  14. package/dist/cjs/ui/CreateSyncedBlockDropdownItem.js +2 -1
  15. package/dist/cjs/ui/DeleteConfirmationModal.js +4 -20
  16. package/dist/cjs/ui/SyncBlockLabel.js +4 -10
  17. package/dist/cjs/ui/SyncBlockRefresher.js +7 -9
  18. package/dist/cjs/ui/SyncedLocationDropdown.js +32 -6
  19. package/dist/cjs/ui/floating-toolbar.js +11 -7
  20. package/dist/es2019/editor-commands/index.js +99 -40
  21. package/dist/es2019/nodeviews/bodiedSyncedBlock.js +2 -7
  22. package/dist/es2019/nodeviews/syncedBlock.js +4 -15
  23. package/dist/es2019/pm-plugins/main.js +33 -42
  24. package/dist/es2019/pm-plugins/menu-and-toolbar-experiences.js +206 -71
  25. package/dist/es2019/pm-plugins/utils/track-sync-blocks.js +1 -2
  26. package/dist/es2019/pm-plugins/utils/utils.js +0 -47
  27. package/dist/es2019/syncedBlockPlugin.js +4 -5
  28. package/dist/es2019/types/index.js +5 -1
  29. package/dist/es2019/ui/CreateSyncedBlockDropdownItem.js +2 -1
  30. package/dist/es2019/ui/DeleteConfirmationModal.js +4 -20
  31. package/dist/es2019/ui/SyncBlockLabel.js +4 -10
  32. package/dist/es2019/ui/SyncBlockRefresher.js +7 -9
  33. package/dist/es2019/ui/SyncedLocationDropdown.js +30 -6
  34. package/dist/es2019/ui/floating-toolbar.js +10 -6
  35. package/dist/esm/editor-commands/index.js +99 -40
  36. package/dist/esm/nodeviews/bodiedSyncedBlock.js +2 -7
  37. package/dist/esm/nodeviews/syncedBlock.js +4 -18
  38. package/dist/esm/pm-plugins/main.js +34 -43
  39. package/dist/esm/pm-plugins/menu-and-toolbar-experiences.js +221 -81
  40. package/dist/esm/pm-plugins/utils/track-sync-blocks.js +1 -2
  41. package/dist/esm/pm-plugins/utils/utils.js +0 -45
  42. package/dist/esm/syncedBlockPlugin.js +5 -7
  43. package/dist/esm/types/index.js +5 -1
  44. package/dist/esm/ui/CreateSyncedBlockDropdownItem.js +2 -1
  45. package/dist/esm/ui/DeleteConfirmationModal.js +4 -20
  46. package/dist/esm/ui/SyncBlockLabel.js +4 -10
  47. package/dist/esm/ui/SyncBlockRefresher.js +7 -9
  48. package/dist/esm/ui/SyncedLocationDropdown.js +32 -6
  49. package/dist/esm/ui/floating-toolbar.js +11 -7
  50. package/dist/types/editor-commands/index.d.ts +3 -2
  51. package/dist/types/pm-plugins/utils/handle-bodied-sync-block-removal.d.ts +1 -1
  52. package/dist/types/pm-plugins/utils/utils.d.ts +1 -3
  53. package/dist/types/syncedBlockPluginType.d.ts +2 -1
  54. package/dist/types/types/index.d.ts +4 -0
  55. package/dist/types/ui/SyncedLocationDropdown.d.ts +4 -1
  56. package/dist/types-ts4.5/editor-commands/index.d.ts +3 -2
  57. package/dist/types-ts4.5/pm-plugins/utils/handle-bodied-sync-block-removal.d.ts +1 -1
  58. package/dist/types-ts4.5/pm-plugins/utils/utils.d.ts +1 -3
  59. package/dist/types-ts4.5/syncedBlockPluginType.d.ts +2 -1
  60. package/dist/types-ts4.5/types/index.d.ts +4 -0
  61. package/dist/types-ts4.5/ui/SyncedLocationDropdown.d.ts +4 -1
  62. package/package.json +5 -6
@@ -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
  };
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.trackSyncBlocks = exports.hasEditInSyncBlock = void 0;
7
7
  var _transform = require("@atlaskit/editor-prosemirror/transform");
8
8
  var _utils = require("@atlaskit/editor-prosemirror/utils");
9
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
9
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
11
10
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12
11
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -29,7 +28,7 @@ var trackSyncBlocks = exports.trackSyncBlocks = function trackSyncBlocks(predica
29
28
  var hasBodiedSyncBlockChanges = replaceSteps.some(function (step, idx) {
30
29
  var from = step.from,
31
30
  to = step.to;
32
- var docAtStep = (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? tr.docs[idx] : state.doc;
31
+ var docAtStep = tr.docs[idx];
33
32
  var hasChange = false;
34
33
  if (from !== to) {
35
34
  step.getMap().forEach(function (oldStart, oldEnd) {
@@ -3,13 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.sliceFullyContainsNode = exports.isBodiedSyncBlockNode = exports.findSyncBlockOrBodiedSyncBlock = exports.findSyncBlock = exports.findBodiedSyncBlock = exports.canBeConvertedToSyncBlockOld = exports.canBeConvertedToSyncBlockNew = exports.canBeConvertedToSyncBlock = void 0;
6
+ exports.sliceFullyContainsNode = exports.isBodiedSyncBlockNode = exports.findSyncBlockOrBodiedSyncBlock = exports.findSyncBlock = exports.findBodiedSyncBlock = exports.canBeConvertedToSyncBlock = void 0;
7
7
  var _selection = require("@atlaskit/editor-common/selection");
8
8
  var _model = require("@atlaskit/editor-prosemirror/model");
9
- var _state = require("@atlaskit/editor-prosemirror/state");
10
9
  var _utils = require("@atlaskit/editor-prosemirror/utils");
11
- var _editorTables = require("@atlaskit/editor-tables");
12
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
13
10
  var findSyncBlock = exports.findSyncBlock = function findSyncBlock(schema, selection) {
14
11
  var syncBlock = schema.nodes.syncBlock;
15
12
  return (0, _utils.findSelectedNodeOfType)(syncBlock)(selection);
@@ -34,48 +31,6 @@ var UNSUPPORTED_NODE_TYPES = new Set(['inlineExtension', 'extension', 'bodiedExt
34
31
  * or false if conversion is not possible
35
32
  */
36
33
  var canBeConvertedToSyncBlock = exports.canBeConvertedToSyncBlock = function canBeConvertedToSyncBlock(selection) {
37
- return (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? canBeConvertedToSyncBlockNew(selection) : canBeConvertedToSyncBlockOld(selection);
38
- };
39
- var canBeConvertedToSyncBlockOld = exports.canBeConvertedToSyncBlockOld = function canBeConvertedToSyncBlockOld(selection) {
40
- var schema = selection.$from.doc.type.schema;
41
- var nodes = schema.nodes;
42
- var from = selection.from;
43
- var to = selection.to;
44
- var contentToInclude = selection.content().content;
45
- if (selection instanceof _editorTables.CellSelection) {
46
- var table = (0, _editorTables.findTable)(selection);
47
- if (!table) {
48
- return false;
49
- }
50
- contentToInclude = _model.Fragment.from([table.node]);
51
- from = table.pos;
52
- to = table.pos + table.node.nodeSize;
53
- } else if (selection instanceof _state.TextSelection) {
54
- var trueParent = (0, _utils.findParentNodeOfType)([nodes.bulletList, nodes.orderedList, nodes.taskList, nodes.blockquote])(selection);
55
- if (trueParent) {
56
- contentToInclude = _model.Fragment.from([trueParent.node]);
57
- from = trueParent.pos;
58
- to = trueParent.pos + trueParent.node.nodeSize;
59
- }
60
- }
61
- var canBeConverted = true;
62
- selection.$from.doc.nodesBetween(from, to, function (node) {
63
- if (UNSUPPORTED_NODE_TYPES.has(node.type.name)) {
64
- canBeConverted = false;
65
- return false;
66
- }
67
- });
68
- if (!canBeConverted) {
69
- return false;
70
- }
71
- contentToInclude = removeBreakoutMarks(contentToInclude);
72
- return {
73
- contentToInclude: contentToInclude,
74
- from: from,
75
- to: to
76
- };
77
- };
78
- var canBeConvertedToSyncBlockNew = exports.canBeConvertedToSyncBlockNew = function canBeConvertedToSyncBlockNew(selection) {
79
34
  var _expandSelectionToBlo = (0, _selection.expandSelectionToBlockRange)(selection),
80
35
  $from = _expandSelectionToBlo.$from,
81
36
  range = _expandSelectionToBlo.range;
@@ -5,14 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.syncedBlockPlugin = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
8
  var _react = _interopRequireDefault(require("react"));
10
9
  var _adfSchema = require("@atlaskit/adf-schema");
11
10
  var _messages = require("@atlaskit/editor-common/messages");
12
11
  var _quickInsert = require("@atlaskit/editor-common/quick-insert");
13
12
  var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
14
13
  var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
15
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
14
  var _editorActions = require("./editor-actions");
17
15
  var _editorCommands = require("./editor-commands");
18
16
  var _main = require("./pm-plugins/main");
@@ -50,7 +48,7 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
50
48
  plugin: function plugin(params) {
51
49
  return (0, _main.createPlugin)(config, params, syncBlockStore, api);
52
50
  }
53
- }].concat((0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? [{
51
+ }, {
54
52
  name: 'menuAndToolbarExperiencesPlugin',
55
53
  plugin: function plugin() {
56
54
  return (0, _menuAndToolbarExperiences.getMenuAndToolbarExperiencesPlugin)({
@@ -61,11 +59,11 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
61
59
  }
62
60
  });
63
61
  }
64
- }] : []));
62
+ }];
65
63
  },
66
64
  commands: {
67
- copySyncedBlockReferenceToClipboard: function copySyncedBlockReferenceToClipboard() {
68
- return (0, _editorCommands.copySyncedBlockReferenceToClipboardEditorCommand)(syncBlockStore, api);
65
+ copySyncedBlockReferenceToClipboard: function copySyncedBlockReferenceToClipboard(inputMethod) {
66
+ return (0, _editorCommands.copySyncedBlockReferenceToClipboardEditorCommand)(syncBlockStore, inputMethod, api);
69
67
  },
70
68
  insertSyncedBlock: function insertSyncedBlock() {
71
69
  return function (_ref2) {
@@ -121,7 +119,7 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
121
119
  fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions.fireAnalyticsEvent
122
120
  });
123
121
  },
124
- testId: (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? _types.SYNCED_BLOCK_BUTTON_TEST_ID.quickInsertCreate : undefined
122
+ testId: _types.SYNCED_BLOCK_BUTTON_TEST_ID.quickInsertCreate
125
123
  }];
126
124
  },
127
125
  floatingToolbar: function floatingToolbar(state, intl) {
@@ -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
  }));
@@ -19,7 +19,6 @@ var _hooks = require("@atlaskit/editor-common/hooks");
19
19
  var _messages = require("@atlaskit/editor-common/messages");
20
20
  var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
21
21
  var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
22
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
23
22
  var _compiled = require("@atlaskit/primitives/compiled");
24
23
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
25
24
  var _main = require("../pm-plugins/main");
@@ -44,7 +43,7 @@ var styles = {
44
43
  spinner: "_1mou1wug _195g1wug"
45
44
  };
46
45
  var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteConfirmationModal(_ref) {
47
- var _api$core2, _api$core4, _api$core6, _syncBlockIds$length;
46
+ var _api$core2, _api$core4, _api$core6;
48
47
  var syncBlockStoreManager = _ref.syncBlockStoreManager,
49
48
  api = _ref.api;
50
49
  var _useState = (0, _react.useState)(false),
@@ -139,7 +138,7 @@ var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteC
139
138
  }
140
139
  }, [api === null || api === void 0 || (_api$core6 = api.core) === null || _api$core6 === void 0 ? void 0 : _api$core6.actions, bodiedSyncBlockDeletionStatus, isOpen]);
141
140
  (0, _react.useEffect)(function () {
142
- if (isOpen && syncBlockIds !== undefined && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
141
+ if (isOpen && syncBlockIds !== undefined) {
143
142
  var fetchReferences = /*#__PURE__*/function () {
144
143
  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
145
144
  var references, totalCount;
@@ -205,7 +204,7 @@ var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteC
205
204
  onClose: handleClick(false),
206
205
  testId: "sync-block-delete-confirmation",
207
206
  height: 184
208
- }, (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, referenceCount === undefined ? /*#__PURE__*/_react.default.createElement(_compiled.Box, {
207
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, referenceCount === undefined ? /*#__PURE__*/_react.default.createElement(_compiled.Box, {
209
208
  xcss: styles.spinner
210
209
  }, /*#__PURE__*/_react.default.createElement(_spinner.default, {
211
210
  size: "large"
@@ -218,22 +217,7 @@ var DeleteConfirmationModal = exports.DeleteConfirmationModal = function DeleteC
218
217
  isDisabled: (0, _editorPluginConnectivity.isOfflineMode)(mode),
219
218
  deleteReason: deleteReason,
220
219
  sourceCount: (syncBlockIds === null || syncBlockIds === void 0 ? void 0 : syncBlockIds.length) || 0
221
- })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_modalDialog.ModalHeader, {
222
- hasCloseButton: true
223
- }, /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTitle, {
224
- appearance: "warning"
225
- }, formatMessage(_messages.syncBlockMessages.deleteConfirmationModalTitleSingle))), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalBody, null, /*#__PURE__*/_react.default.createElement(_compiled.Text, null, formatMessage(_messages.syncBlockMessages.deleteConfirmationModalDescription, {
226
- syncBlockCount: (_syncBlockIds$length = syncBlockIds === null || syncBlockIds === void 0 ? void 0 : syncBlockIds.length) !== null && _syncBlockIds$length !== void 0 ? _syncBlockIds$length : 1
227
- }))), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_new.default, {
228
- appearance: "subtle",
229
- onClick: handleClick(false)
230
- }, formatMessage(_messages.syncBlockMessages.deleteConfirmationModalCancelButton)), /*#__PURE__*/_react.default.createElement(_new.default, {
231
- appearance: "warning",
232
- onClick: handleClick(true),
233
- autoFocus: true,
234
- isDisabled: (0, _editorPluginConnectivity.isOfflineMode)(mode),
235
- isLoading: bodiedSyncBlockDeletionStatus === 'processing'
236
- }, formatMessage(_messages.syncBlockMessages.deleteConfirmationModalDeleteButton))))));
220
+ }))));
237
221
  };
238
222
  var ModalContent = function ModalContent(_ref7) {
239
223
  var content = _ref7.content,