@atlaskit/editor-plugin-synced-block 13.0.13 → 13.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @atlaskit/editor-plugin-synced-block
2
2
 
3
+ ## 13.0.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [`9a3a071d7fcce`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9a3a071d7fcce) -
8
+ Fix Safari synced block copying when `platform_editor_blocks_patch_9` is enabled.
9
+ `copyDomNodeWithResult` exposes synchronous Patch 9 failures while `copyDomNode` retains its
10
+ existing void API.
11
+ - Updated dependencies
12
+
3
13
  ## 13.0.13
4
14
 
5
15
  ### Patch Changes
@@ -233,18 +233,33 @@ var copySyncedBlockReferenceToClipboardInternal = function copySyncedBlockRefere
233
233
  return false;
234
234
  }
235
235
  var domNode = (0, _copyButton.toDOM)(referenceSyncBlockNode, schema);
236
- (0, _copyButton.copyDomNode)(domNode, referenceSyncBlockNode.type, selection);
237
236
 
238
237
  // Bare-uuid join key shared with the create/delete events: for a source
239
238
  // bodiedSyncBlock its `localId` is the source uuid (copy was page-form only).
240
239
  var sourceJoinKey = isBodiedSyncBlock ? syncBlockFindResult.node.attrs.localId : undefined;
241
240
  var isSourceContentUnpublished = isBodiedSyncBlock ? syncBlockStore.sourceManager.getStatus(syncBlockFindResult.node.attrs.resourceId) !== 'active' : ((_syncBlockStore$refer = syncBlockStore.referenceManager.getFromCache(referenceSyncBlockNode.attrs.resourceId)) === null || _syncBlockStore$refer === void 0 || (_syncBlockStore$refer = _syncBlockStore$refer.data) === null || _syncBlockStore$refer === void 0 ? void 0 : _syncBlockStore$refer.status) === 'unpublished';
242
241
  var sourceProduct = (0, _utils2.getSourceProductFromResourceIdSafe)(referenceSyncBlockNode.attrs.resourceId);
