@atlaskit/editor-synced-block-provider 6.4.3 → 6.5.0

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,13 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 6.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`6905b24d57293`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6905b24d57293) -
8
+ Add deep import subpath exports for SSR preload tree-shaking (providers/types,
9
+ providers/block-service/blockServiceAPI, clients/confluence/ari, utils/resourceId, common/types)
10
+
3
11
  ## 6.4.3
4
12
 
5
13
  ### Patch Changes
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/editor-synced-block-provider/clients/confluence/ari",
3
+ "main": "../../../dist/cjs/clients/confluence/ari.js",
4
+ "module": "../../../dist/esm/clients/confluence/ari.js",
5
+ "module:es2019": "../../../dist/es2019/clients/confluence/ari.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../../../dist/types/clients/confluence/ari.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../../../dist/types-ts4.5/clients/confluence/ari.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/editor-synced-block-provider/common/types",
3
+ "main": "../../dist/cjs/common/types.js",
4
+ "module": "../../dist/esm/common/types.js",
5
+ "module:es2019": "../../dist/es2019/common/types.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../../dist/types/common/types.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../../dist/types-ts4.5/common/types.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -16,11 +17,11 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
17
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
17
18
  var _ari = require("../../clients/block-service/ari");
18
19
  var _blockService = require("../../clients/block-service/blockService");
19
- var _blockSubscription = require("../../clients/block-service/blockSubscription");
20
20
  var _types = require("../../common/types");
21
21
  var _errorHandling = require("../../utils/errorHandling");
22
22
  var _resourceId2 = require("../../utils/resourceId");
23
23
  var _utils = require("../../utils/utils");
24
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
25
  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; }
25
26
  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; }
26
27
  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; } } }; }
@@ -798,24 +799,51 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
798
799
  cloudId: this.cloudId,
799
800
  resourceId: resourceId
800
801
  });
801
- return (0, _blockSubscription.subscribeToBlockUpdates)(blockAri, function (parsedData) {
802
- // Convert ParsedBlockSubscriptionData to SyncBlockInstance
803
- var syncBlockInstance = {
804
- data: {
805
- content: parsedData.content,
806
- resourceId: parsedData.blockAri,
807
- blockInstanceId: parsedData.blockInstanceId,
808
- sourceAri: parsedData.sourceAri,
809
- product: parsedData.product,
810
- createdAt: parsedData.createdAt,
811
- contentUpdatedAt: parsedData.contentUpdatedAt,
812
- createdBy: parsedData.createdBy,
813
- status: parsedData.status
814
- },
815
- resourceId: parsedData.resourceId
816
- };
817
- onUpdate(syncBlockInstance);
818
- }, onError);
802
+
803
+ // Track the real unsubscribe fn once the dynamic import resolves
804
+ var unsubscribe;
805
+ var cancelled = false;
806
+
807
+ // Dynamically import blockSubscription so that graphql-ws is NOT pulled
808
+ // into the SSR/preload bundle that imports this subpath.
809
+ void Promise.resolve().then(function () {
810
+ return _interopRequireWildcard(require('../../clients/block-service/blockSubscription'));
811
+ }).then(function (_ref6) {
812
+ var subscribeToBlockUpdatesWS = _ref6.subscribeToBlockUpdates;
813
+ if (cancelled) {
814
+ return;
815
+ }
816
+ unsubscribe = subscribeToBlockUpdatesWS(blockAri, function (parsedData) {
817
+ // Convert ParsedBlockSubscriptionData to SyncBlockInstance
818
+ var syncBlockInstance = {
819
+ data: {
820
+ content: parsedData.content,
821
+ resourceId: parsedData.blockAri,
822
+ blockInstanceId: parsedData.blockInstanceId,
823
+ sourceAri: parsedData.sourceAri,
824
+ product: parsedData.product,
825
+ createdAt: parsedData.createdAt,
826
+ contentUpdatedAt: parsedData.contentUpdatedAt,
827
+ createdBy: parsedData.createdBy,
828
+ status: parsedData.status
829
+ },
830
+ resourceId: parsedData.resourceId
831
+ };
832
+ onUpdate(syncBlockInstance);
833
+ }, onError);
834
+ }).catch(function (err) {
835
+ if (cancelled) {
836
+ return;
837
+ }
838
+ onError === null || onError === void 0 || onError(err instanceof Error ? err : new Error('Failed to load subscription module'));
839
+ });
840
+
841
+ // Return an unsubscribe fn that works whether the import has resolved or not
842
+ return function () {
843
+ var _unsubscribe;
844
+ cancelled = true;
845
+ (_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 || _unsubscribe();
846
+ };
819
847
  }
