@atlaskit/editor-synced-block-provider 6.6.5 → 6.6.6

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,14 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 6.6.6
4
+
5
+ ### Patch Changes
6
+
7
+ - [`33333417b0969`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/33333417b0969) -
8
+ Strip inline comment annotation marks from synced block content before syncing references behind
9
+ platform_synced_block_patch_12.
10
+ - Updated dependencies
11
+
3
12
  ## 6.6.5
4
13
 
5
14
  ### Patch Changes
@@ -13,6 +13,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
15
15
  var _monitoring = require("@atlaskit/editor-common/monitoring");
16
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
17
  var _types = require("../common/types");
17
18
  var _errorHandling = require("../utils/errorHandling");
18
19
  var _experienceTracking = require("../utils/experienceTracking");
@@ -210,10 +211,27 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
210
211
  var syncBlockNode = (0, _utils.createSyncBlockNode)('', resourceId);
211
212
  var providerData = (_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 || (_this$dataProvider2 = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2 === void 0 ? void 0 : _this$dataProvider2.data;
212
213
  if (providerData) {
213
- return providerData;
214
+ return this.stripAnnotationMarksFromReferenceData(providerData);
214
215
  }
215
216
  return this.getFromSessionCache(resourceId);
216
217
  }
218
+ }, {
219
+ key: "stripAnnotationMarksFromReferenceData",
220
+ value: function stripAnnotationMarksFromReferenceData(syncBlock) {
221
+ var _syncBlock$data;
222
+ if (!(0, _platformFeatureFlags.fg)('platform_synced_block_patch_12') || !((_syncBlock$data = syncBlock.data) !== null && _syncBlock$data !== void 0 && _syncBlock$data.content)) {
223
+ return syncBlock;
224
+ }
225
+ var content = (0, _utils.stripAnnotationMarksFromJSONContent)(syncBlock.data.content);
226
+ if (content === syncBlock.data.content) {
227
+ return syncBlock;
228
+ }
229
+ return _objectSpread(_objectSpread({}, syncBlock), {}, {
230
+ data: _objectSpread(_objectSpread({}, syncBlock.data), {}, {
231
+ content: content
232
+ })
233
+ });
234
+ }
217
235
  }, {
218
236
  key: "updateSessionCache",
219
237
  value: function updateSessionCache(resourceId) {
@@ -230,7 +248,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
230
248
  if (!raw) {
231
249
  return undefined;
232
250
  }
233
- return JSON.parse(raw);
251
+ return this.stripAnnotationMarksFromReferenceData(JSON.parse(raw));
234
252
  } catch (error) {
235
253
  (0, _monitoring.logException)(error, {
236
254
  location: 'editor-synced-block-provider/referenceSyncBlockStoreManager/getFromSessionCache'
@@ -601,14 +619,15 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
601
619
  }, {
602
620
  key: "updateCache",
603
621
  value: function updateCache(syncBlock) {
604
- var resourceId = syncBlock.resourceId;
622
+ var sanitizedSyncBlock = this.stripAnnotationMarksFromReferenceData(syncBlock);
623
+ var resourceId = sanitizedSyncBlock.resourceId;
605
624
  if (resourceId) {
606
625
  var _this$dataProvider3;
607
- (_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 || _this$dataProvider3.updateCache((0, _defineProperty2.default)({}, resourceId, syncBlock), {
626
+ (_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 || _this$dataProvider3.updateCache((0, _defineProperty2.default)({}, resourceId, sanitizedSyncBlock), {
608
627
  strategy: 'merge',
609
628
  source: 'network'
610
629
  });
611
- this._subscriptionManager.notifySubscriptionCallbacks(resourceId, syncBlock);
630
+ this._subscriptionManager.notifySubscriptionCallbacks(resourceId, sanitizedSyncBlock);
612
631
  this.updateSessionCache(resourceId);
613
632
  }
614
633
  }
@@ -685,12 +704,12 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
685
704
  }, {
686
705
  key: "getSyncBlockURL",
687
706
  value: function getSyncBlockURL(resourceId) {
688
- var _syncBlock$data;
707
+ var _syncBlock$data2;
689
708
  var syncBlock = this.getFromCache(resourceId);
690
709
  if (!syncBlock) {
691
710
  return undefined;
692
711
  }
693
- return (_syncBlock$data = syncBlock.data) === null || _syncBlock$data === void 0 ? void 0 : _syncBlock$data.sourceURL;
712
+ return (_syncBlock$data2 = syncBlock.data) === null || _syncBlock$data2 === void 0 ? void 0 : _syncBlock$data2.sourceURL;
694
713
  }
695
714
  }, {
696
715
  key: "getProviderFactory",
@@ -1,15 +1,60 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.getSourceProductFromResourceIdSafe = exports.getContentIdAndProductFromResourceId = exports.createSyncBlockNode = exports.convertSyncBlockPMNodeToSyncBlockData = exports.convertSyncBlockJSONNodeToSyncBlockNode = exports.convertPMNodesToSyncBlockNodes = exports.convertPMNodeToSyncBlockNode = exports.convertContentUpdatedAt = void 0;
7
- /* eslint-disable require-unicode-regexp */
8
-
7
+ exports.stripAnnotationMarksFromJSONContent = exports.getSourceProductFromResourceIdSafe = exports.getContentIdAndProductFromResourceId = exports.createSyncBlockNode = exports.convertSyncBlockPMNodeToSyncBlockData = exports.convertSyncBlockJSONNodeToSyncBlockNode = exports.convertPMNodesToSyncBlockNodes = exports.convertPMNodeToSyncBlockNode = exports.convertContentUpdatedAt = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ 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) { (0, _defineProperty2.default)(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; } /* eslint-disable require-unicode-regexp */
12
+ var _stripAnnotationMarksFromJSONContent = exports.stripAnnotationMarksFromJSONContent = function stripAnnotationMarksFromJSONContent(content) {
13
+ var strippedContent;
14
+ content.forEach(function (contentNode, index) {
15
+ var _contentNode$marks;
16
+ if (!contentNode) {
17
+ var _strippedContent;
18
+ (_strippedContent = strippedContent) === null || _strippedContent === void 0 || _strippedContent.push(contentNode);
19
+ return;
20
+ }
21
+ var hasAnnotationMark = (_contentNode$marks = contentNode.marks) === null || _contentNode$marks === void 0 ? void 0 : _contentNode$marks.some(function (mark) {
22
+ return mark.type === 'annotation';
23
+ });
24
+ var childContent = contentNode.content ? _stripAnnotationMarksFromJSONContent(contentNode.content) : undefined;
25
+ var hasContentChanged = childContent !== undefined && childContent !== contentNode.content;
26
+ if (!hasAnnotationMark && !hasContentChanged) {
27
+ var _strippedContent2;
28
+ (_strippedContent2 = strippedContent) === null || _strippedContent2 === void 0 || _strippedContent2.push(contentNode);
29
+ return;
30
+ }
31
+ if (!strippedContent) {
32
+ strippedContent = content.slice(0, index);
33
+ }
34
+ var strippedNode = _objectSpread({}, contentNode);
35
+ if (hasAnnotationMark) {
36
+ var _contentNode$marks2;
37
+ var marks = (_contentNode$marks2 = contentNode.marks) === null || _contentNode$marks2 === void 0 ? void 0 : _contentNode$marks2.filter(function (mark) {
38
+ return mark.type !== 'annotation';
39
+ });
40
+ if (marks && marks.length > 0) {
41
+ strippedNode.marks = marks;
42
+ } else {
43
+ delete strippedNode.marks;
44
+ }
45
+ }
46
+ if (hasContentChanged && childContent) {
47
+ strippedNode.content = childContent;
48
+ }
49
+ strippedContent.push(strippedNode);
50
+ });
51
+ return strippedContent !== null && strippedContent !== void 0 ? strippedContent : content;
52
+ };
9
53
  var convertSyncBlockPMNodeToSyncBlockData = exports.convertSyncBlockPMNodeToSyncBlockData = function convertSyncBlockPMNodeToSyncBlockData(node) {
54
+ var content = node.content.toJSON();
10
55
  return {
11
56
  blockInstanceId: node.attrs.localId,
12
- content: node.content.toJSON(),
57
+ content: (0, _platformFeatureFlags.fg)('platform_synced_block_patch_12') ? _stripAnnotationMarksFromJSONContent(content) : content,
13
58
  resourceId: node.attrs.resourceId
14
59
  };
15
60
  };
@@ -1,11 +1,12 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import isEqual from 'lodash/isEqual';
3
3
  import { logException } from '@atlaskit/editor-common/monitoring';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
4
5
  import { SyncBlockError } from '../common/types';
5
6
  import { fetchErrorPayload, fetchSuccessPayload, getSourceInfoErrorPayload, updateReferenceErrorPayload } from '../utils/errorHandling';
6
7
  import { getFetchExperience, getFetchSourceInfoExperience, getSaveReferenceExperience } from '../utils/experienceTracking';
7
8
  import { resolveSyncBlockInstance } from '../utils/resolveSyncBlockInstance';
8
- import { createSyncBlockNode, getSourceProductFromResourceIdSafe } from '../utils/utils';
9
+ import { createSyncBlockNode, getSourceProductFromResourceIdSafe, stripAnnotationMarksFromJSONContent } from '../utils/utils';
9
10
  import { SyncBlockBatchFetcher } from './syncBlockBatchFetcher';
10
11
  import { syncBlockInMemorySessionCache } from './syncBlockInMemorySessionCache';
11
12
  import { SyncBlockProviderFactoryManager } from './syncBlockProviderFactoryManager';
@@ -141,10 +142,27 @@ export class ReferenceSyncBlockStoreManager {
141
142
  const syncBlockNode = createSyncBlockNode('', resourceId);
142
143
  const providerData = (_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 ? void 0 : (_this$dataProvider2$g = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2$g === void 0 ? void 0 : _this$dataProvider2$g.data;
143
144
  if (providerData) {
144
- return providerData;
145
+ return this.stripAnnotationMarksFromReferenceData(providerData);
145
146
  }
146
147
  return this.getFromSessionCache(resourceId);
147
148
  }
149
+ stripAnnotationMarksFromReferenceData(syncBlock) {
150
+ var _syncBlock$data;
151
+ if (!fg('platform_synced_block_patch_12') || !((_syncBlock$data = syncBlock.data) !== null && _syncBlock$data !== void 0 && _syncBlock$data.content)) {
152
+ return syncBlock;
153
+ }
154
+ const content = stripAnnotationMarksFromJSONContent(syncBlock.data.content);
155
+ if (content === syncBlock.data.content) {
156
+ return syncBlock;
157
+ }
158
+ return {
159
+ ...syncBlock,
160
+ data: {
161
+ ...syncBlock.data,
162
+ content
163
+ }
164
+ };
165
+ }
148
166
  updateSessionCache(resourceId) {
149
167
  const latestData = this.getFromCache(resourceId);
150
168
  if (latestData) {
@@ -157,7 +175,7 @@ export class ReferenceSyncBlockStoreManager {
157
175
  if (!raw) {
158
176
  return undefined;
159
177
  }
160
- return JSON.parse(raw);
178
+ return this.stripAnnotationMarksFromReferenceData(JSON.parse(raw));
161
179
  } catch (error) {
162
180
  logException(error, {
163
181
  location: 'editor-synced-block-provider/referenceSyncBlockStoreManager/getFromSessionCache'
@@ -470,18 +488,19 @@ export class ReferenceSyncBlockStoreManager {
470
488
  }
471
489
  }
472
490
  updateCache(syncBlock) {
491
+ const sanitizedSyncBlock = this.stripAnnotationMarksFromReferenceData(syncBlock);
473
492
  const {
474
493
  resourceId
475
- } = syncBlock;
494
+ } = sanitizedSyncBlock;
476
495
  if (resourceId) {
477
496
  var _this$dataProvider3;
478
497
  (_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 ? void 0 : _this$dataProvider3.updateCache({
479
- [resourceId]: syncBlock
498
+ [resourceId]: sanitizedSyncBlock
480
499
  }, {
481
500
  strategy: 'merge',
482
501
  source: 'network'
483
502
  });
484
- this._subscriptionManager.notifySubscriptionCallbacks(resourceId, syncBlock);
503
+ this._subscriptionManager.notifySubscriptionCallbacks(resourceId, sanitizedSyncBlock);
485
504
  this.updateSessionCache(resourceId);
486
505
  }
487
506
  }
@@ -542,12 +561,12 @@ export class ReferenceSyncBlockStoreManager {
542
561
  * @returns
543
562
  */
544
563
  getSyncBlockURL(resourceId) {
545
- var _syncBlock$data;
564
+ var _syncBlock$data2;
546
565
  const syncBlock = this.getFromCache(resourceId);
547
566
  if (!syncBlock) {
548
567
  return undefined;
549
568
  }
550
- return (_syncBlock$data = syncBlock.data) === null || _syncBlock$data === void 0 ? void 0 : _syncBlock$data.sourceURL;
569
+ return (_syncBlock$data2 = syncBlock.data) === null || _syncBlock$data2 === void 0 ? void 0 : _syncBlock$data2.sourceURL;
551
570
  }
552
571
  getProviderFactory(resourceId) {
553
572
  return this._providerFactoryManager.getProviderFactory(resourceId);
@@ -1,9 +1,51 @@
1
1
  /* eslint-disable require-unicode-regexp */
2
2
 
3
+ import { fg } from '@atlaskit/platform-feature-flags';
4
+ export const stripAnnotationMarksFromJSONContent = content => {
5
+ var _strippedContent3;
6
+ let strippedContent;
7
+ content.forEach((contentNode, index) => {
8
+ var _contentNode$marks;
9
+ if (!contentNode) {
10
+ var _strippedContent;
11
+ (_strippedContent = strippedContent) === null || _strippedContent === void 0 ? void 0 : _strippedContent.push(contentNode);
12
+ return;
13
+ }
14
+ const hasAnnotationMark = (_contentNode$marks = contentNode.marks) === null || _contentNode$marks === void 0 ? void 0 : _contentNode$marks.some(mark => mark.type === 'annotation');
15
+ const childContent = contentNode.content ? stripAnnotationMarksFromJSONContent(contentNode.content) : undefined;
16
+ const hasContentChanged = childContent !== undefined && childContent !== contentNode.content;
17
+ if (!hasAnnotationMark && !hasContentChanged) {
18
+ var _strippedContent2;
19
+ (_strippedContent2 = strippedContent) === null || _strippedContent2 === void 0 ? void 0 : _strippedContent2.push(contentNode);
20
+ return;
21
+ }
22
+ if (!strippedContent) {
23
+ strippedContent = content.slice(0, index);
24
+ }
25
+ const strippedNode = {
26
+ ...contentNode
27
+ };
28
+ if (hasAnnotationMark) {
29
+ var _contentNode$marks2;
30
+ const marks = (_contentNode$marks2 = contentNode.marks) === null || _contentNode$marks2 === void 0 ? void 0 : _contentNode$marks2.filter(mark => mark.type !== 'annotation');
31
+ if (marks && marks.length > 0) {
32
+ strippedNode.marks = marks;
33
+ } else {
34
+ delete strippedNode.marks;
35
+ }
36
+ }
37
+ if (hasContentChanged && childContent) {
38
+ strippedNode.content = childContent;
39
+ }
40
+ strippedContent.push(strippedNode);
41
+ });
42
+ return (_strippedContent3 = strippedContent) !== null && _strippedContent3 !== void 0 ? _strippedContent3 : content;
43
+ };
3
44
  export const convertSyncBlockPMNodeToSyncBlockData = node => {
45
+ const content = node.content.toJSON();
4
46
  return {
5
47
  blockInstanceId: node.attrs.localId,
6
- content: node.content.toJSON(),
48
+ content: fg('platform_synced_block_patch_12') ? stripAnnotationMarksFromJSONContent(content) : content,
7
49
  resourceId: node.attrs.resourceId
8
50
  };
9
51
  };
@@ -6,16 +6,17 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
6
  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; } } }; }
7
7
  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; } }
8
8
  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; }
9
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
9
10
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
11
  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; }
11
- import _regeneratorRuntime from "@babel/runtime/regenerator";
12
12
  import isEqual from 'lodash/isEqual';
13
13
  import { logException } from '@atlaskit/editor-common/monitoring';
14
+ import { fg } from '@atlaskit/platform-feature-flags';
14
15
  import { SyncBlockError } from '../common/types';
15
16
  import { fetchErrorPayload, fetchSuccessPayload, getSourceInfoErrorPayload, updateReferenceErrorPayload } from '../utils/errorHandling';
16
17
  import { getFetchExperience, getFetchSourceInfoExperience, getSaveReferenceExperience } from '../utils/experienceTracking';
17
18
  import { resolveSyncBlockInstance } from '../utils/resolveSyncBlockInstance';
18
- import { createSyncBlockNode, getSourceProductFromResourceIdSafe } from '../utils/utils';
19
+ import { createSyncBlockNode, getSourceProductFromResourceIdSafe, stripAnnotationMarksFromJSONContent } from '../utils/utils';
19
20
  import { SyncBlockBatchFetcher } from './syncBlockBatchFetcher';
20
21
  import { syncBlockInMemorySessionCache } from './syncBlockInMemorySessionCache';
21
22
  import { SyncBlockProviderFactoryManager } from './syncBlockProviderFactoryManager';
@@ -203,10 +204,27 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
203
204
  var syncBlockNode = createSyncBlockNode('', resourceId);
204
205
  var providerData = (_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 || (_this$dataProvider2 = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2 === void 0 ? void 0 : _this$dataProvider2.data;
205
206
  if (providerData) {
206
- return providerData;
207
+ return this.stripAnnotationMarksFromReferenceData(providerData);
207
208
  }
208
209
  return this.getFromSessionCache(resourceId);
209
210
  }
211
+ }, {
212
+ key: "stripAnnotationMarksFromReferenceData",
213
+ value: function stripAnnotationMarksFromReferenceData(syncBlock) {
214
+ var _syncBlock$data;
215
+ if (!fg('platform_synced_block_patch_12') || !((_syncBlock$data = syncBlock.data) !== null && _syncBlock$data !== void 0 && _syncBlock$data.content)) {
216
+ return syncBlock;
217
+ }
218
+ var content = stripAnnotationMarksFromJSONContent(syncBlock.data.content);
219
+ if (content === syncBlock.data.content) {
220
+ return syncBlock;
221
+ }
222
+ return _objectSpread(_objectSpread({}, syncBlock), {}, {
223
+ data: _objectSpread(_objectSpread({}, syncBlock.data), {}, {
224
+ content: content
225
+ })
226
+ });
227
+ }
210
228
  }, {
211
229
  key: "updateSessionCache",
212
230
  value: function updateSessionCache(resourceId) {
@@ -223,7 +241,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
223
241
  if (!raw) {
224
242
  return undefined;
225
243
  }
226
- return JSON.parse(raw);
244
+ return this.stripAnnotationMarksFromReferenceData(JSON.parse(raw));
227
245
  } catch (error) {
228
246
  logException(error, {
229
247
  location: 'editor-synced-block-provider/referenceSyncBlockStoreManager/getFromSessionCache'
@@ -594,14 +612,15 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
594
612
  }, {
595
613
  key: "updateCache",
596
614
  value: function updateCache(syncBlock) {
597
- var resourceId = syncBlock.resourceId;
615
+ var sanitizedSyncBlock = this.stripAnnotationMarksFromReferenceData(syncBlock);
616
+ var resourceId = sanitizedSyncBlock.resourceId;
598
617
  if (resourceId) {
599
618
  var _this$dataProvider3;
600
- (_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 || _this$dataProvider3.updateCache(_defineProperty({}, resourceId, syncBlock), {
619
+ (_this$dataProvider3 = this.dataProvider) === null || _this$dataProvider3 === void 0 || _this$dataProvider3.updateCache(_defineProperty({}, resourceId, sanitizedSyncBlock), {
601
620
  strategy: 'merge',
602
621
  source: 'network'
603
622
  });
604
- this._subscriptionManager.notifySubscriptionCallbacks(resourceId, syncBlock);
623
+ this._subscriptionManager.notifySubscriptionCallbacks(resourceId, sanitizedSyncBlock);
605
624
  this.updateSessionCache(resourceId);
606
625
  }
607
626
  }
@@ -678,12 +697,12 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
678
697
  }, {
679
698
  key: "getSyncBlockURL",
680
699
  value: function getSyncBlockURL(resourceId) {
681
- var _syncBlock$data;
700
+ var _syncBlock$data2;
682
701
  var syncBlock = this.getFromCache(resourceId);
683
702
  if (!syncBlock) {
684
703
  return undefined;
685
704
  }
686
- return (_syncBlock$data = syncBlock.data) === null || _syncBlock$data === void 0 ? void 0 : _syncBlock$data.sourceURL;
705
+ return (_syncBlock$data2 = syncBlock.data) === null || _syncBlock$data2 === void 0 ? void 0 : _syncBlock$data2.sourceURL;
687
706
  }
688
707
  }, {
689
708
  key: "getProviderFactory",
@@ -1,9 +1,56 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
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; }
1
4
  /* eslint-disable require-unicode-regexp */
2
5
 
6
+ import { fg } from '@atlaskit/platform-feature-flags';
7
+ var _stripAnnotationMarksFromJSONContent = function stripAnnotationMarksFromJSONContent(content) {
8
+ var strippedContent;
9
+ content.forEach(function (contentNode, index) {
10
+ var _contentNode$marks;
11
+ if (!contentNode) {
12
+ var _strippedContent;
13
+ (_strippedContent = strippedContent) === null || _strippedContent === void 0 || _strippedContent.push(contentNode);
14
+ return;
15
+ }
16
+ var hasAnnotationMark = (_contentNode$marks = contentNode.marks) === null || _contentNode$marks === void 0 ? void 0 : _contentNode$marks.some(function (mark) {
17
+ return mark.type === 'annotation';
18
+ });
19
+ var childContent = contentNode.content ? _stripAnnotationMarksFromJSONContent(contentNode.content) : undefined;
20
+ var hasContentChanged = childContent !== undefined && childContent !== contentNode.content;
21
+ if (!hasAnnotationMark && !hasContentChanged) {
22
+ var _strippedContent2;
23
+ (_strippedContent2 = strippedContent) === null || _strippedContent2 === void 0 || _strippedContent2.push(contentNode);
24
+ return;
25
+ }
26
+ if (!strippedContent) {
27
+ strippedContent = content.slice(0, index);
28
+ }
29
+ var strippedNode = _objectSpread({}, contentNode);
30
+ if (hasAnnotationMark) {
31
+ var _contentNode$marks2;
32
+ var marks = (_contentNode$marks2 = contentNode.marks) === null || _contentNode$marks2 === void 0 ? void 0 : _contentNode$marks2.filter(function (mark) {
33
+ return mark.type !== 'annotation';
34
+ });
35
+ if (marks && marks.length > 0) {
36
+ strippedNode.marks = marks;
37
+ } else {
38
+ delete strippedNode.marks;
39
+ }
40
+ }
41
+ if (hasContentChanged && childContent) {
42
+ strippedNode.content = childContent;
43
+ }
44
+ strippedContent.push(strippedNode);
45
+ });
46
+ return strippedContent !== null && strippedContent !== void 0 ? strippedContent : content;
47
+ };
48
+ export { _stripAnnotationMarksFromJSONContent as stripAnnotationMarksFromJSONContent };
3
49
  export var convertSyncBlockPMNodeToSyncBlockData = function convertSyncBlockPMNodeToSyncBlockData(node) {
50
+ var content = node.content.toJSON();
4
51
  return {
5
52
  blockInstanceId: node.attrs.localId,
6
- content: node.content.toJSON(),
53
+ content: fg('platform_synced_block_patch_12') ? _stripAnnotationMarksFromJSONContent(content) : content,
7
54
  resourceId: node.attrs.resourceId
8
55
  };
9
56
  };
@@ -65,6 +65,7 @@ export declare class ReferenceSyncBlockStoreManager {
65
65
  generateResourceIdForReference(sourceId: ResourceId): ResourceId;
66
66
  updateFireAnalyticsEvent(fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): void;
67
67
  getInitialSyncBlockData(resourceId: ResourceId): SyncBlockInstance | undefined;
68
+ private stripAnnotationMarksFromReferenceData;
68
69
  private updateSessionCache;
69
70
  private getFromSessionCache;
70
71
  fetchSyncBlockSourceInfoBySourceAri(sourceAri: string, hasAccess?: boolean): Promise<SyncBlockSourceInfo | undefined>;
@@ -1,6 +1,7 @@
1
- import type { JSONNode } from '@atlaskit/editor-json-transformer';
1
+ import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
2
2
  import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
3
  import type { SyncBlockData, BlockInstanceId, ResourceId, SyncBlockNode, SyncBlockProduct } from '../common/types';
4
+ export declare const stripAnnotationMarksFromJSONContent: <T extends JSONNode | undefined>(content: T[]) => T[];
4
5
  export declare const convertSyncBlockPMNodeToSyncBlockData: (node: PMNode) => SyncBlockData;
5
6
  export declare const createSyncBlockNode: (localId: BlockInstanceId, resourceId: ResourceId) => SyncBlockNode;
6
7
  export declare const convertSyncBlockJSONNodeToSyncBlockNode: (node: JSONNode) => SyncBlockNode | undefined;
@@ -65,6 +65,7 @@ export declare class ReferenceSyncBlockStoreManager {
65
65
  generateResourceIdForReference(sourceId: ResourceId): ResourceId;
66
66
  updateFireAnalyticsEvent(fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): void;
67
67
  getInitialSyncBlockData(resourceId: ResourceId): SyncBlockInstance | undefined;
68
+ private stripAnnotationMarksFromReferenceData;
68
69
  private updateSessionCache;
69
70
  private getFromSessionCache;
70
71
  fetchSyncBlockSourceInfoBySourceAri(sourceAri: string, hasAccess?: boolean): Promise<SyncBlockSourceInfo | undefined>;
@@ -1,6 +1,7 @@
1
- import type { JSONNode } from '@atlaskit/editor-json-transformer';
1
+ import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
2
2
  import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
3
  import type { SyncBlockData, BlockInstanceId, ResourceId, SyncBlockNode, SyncBlockProduct } from '../common/types';
4
+ export declare const stripAnnotationMarksFromJSONContent: <T extends JSONNode | undefined>(content: T[]) => T[];
4
5
  export declare const convertSyncBlockPMNodeToSyncBlockData: (node: PMNode) => SyncBlockData;
5
6
  export declare const createSyncBlockNode: (localId: BlockInstanceId, resourceId: ResourceId) => SyncBlockNode;
6
7
  export declare const convertSyncBlockJSONNodeToSyncBlockNode: (node: JSONNode) => SyncBlockNode | undefined;
package/package.json CHANGED
@@ -38,7 +38,7 @@
38
38
  "uuid": "^3.1.0"
39
39
  },
40
40
  "peerDependencies": {
41
- "@atlaskit/editor-common": "^114.36.0",
41
+ "@atlaskit/editor-common": "^114.37.0",
42
42
  "react": "^18.2.0"
43
43
  },
44
44
  "devDependencies": {
@@ -81,7 +81,7 @@
81
81
  }
82
82
  },
83
83
  "name": "@atlaskit/editor-synced-block-provider",
84
- "version": "6.6.5",
84
+ "version": "6.6.6",
85
85
  "description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
86
86
  "author": "Atlassian Pty Ltd",
87
87
  "license": "Apache-2.0",