242
+ var copyResult = (0, _copyButton.copyDomNodeWithResult)(domNode, referenceSyncBlockNode.type, selection);
243
+ if (copyResult === false) {
244
+ var _api$analytics4;
245
+ 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({
246
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL,
247
+ action: _analytics.ACTION.ERROR,
248
+ actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
249
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
250
+ attributes: {
251
+ error: 'Failed to copy synced block to clipboard',
252
+ resourceId: referenceSyncBlockNode.attrs.resourceId,
253
+ inputMethod: inputMethod
254
+ }
255
+ });
256
+ return false;
257
+ }
243
258
  (0, _utils3.deferDispatch)(function () {
244
259
  api === null || api === void 0 || api.core.actions.execute(function (_ref3) {
245
- var _api$analytics4;
260
+ var _api$analytics5;
246
261
  var tr = _ref3.tr;
247
- 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({
262
+ api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 || (_api$analytics5 = _api$analytics5.actions) === null || _api$analytics5 === void 0 || _api$analytics5.fireAnalyticsEvent({
248
263
  eventType: _analytics.EVENT_TYPE.OPERATIONAL,
249
264
  action: _analytics.ACTION.COPIED,
250
265
  actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
@@ -281,8 +296,8 @@ var editSyncedBlockSource = exports.editSyncedBlockSource = function editSyncedB
281
296
  var isOnSameDocument = (syncBlockData === null || syncBlockData === void 0 ? void 0 : syncBlockData.onSameDocument) === true;
282
297
  var sourceBlock = isOnSameDocument && syncBlockData ? (0, _utils4.findBodiedSyncBlockByLocalId)(state, syncBlockData.blockInstanceId) : undefined;
283
298
  if (syncBlockURL) {
284
- var _api$analytics5;
285
- api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 || _api$analytics5.actions.fireAnalyticsEvent({
299
+ var _api$analytics6;
300
+ api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 || _api$analytics6.actions.fireAnalyticsEvent({
286
301
  eventType: _analytics.EVENT_TYPE.OPERATIONAL,
287
302
  action: _analytics.ACTION.SYNCED_BLOCK_EDIT_SOURCE,
288
303
  actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
@@ -299,9 +314,9 @@ var editSyncedBlockSource = exports.editSyncedBlockSource = function editSyncedB
299
314
  }
300
315
  window.open(syncBlockURL, '_blank');
301
316
  } else {
302
- var _api$analytics6;
317
+ var _api$analytics7;
303
318
  var _tr = state.tr;
304
- 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({
319
+ api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 || (_api$analytics7 = _api$analytics7.actions) === null || _api$analytics7 === void 0 || _api$analytics7.attachAnalyticsEvent({
305
320
  eventType: _analytics.EVENT_TYPE.OPERATIONAL,
306
321
  action: _analytics.ACTION.ERROR,
307
322
  actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
@@ -1,6 +1,6 @@
1
1
  import { defaultSchema } from '@atlaskit/adf-schema/schema-default';
2
2
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
3
- import { copyDomNode, toDOM } from '@atlaskit/editor-common/copy-button';
3
+ import { copyDomNodeWithResult, toDOM } from '@atlaskit/editor-common/copy-button';
4
4
  import { DOMSerializer, Fragment } from '@atlaskit/editor-prosemirror/model';
5
5
  import { NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
6
6
  import { findSelectedNodeOfType, removeParentNodeOfType, removeSelectedNode, safeInsert } from '@atlaskit/editor-prosemirror/utils';
@@ -228,19 +228,34 @@ const copySyncedBlockReferenceToClipboardInternal = (schema, selection, syncBloc
228
228
  return false;
229
229
  }
230
230
  const domNode = toDOM(referenceSyncBlockNode, schema);
231
- copyDomNode(domNode, referenceSyncBlockNode.type, selection);
232
231
 
233
232
  // Bare-uuid join key shared with the create/delete events: for a source
234
233
  // bodiedSyncBlock its `localId` is the source uuid (copy was page-form only).
235
234
  const sourceJoinKey = isBodiedSyncBlock ? syncBlockFindResult.node.attrs.localId : undefined;
236
235
  const isSourceContentUnpublished = isBodiedSyncBlock ? syncBlockStore.sourceManager.getStatus(syncBlockFindResult.node.attrs.resourceId) !== 'active' : ((_syncBlockStore$refer = syncBlockStore.referenceManager.getFromCache(referenceSyncBlockNode.attrs.resourceId)) === null || _syncBlockStore$refer === void 0 ? void 0 : (_syncBlockStore$refer2 = _syncBlockStore$refer.data) === null || _syncBlockStore$refer2 === void 0 ? void 0 : _syncBlockStore$refer2.status) === 'unpublished';
237
236
  const sourceProduct = getSourceProductFromResourceIdSafe(referenceSyncBlockNode.attrs.resourceId);
237
+ const copyResult = copyDomNodeWithResult(domNode, referenceSyncBlockNode.type, selection);
238
+ if (copyResult === false) {
239
+ var _api$analytics4, _api$analytics4$actio;
240
+ api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : (_api$analytics4$actio = _api$analytics4.actions) === null || _api$analytics4$actio === void 0 ? void 0 : _api$analytics4$actio.fireAnalyticsEvent({
241
+ eventType: EVENT_TYPE.OPERATIONAL,
242
+ action: ACTION.ERROR,
243
+ actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
244
+ actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
245
+ attributes: {
246
+ error: 'Failed to copy synced block to clipboard',
247
+ resourceId: referenceSyncBlockNode.attrs.resourceId,
248
+ inputMethod
249
+ }
250
+ });
251
+ return false;
252
+ }
238
253
  deferDispatch(() => {
239
254
  api === null || api === void 0 ? void 0 : api.core.actions.execute(({
240
255
  tr
241
256
  }) => {
242
- var _api$analytics4, _api$analytics4$actio;
243
- api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : (_api$analytics4$actio = _api$analytics4.actions) === null || _api$analytics4$actio === void 0 ? void 0 : _api$analytics4$actio.fireAnalyticsEvent({
257
+ var _api$analytics5, _api$analytics5$actio;
258
+ api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : (_api$analytics5$actio = _api$analytics5.actions) === null || _api$analytics5$actio === void 0 ? void 0 : _api$analytics5$actio.fireAnalyticsEvent({
244
259
  eventType: EVENT_TYPE.OPERATIONAL,
245
260
  action: ACTION.COPIED,
246
261
  actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
@@ -277,8 +292,8 @@ export const editSyncedBlockSource = (syncBlockStore, api) => (state, dispatch,
277
292
  const isOnSameDocument = (syncBlockData === null || syncBlockData === void 0 ? void 0 : syncBlockData.onSameDocument) === true;
278
293
  const sourceBlock = isOnSameDocument && syncBlockData ? findBodiedSyncBlockByLocalId(state, syncBlockData.blockInstanceId) : undefined;
279
294
  if (syncBlockURL) {
280
- var _api$analytics5;
281
- api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions.fireAnalyticsEvent({
295
+ var _api$analytics6;
296
+ api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions.fireAnalyticsEvent({
282
297
  eventType: EVENT_TYPE.OPERATIONAL,
283
298
  action: ACTION.SYNCED_BLOCK_EDIT_SOURCE,
284
299
  actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
@@ -295,11 +310,11 @@ export const editSyncedBlockSource = (syncBlockStore, api) => (state, dispatch,
295
310
  }
296
311
  window.open(syncBlockURL, '_blank');
297
312
  } else {
298
- var _api$analytics6, _api$analytics6$actio;
313
+ var _api$analytics7, _api$analytics7$actio;
299
314
  const {
300
315
  tr
301
316
  } = state;
302
- api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : (_api$analytics6$actio = _api$analytics6.actions) === null || _api$analytics6$actio === void 0 ? void 0 : _api$analytics6$actio.attachAnalyticsEvent({
317
+ api === null || api === void 0 ? void 0 : (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : (_api$analytics7$actio = _api$analytics7.actions) === null || _api$analytics7$actio === void 0 ? void 0 : _api$analytics7$actio.attachAnalyticsEvent({
303
318
  eventType: EVENT_TYPE.OPERATIONAL,
304
319
  action: ACTION.ERROR,
305
320
  actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
@@ -3,7 +3,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  import { defaultSchema } from '@atlaskit/adf-schema/schema-default';
5
5
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
6
- import { copyDomNode, toDOM } from '@atlaskit/editor-common/copy-button';
6
+ import { copyDomNodeWithResult, toDOM } from '@atlaskit/editor-common/copy-button';
7
7
  import { DOMSerializer, Fragment } from '@atlaskit/editor-prosemirror/model';
8
8
  import { NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
9
9
  import { findSelectedNodeOfType, removeParentNodeOfType, removeSelectedNode, safeInsert } from '@atlaskit/editor-prosemirror/utils';
@@ -226,18 +226,33 @@ var copySyncedBlockReferenceToClipboardInternal = function copySyncedBlockRefere
226
226
  return false;
227
227
  }
228
228
  var domNode = toDOM(referenceSyncBlockNode, schema);
229
- copyDomNode(domNode, referenceSyncBlockNode.type, selection);
230
229
 
231
230
  // Bare-uuid join key shared with the create/delete events: for a source
232
231
  // bodiedSyncBlock its `localId` is the source uuid (copy was page-form only).
233
232
  var sourceJoinKey = isBodiedSyncBlock ? syncBlockFindResult.node.attrs.localId : undefined;
234
233
  var isSourceContentUnpublished = isBodiedSyncBlock ? syncBlockStore.sourceManager.getStatus(syncBlockFindResult.node.attrs.resourceId) !== 'active' : ((_syncBlockStore$refer = syncBlockStore.referenceManager.getFromCache(referenceSyncBlockNode.attrs.resourceId)) === null || _syncBlockStore$refer === void 0 || (_syncBlockStore$refer = _syncBlockStore$refer.data) === null || _syncBlockStore$refer === void 0 ? void 0 : _syncBlockStore$refer.status) === 'unpublished';
235
234
  var sourceProduct = getSourceProductFromResourceIdSafe(referenceSyncBlockNode.attrs.resourceId);
235
+ var copyResult = copyDomNodeWithResult(domNode, referenceSyncBlockNode.type, selection);
236
+ if (copyResult === false) {
237
+ var _api$analytics4;
238
+ 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({
239
+ eventType: EVENT_TYPE.OPERATIONAL,
240
+ action: ACTION.ERROR,
241
+ actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
242
+ actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_COPY,
243
+ attributes: {
244
+ error: 'Failed to copy synced block to clipboard',
245
+ resourceId: referenceSyncBlockNode.attrs.resourceId,
246
+ inputMethod: inputMethod
247
+ }
248
+ });
249
+ return false;
250
+ }
236
251
  deferDispatch(function () {
237
252
  api === null || api === void 0 || api.core.actions.execute(function (_ref3) {
238
- var _api$analytics4;
253
+ var _api$analytics5;
239
254
  var tr = _ref3.tr;
240
- 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({
255
+ api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 || (_api$analytics5 = _api$analytics5.actions) === null || _api$analytics5 === void 0 || _api$analytics5.fireAnalyticsEvent({
241
256
  eventType: EVENT_TYPE.OPERATIONAL,
242
257
  action: ACTION.COPIED,
243
258
  actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
@@ -274,8 +289,8 @@ export var editSyncedBlockSource = function editSyncedBlockSource(syncBlockStore
274
289
  var isOnSameDocument = (syncBlockData === null || syncBlockData === void 0 ? void 0 : syncBlockData.onSameDocument) === true;
275
290
  var sourceBlock = isOnSameDocument && syncBlockData ? findBodiedSyncBlockByLocalId(state, syncBlockData.blockInstanceId) : undefined;
276
291
  if (syncBlockURL) {
277
- var _api$analytics5;
278
- api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 || _api$analytics5.actions.fireAnalyticsEvent({
292
+ var _api$analytics6;
293
+ api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 || _api$analytics6.actions.fireAnalyticsEvent({
279
294
  eventType: EVENT_TYPE.OPERATIONAL,
280
295
  action: ACTION.SYNCED_BLOCK_EDIT_SOURCE,
281
296
  actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
@@ -292,9 +307,9 @@ export var editSyncedBlockSource = function editSyncedBlockSource(syncBlockStore
292
307
  }
293
308
  window.open(syncBlockURL, '_blank');
294
309
  } else {
295
- var _api$analytics6;
310
+ var _api$analytics7;
296
311
  var _tr = state.tr;
297
- 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({
312
+ api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 || (_api$analytics7 = _api$analytics7.actions) === null || _api$analytics7 === void 0 || _api$analytics7.attachAnalyticsEvent({
298
313
  eventType: EVENT_TYPE.OPERATIONAL,
299
314
  action: ACTION.ERROR,
300
315
  actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-synced-block",
3
- "version": "13.0.13",
3
+ "version": "13.0.14",
4
4
  "description": "SyncedBlock plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -23,7 +23,7 @@
23
23
  "@atlaskit/adf-schema": "^57.0.0",
24
24
  "@atlaskit/button": "25.1.0",
25
25
  "@atlaskit/dropdown-menu": "18.1.0",
26
- "@atlaskit/editor-json-transformer": "^9.5.0",
26
+ "@atlaskit/editor-json-transformer": "^9.6.0",
27
27
  "@atlaskit/editor-plugin-analytics": "^15.0.0",
28
28
  "@atlaskit/editor-plugin-block-menu": "^14.1.0",
29
29
  "@atlaskit/editor-plugin-connectivity": "15.0.0",
@@ -60,7 +60,7 @@
60
60
  "memoize-one": "^6.0.0"
61
61
  },
62
62
  "peerDependencies": {
63
- "@atlaskit/editor-common": "^119.12.0",
63
+ "@atlaskit/editor-common": "^119.13.0",
64
64
  "react": "^18.2.0 || ^19.2.0",
65
65
  "react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
66
66
  },
@@ -111,6 +111,9 @@
111
111
  },
112
112
  "platform_editor_blocks_patch_7": {
113
113
  "type": "boolean"
114
+ },
115
+ "platform_editor_blocks_patch_9": {
116
+ "type": "boolean"
114
117
  }
115
118
  }
116
119
  }