820
848
  }]);
821
849
  }();
@@ -823,12 +851,12 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
823
851
  * ADFWriteProvider implementation that writes synced block data to Block Service API
824
852
  */
825
853
  var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
826
- function BlockServiceADFWriteProvider(_ref6) {
827
- var cloudId = _ref6.cloudId,
828
- parentAri = _ref6.parentAri,
829
- parentId = _ref6.parentId,
830
- product = _ref6.product,
831
- getVersion = _ref6.getVersion;
854
+ function BlockServiceADFWriteProvider(_ref7) {
855
+ var cloudId = _ref7.cloudId,
856
+ parentAri = _ref7.parentAri,
857
+ parentId = _ref7.parentId,
858
+ product = _ref7.product,
859
+ getVersion = _ref7.getVersion;
832
860
  (0, _classCallCheck2.default)(this, BlockServiceADFWriteProvider);
833
861
  this.cloudId = cloudId;
834
862
  this.parentAri = parentAri;
@@ -1083,12 +1111,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
1083
1111
  }, {
1084
1112
  key: "deleteOrphanBlock",
1085
1113
  value: function () {
1086
- var _deleteOrphanBlock = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee0(_ref7) {
1114
+ var _deleteOrphanBlock = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee0(_ref8) {
1087
1115
  var blockAri, resourceId, parentAri, deleteReason, stepVersion;
1088
1116
  return _regenerator.default.wrap(function _callee0$(_context1) {
1089
1117
  while (1) switch (_context1.prev = _context1.next) {
1090
1118
  case 0:
1091
- blockAri = _ref7.blockAri, resourceId = _ref7.resourceId, parentAri = _ref7.parentAri, deleteReason = _ref7.deleteReason;
1119
+ blockAri = _ref8.blockAri, resourceId = _ref8.resourceId, parentAri = _ref8.parentAri, deleteReason = _ref8.deleteReason;
1092
1120
  _context1.prev = 1;
1093
1121
  if (!this.getVersion) {
1094
1122
  _context1.next = 8;
@@ -1439,12 +1467,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
1439
1467
  }()
1440
1468
  }]);
1441
1469
  }();
1442
- var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_ref8) {
1443
- var cloudId = _ref8.cloudId,
1444
- parentAri = _ref8.parentAri,
1445
- parentId = _ref8.parentId,
1446
- product = _ref8.product,
1447
- getVersion = _ref8.getVersion;
1470
+ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_ref9) {
1471
+ var cloudId = _ref9.cloudId,
1472
+ parentAri = _ref9.parentAri,
1473
+ parentId = _ref9.parentId,
1474
+ product = _ref9.product,
1475
+ getVersion = _ref9.getVersion;
1448
1476
  return {
1449
1477
  fetchProvider: new BlockServiceADFFetchProvider({
1450
1478
  cloudId: cloudId,
@@ -1459,12 +1487,12 @@ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_re
1459
1487
  })
1460
1488
  };
1461
1489
  };
1462
- var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref9) {
1463
- var cloudId = _ref9.cloudId,
1464
- parentAri = _ref9.parentAri,
1465
- parentId = _ref9.parentId,
1466
- product = _ref9.product,
1467
- getVersion = _ref9.getVersion;
1490
+ var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref0) {
1491
+ var cloudId = _ref0.cloudId,
1492
+ parentAri = _ref0.parentAri,
1493
+ parentId = _ref0.parentId,
1494
+ product = _ref0.product,
1495
+ getVersion = _ref0.getVersion;
1468
1496
  return (0, _react.useMemo)(function () {
1469
1497
  return createBlockServiceAPIProviders({
1470
1498
  cloudId: cloudId,
@@ -1475,9 +1503,9 @@ var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProv
1475
1503
  });
1476
1504
  }, [cloudId, parentAri, parentId, product, getVersion]);
1477
1505
  };
1478
- var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref0) {
1479
- var cloudId = _ref0.cloudId,
1480
- parentAri = _ref0.parentAri;
1506
+ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref1) {
1507
+ var cloudId = _ref1.cloudId,
1508
+ parentAri = _ref1.parentAri;
1481
1509
  return {
1482
1510
  fetchProvider: new BlockServiceADFFetchProvider({
1483
1511
  cloudId: cloudId,
@@ -1490,9 +1518,9 @@ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnl
1490
1518
  /**
1491
1519
  * If the parentAri is not a valid ARI, pass in an empty string.
1492
1520
  */
1493
- var useMemoizedBlockServiceFetchOnlyAPIProvider = exports.useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref1) {
1494
- var cloudId = _ref1.cloudId,
1495
- parentAri = _ref1.parentAri;
1521
+ var useMemoizedBlockServiceFetchOnlyAPIProvider = exports.useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref10) {
1522
+ var cloudId = _ref10.cloudId,
1523
+ parentAri = _ref10.parentAri;
1496
1524
  return (0, _react.useMemo)(function () {
1497
1525
  return createBlockServiceFetchOnlyAPIProvider({
1498
1526
  cloudId: cloudId,
@@ -291,6 +291,18 @@ var SourceSyncBlockStoreManager = exports.SourceSyncBlockStoreManager = /*#__PUR
291
291
  return this.creationCompletionCallbacks.has(resourceId);
292
292
  }
293
293
 
294
+ /**
295
+ * Returns `true` when at least one sync block is waiting for its backend
296
+ * creation call to complete. Used as a cheap pre-check in the decoration
297
+ * rebuild path to avoid a full `doc.descendants()` walk when no creations
298
+ * are in flight (see EDITOR-6930).
299
+ */
300
+ }, {
301
+ key: "hasPendingCreations",
302
+ value: function hasPendingCreations() {
303
+ return this.creationCompletionCallbacks.size > 0;
304
+ }
305
+
294
306
  /**
295
307
  * Fires callback to insert node (if creation is successful) and clears pending creation data
296
308
  * @param success
@@ -4,7 +4,6 @@ import { fg } from '@atlaskit/platform-feature-flags';
4
4
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
5
5
  import { generateBlockAri, generateBlockAriFromReference } from '../../clients/block-service/ari';
6
6
  import { batchRetrieveSyncedBlocks, BlockError, BlockNotFoundError, BlockTimeoutError, createSyncedBlock, deleteSyncedBlock, getReferenceSyncedBlocks, getReferenceSyncedBlocksByBlockAri, getSyncedBlockContent, updateReferenceSyncedBlockOnDocument, updateSyncedBlock, updateSyncedBlocks } from '../../clients/block-service/blockService';
7
- import { subscribeToBlockUpdates as subscribeToBlockUpdatesWS } from '../../clients/block-service/blockSubscription';
8
7
  import { SyncBlockError } from '../../common/types';
9
8
  import { stringifyError } from '../../utils/errorHandling';
10
9
  import { createResourceIdForReference } from '../../utils/resourceId';
@@ -540,24 +539,50 @@ class BlockServiceADFFetchProvider {
540
539
  cloudId: this.cloudId,
541
540
  resourceId
542
541
  });
543
- return subscribeToBlockUpdatesWS(blockAri, parsedData => {
544
- // Convert ParsedBlockSubscriptionData to SyncBlockInstance
545
- const syncBlockInstance = {
546
- data: {
547
- content: parsedData.content,
548
- resourceId: parsedData.blockAri,
549
- blockInstanceId: parsedData.blockInstanceId,
550
- sourceAri: parsedData.sourceAri,
551
- product: parsedData.product,
552
- createdAt: parsedData.createdAt,
553
- contentUpdatedAt: parsedData.contentUpdatedAt,
554
- createdBy: parsedData.createdBy,
555
- status: parsedData.status
556
- },
557
- resourceId: parsedData.resourceId
558
- };
559
- onUpdate(syncBlockInstance);
560
- }, onError);
542
+
543
+ // Track the real unsubscribe fn once the dynamic import resolves
544
+ let unsubscribe;
545
+ let cancelled = false;
546
+
547
+ // Dynamically import blockSubscription so that graphql-ws is NOT pulled
548
+ // into the SSR/preload bundle that imports this subpath.
549
+ void import('../../clients/block-service/blockSubscription').then(({
550
+ subscribeToBlockUpdates: subscribeToBlockUpdatesWS
551
+ }) => {
552
+ if (cancelled) {
553
+ return;
554
+ }
555
+ unsubscribe = subscribeToBlockUpdatesWS(blockAri, parsedData => {
556
+ // Convert ParsedBlockSubscriptionData to SyncBlockInstance
557
+ const syncBlockInstance = {
558
+ data: {
559
+ content: parsedData.content,
560
+ resourceId: parsedData.blockAri,
561
+ blockInstanceId: parsedData.blockInstanceId,
562
+ sourceAri: parsedData.sourceAri,
563
+ product: parsedData.product,
564
+ createdAt: parsedData.createdAt,
565
+ contentUpdatedAt: parsedData.contentUpdatedAt,
566
+ createdBy: parsedData.createdBy,
567
+ status: parsedData.status
568
+ },
569
+ resourceId: parsedData.resourceId
570
+ };
571
+ onUpdate(syncBlockInstance);
572
+ }, onError);
573
+ }).catch(err => {
574
+ if (cancelled) {
575
+ return;
576
+ }
577
+ onError === null || onError === void 0 ? void 0 : onError(err instanceof Error ? err : new Error('Failed to load subscription module'));
578
+ });
579
+
580
+ // Return an unsubscribe fn that works whether the import has resolved or not
581
+ return () => {
582
+ var _unsubscribe;
583
+ cancelled = true;
584
+ (_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 ? void 0 : _unsubscribe();
585
+ };
561
586
  }
562
587
  }
563
588
  /**
@@ -227,6 +227,16 @@ export class SourceSyncBlockStoreManager {
227
227
  return this.creationCompletionCallbacks.has(resourceId);
228
228
  }
229
229
 
230
+ /**
231
+ * Returns `true` when at least one sync block is waiting for its backend
232
+ * creation call to complete. Used as a cheap pre-check in the decoration
233
+ * rebuild path to avoid a full `doc.descendants()` walk when no creations
234
+ * are in flight (see EDITOR-6930).
235
+ */
236
+ hasPendingCreations() {
237
+ return this.creationCompletionCallbacks.size > 0;
238
+ }
239
+
230
240
  /**
231
241
  * Fires callback to insert node (if creation is successful) and clears pending creation data
232
242
  * @param success
@@ -15,7 +15,6 @@ import { fg } from '@atlaskit/platform-feature-flags';
15
15
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
16
16
  import { generateBlockAri as _generateBlockAri, generateBlockAriFromReference } from '../../clients/block-service/ari';
17
17
  import { batchRetrieveSyncedBlocks, BlockError, BlockNotFoundError, BlockTimeoutError, createSyncedBlock, deleteSyncedBlock, getReferenceSyncedBlocks, getReferenceSyncedBlocksByBlockAri, getSyncedBlockContent, updateReferenceSyncedBlockOnDocument, updateSyncedBlock, updateSyncedBlocks } from '../../clients/block-service/blockService';
18
- import { subscribeToBlockUpdates as subscribeToBlockUpdatesWS } from '../../clients/block-service/blockSubscription';
19
18
  import { SyncBlockError } from '../../common/types';
20
19
  import { stringifyError } from '../../utils/errorHandling';
21
20
  import { createResourceIdForReference } from '../../utils/resourceId';
@@ -793,24 +792,49 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
793
792
  cloudId: this.cloudId,
794
793
  resourceId: resourceId
795
794
  });
796
- return subscribeToBlockUpdatesWS(blockAri, function (parsedData) {
797
- // Convert ParsedBlockSubscriptionData to SyncBlockInstance
798
- var syncBlockInstance = {
799
- data: {
800
- content: parsedData.content,
801
- resourceId: parsedData.blockAri,
802
- blockInstanceId: parsedData.blockInstanceId,
803
- sourceAri: parsedData.sourceAri,
804
- product: parsedData.product,
805
- createdAt: parsedData.createdAt,
806
- contentUpdatedAt: parsedData.contentUpdatedAt,
807
- createdBy: parsedData.createdBy,
808
- status: parsedData.status
809
- },
810
- resourceId: parsedData.resourceId
811
- };
812
- onUpdate(syncBlockInstance);
813
- }, onError);
795
+
796
+ // Track the real unsubscribe fn once the dynamic import resolves
797
+ var unsubscribe;
798
+ var cancelled = false;
799
+
800
+ // Dynamically import blockSubscription so that graphql-ws is NOT pulled
801
+ // into the SSR/preload bundle that imports this subpath.
802
+ void import('../../clients/block-service/blockSubscription').then(function (_ref6) {
803
+ var subscribeToBlockUpdatesWS = _ref6.subscribeToBlockUpdates;
804
+ if (cancelled) {
805
+ return;
806
+ }
807
+ unsubscribe = subscribeToBlockUpdatesWS(blockAri, function (parsedData) {
808
+ // Convert ParsedBlockSubscriptionData to SyncBlockInstance
809
+ var syncBlockInstance = {
810
+ data: {
811
+ content: parsedData.content,
812
+ resourceId: parsedData.blockAri,
813
+ blockInstanceId: parsedData.blockInstanceId,
814
+ sourceAri: parsedData.sourceAri,
815
+ product: parsedData.product,
816
+ createdAt: parsedData.createdAt,
817
+ contentUpdatedAt: parsedData.contentUpdatedAt,
818
+ createdBy: parsedData.createdBy,
819
+ status: parsedData.status
820
+ },
821
+ resourceId: parsedData.resourceId
822
+ };
823
+ onUpdate(syncBlockInstance);
824
+ }, onError);
825
+ }).catch(function (err) {
826
+ if (cancelled) {
827
+ return;
828
+ }
829
+ onError === null || onError === void 0 || onError(err instanceof Error ? err : new Error('Failed to load subscription module'));
830
+ });
831
+
832
+ // Return an unsubscribe fn that works whether the import has resolved or not
833
+ return function () {
834
+ var _unsubscribe;
835
+ cancelled = true;
836
+ (_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 || _unsubscribe();
837
+ };
814
838
  }
815
839
  }]);
816
840
  }();
@@ -818,12 +842,12 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
818
842
  * ADFWriteProvider implementation that writes synced block data to Block Service API
819
843
  */
820
844
  var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
821
- function BlockServiceADFWriteProvider(_ref6) {
822
- var cloudId = _ref6.cloudId,
823
- parentAri = _ref6.parentAri,
824
- parentId = _ref6.parentId,
825
- product = _ref6.product,
826
- getVersion = _ref6.getVersion;
845
+ function BlockServiceADFWriteProvider(_ref7) {
846
+ var cloudId = _ref7.cloudId,
847
+ parentAri = _ref7.parentAri,
848
+ parentId = _ref7.parentId,
849
+ product = _ref7.product,
850
+ getVersion = _ref7.getVersion;
827
851
  _classCallCheck(this, BlockServiceADFWriteProvider);
828
852
  this.cloudId = cloudId;
829
853
  this.parentAri = parentAri;
@@ -1078,12 +1102,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
1078
1102
  }, {
1079
1103
  key: "deleteOrphanBlock",
1080
1104
  value: function () {
1081
- var _deleteOrphanBlock = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee0(_ref7) {
1105
+ var _deleteOrphanBlock = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee0(_ref8) {
1082
1106
  var blockAri, resourceId, parentAri, deleteReason, stepVersion;
1083
1107
  return _regeneratorRuntime.wrap(function _callee0$(_context1) {
1084
1108
  while (1) switch (_context1.prev = _context1.next) {
1085
1109
  case 0:
1086
- blockAri = _ref7.blockAri, resourceId = _ref7.resourceId, parentAri = _ref7.parentAri, deleteReason = _ref7.deleteReason;
1110
+ blockAri = _ref8.blockAri, resourceId = _ref8.resourceId, parentAri = _ref8.parentAri, deleteReason = _ref8.deleteReason;
1087
1111
  _context1.prev = 1;
1088
1112
  if (!this.getVersion) {
1089
1113
  _context1.next = 8;
@@ -1434,12 +1458,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
1434
1458
  }()
1435
1459
  }]);
1436
1460
  }();
1437
- var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_ref8) {
1438
- var cloudId = _ref8.cloudId,
1439
- parentAri = _ref8.parentAri,
1440
- parentId = _ref8.parentId,
1441
- product = _ref8.product,
1442
- getVersion = _ref8.getVersion;
1461
+ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_ref9) {
1462
+ var cloudId = _ref9.cloudId,
1463
+ parentAri = _ref9.parentAri,
1464
+ parentId = _ref9.parentId,
1465
+ product = _ref9.product,
1466
+ getVersion = _ref9.getVersion;
1443
1467
  return {
1444
1468
  fetchProvider: new BlockServiceADFFetchProvider({
1445
1469
  cloudId: cloudId,
@@ -1454,12 +1478,12 @@ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_re
1454
1478
  })
1455
1479
  };
1456
1480
  };
1457
- export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref9) {
1458
- var cloudId = _ref9.cloudId,
1459
- parentAri = _ref9.parentAri,
1460
- parentId = _ref9.parentId,
1461
- product = _ref9.product,
1462
- getVersion = _ref9.getVersion;
1481
+ export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref0) {
1482
+ var cloudId = _ref0.cloudId,
1483
+ parentAri = _ref0.parentAri,
1484
+ parentId = _ref0.parentId,
1485
+ product = _ref0.product,
1486
+ getVersion = _ref0.getVersion;
1463
1487
  return useMemo(function () {
1464
1488
  return createBlockServiceAPIProviders({
1465
1489
  cloudId: cloudId,
@@ -1470,9 +1494,9 @@ export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServic
1470
1494
  });
1471
1495
  }, [cloudId, parentAri, parentId, product, getVersion]);
1472
1496
  };
1473
- var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref0) {
1474
- var cloudId = _ref0.cloudId,
1475
- parentAri = _ref0.parentAri;
1497
+ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref1) {
1498
+ var cloudId = _ref1.cloudId,
1499
+ parentAri = _ref1.parentAri;
1476
1500
  return {
1477
1501
  fetchProvider: new BlockServiceADFFetchProvider({
1478
1502
  cloudId: cloudId,
@@ -1485,9 +1509,9 @@ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnl
1485
1509
  /**
1486
1510
  * If the parentAri is not a valid ARI, pass in an empty string.
1487
1511
  */
1488
- export var useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref1) {
1489
- var cloudId = _ref1.cloudId,
1490
- parentAri = _ref1.parentAri;
1512
+ export var useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref10) {
1513
+ var cloudId = _ref10.cloudId,
1514
+ parentAri = _ref10.parentAri;
1491
1515
  return useMemo(function () {
1492
1516
  return createBlockServiceFetchOnlyAPIProvider({
1493
1517
  cloudId: cloudId,
@@ -284,6 +284,18 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
284
284
  return this.creationCompletionCallbacks.has(resourceId);
285
285
  }
286
286
 
287
+ /**
288
+ * Returns `true` when at least one sync block is waiting for its backend
289
+ * creation call to complete. Used as a cheap pre-check in the decoration
290
+ * rebuild path to avoid a full `doc.descendants()` walk when no creations
291
+ * are in flight (see EDITOR-6930).
292
+ */
293
+ }, {
294
+ key: "hasPendingCreations",
295
+ value: function hasPendingCreations() {
296
+ return this.creationCompletionCallbacks.size > 0;
297
+ }
298
+
287
299
  /**
288
300
  * Fires callback to insert node (if creation is successful) and clears pending creation data
289
301
  * @param success
@@ -44,6 +44,13 @@ export declare class SourceSyncBlockStoreManager {
44
44
  flush(): Promise<boolean>;
45
45
  hasUnsavedChanges(): boolean;
46
46
  isPendingCreation(resourceId: ResourceId): boolean;
47
+ /**
48
+ * Returns `true` when at least one sync block is waiting for its backend
49
+ * creation call to complete. Used as a cheap pre-check in the decoration
50
+ * rebuild path to avoid a full `doc.descendants()` walk when no creations
51
+ * are in flight (see EDITOR-6930).
52
+ */
53
+ hasPendingCreations(): boolean;
47
54
  /**
48
55
  * Fires callback to insert node (if creation is successful) and clears pending creation data
49
56
  * @param success
@@ -44,6 +44,13 @@ export declare class SourceSyncBlockStoreManager {
44
44
  flush(): Promise<boolean>;
45
45
  hasUnsavedChanges(): boolean;
46
46
  isPendingCreation(resourceId: ResourceId): boolean;
47
+ /**
48
+ * Returns `true` when at least one sync block is waiting for its backend
49
+ * creation call to complete. Used as a cheap pre-check in the decoration
50
+ * rebuild path to avoid a full `doc.descendants()` walk when no creations
51
+ * are in flight (see EDITOR-6930).
52
+ */
53
+ hasPendingCreations(): boolean;
47
54
  /**
48
55
  * Fires callback to insert node (if creation is successful) and clears pending creation data
49
56
  * @param success
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  "@atlaskit/editor-prosemirror": "^7.3.0",
30
30
  "@atlaskit/node-data-provider": "^11.0.0",
31
31
  "@atlaskit/platform-feature-flags": "^1.1.0",
32
- "@atlaskit/tmp-editor-statsig": "^77.0.0",
32
+ "@atlaskit/tmp-editor-statsig": "^77.3.0",
33
33
  "@babel/runtime": "^7.0.0",
34
34
  "@compiled/react": "^0.20.0",
35
35
  "graphql-ws": "^5.14.2",
@@ -38,7 +38,7 @@
38
38
  "uuid": "^3.1.0"
39
39
  },
40
40
  "peerDependencies": {
41
- "@atlaskit/editor-common": "^114.20.0",
41
+ "@atlaskit/editor-common": "^114.26.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.4.3",
84
+ "version": "6.5.0",
85
85
  "description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
86
86
  "author": "Atlassian Pty Ltd",
87
87
  "license": "Apache-2.0",
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/editor-synced-block-provider/providers/block-service/blockServiceAPI",
3
+ "main": "../../../dist/cjs/providers/block-service/blockServiceAPI.js",
4
+ "module": "../../../dist/esm/providers/block-service/blockServiceAPI.js",
5
+ "module:es2019": "../../../dist/es2019/providers/block-service/blockServiceAPI.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../../../dist/types/providers/block-service/blockServiceAPI.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../../../dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/editor-synced-block-provider/providers/types",
3
+ "main": "../../dist/cjs/providers/types.js",
4
+ "module": "../../dist/esm/providers/types.js",
5
+ "module:es2019": "../../dist/es2019/providers/types.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../../dist/types/providers/types.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../../dist/types-ts4.5/providers/types.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/editor-synced-block-provider/utils/resourceId",
3
+ "main": "../../dist/cjs/utils/resourceId.js",
4
+ "module": "../../dist/esm/utils/resourceId.js",
5
+ "module:es2019": "../../dist/es2019/utils/resourceId.js",
6
+ "sideEffects": [
7
+ "*.compiled.css"
8
+ ],
9
+ "types": "../../dist/types/utils/resourceId.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../../dist/types-ts4.5/utils/resourceId.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }